| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1\pt;
- use app\models\Goods;
- use app\models\PtActivity;
- use app\models\PtActivityBanner;
- use app\models\PtActivityGoods;
- use app\models\PtActivityGoodsCat;
- use app\models\PtActivityOrder;
- use app\models\PtActivityOrderDetail;
- use app\models\SaasUser;
- use app\models\User;
- use yii\base\Model;
- class PtActivityForm extends Model
- {
- //店铺id
- public $store_id;
- //分类id
- public $cat_id;
- //商品名称
- public $goods_name;
- public $goods_id;
- public function rules()
- {
- return [
- [['page', 'limit', 'type', 'cat_id'],'integer'],
- [['goods_name', 'goods_id'],'string']
- ];
- }
- //获取商品列表
- public function search() {
- try {
- $store_id = $this->store_id;
- $cat_id = $this->cat_id;
- $goods_name = $this->goods_name;
- $goods_id = $this->goods_id;
- $time = time();
- $pt_activity_id = PtActivity::find()->where(['is_delete' => 0, 'store_id' => $store_id, 'is_platform' => 0])
- ->andWhere(['AND', ['<', 'start_time', $time], ['>', 'end_time', $time]])->select('id')
- ->column();
- if (!empty($pt_activity_id)) {
- $query = PtActivityGoods::find()->alias('pag')->where(['pag.is_delete' => 0, 'g.status' => 1, 'g.is_delete' => 0])
- ->andWhere(['pag.activity_id' => $pt_activity_id])
- ->leftJoin(['g' => Goods::tableName()], 'pag.goods_id = g.id')
- ->select('g.id, g.name, g.cover_pic, g.price, pag.pt_price, pag.use_attr, pag.sale_num, pag.virtual_sales, pag.activity_id, pag.cat_id, pag.attr');
- if ($cat_id && (int)$cat_id !== -1) {
- $query->andWhere(['pag.cat_id' => $cat_id]);
- }
- if ($goods_name) {
- $query->andWhere(['LIKE', 'g.name', $goods_name]);
- }
- if ($goods_id) {
- if(is_string($goods_id)){
- $goods_id = explode(',', $goods_id);
- }
- $query->andWhere(['g.id' => $goods_id]);
- }
- $query->orderBy('pag.created_at desc');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $attr = json_decode($item['attr'], true);
- $attr = array_column($attr, 'pt_price');
- $attr = array_filter($attr);
- $attr = array_merge($attr, [$item['price']]);
- $item['pt_price'] = sprintf('%.2f', min($attr));
- $item['sale_num'] += $item['virtual_sales'];
- $pt_activity = PtActivity::findOne($item['activity_id']);
- $item['party_size'] = $pt_activity->party_size ?? 0;
- $item['party_type'] = $pt_activity->party_type ?? 0;
- $item['party_goods_count'] = $pt_activity->party_goods_count ?? 0;
- $diff_price = sprintf('%.2f', ($item['price'] - $item['pt_price']));
- if (strpos($diff_price, '.00') !== false) {
- $diff_price = str_replace('.00', '', $diff_price);
- }
- $item['diff_price'] = $diff_price;
- }
- }
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'list' => $list['list'] ?? [],
- 'pageNo' => $list['pageNo'] ?? 0,
- 'totalCount' => $list['totalCount'] ?? 0
- ]
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage()
- ];
- }
- }
- public function getBanner() {
- try {
- $store_id = $this->store_id;
- $banner_list = PtActivityBanner::find()->where(['store_id' => $store_id, 'is_delete' => 0, 'status' => 1])
- ->orderBy('sort asc')->select('name, url, cover_pic')->asArray()->all();
- foreach ($banner_list as &$item) {
- $item['url'] = !empty($item['url']) ? json_decode($item['url'], true) : [
- 'name' => '',
- 'link' => '',
- 'open_type' => ''
- ];
- }
- return [
- 'code' => 0,
- 'msg' => "获取成功",
- 'data' => [
- 'list' => $banner_list
- ]
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage()
- ];
- }
- }
- public function getPtGoodsCat() {
- try {
- $store_id = $this->store_id;
- $goods_cat_list = PtActivityGoodsCat::find()->where(['store_id' => $store_id, 'is_delete' => 0, 'status' => 1])
- ->orderBy('created_at desc')->select('id, name')->asArray()->all();
- $goods_cat_list = array_values(array_merge([
- [
- 'id' => '-1',
- 'name' => '全部'
- ],
- ], $goods_cat_list));
- return [
- 'code' => 0,
- 'msg' => "获取成功",
- 'data' => [
- 'list' => $goods_cat_list
- ]
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage()
- ];
- }
- }
- //获取拼团广场数据
- public function getPtSquare() {
- try {
- //开团人员
- $query = PtActivityOrderDetail::find()->alias('pod')->where(['store_id' => get_store_id()])
- ->leftJoin(['po' => PtActivityOrder::tableName()], 'pod.order_id = po.id')
- ->andWhere(['po.pt_number' => 0, 'po.is_pay' => 1, 'po.is_pt_finish' => 0])
- ->select('po.id, pod.goods_id, pod.goods_name, pod.pic, pod.total_price pt_price, po.pay_time, pod.activity_id, po.user_id')
- ->andWhere(['po.pt_number' => 0]);
- $query->orderBy('num desc');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $pt_activity = PtActivity::findOne($item['activity_id']);
- $item['end_time'] = 0;
- if (($item['pay_time'] + ($pt_activity->split_time * 60 * 60)) > time()) {
- $item['end_time'] = ($item['pay_time'] + ($pt_activity->split_time * 60 * 60)) - time();
- }
- $user = User::find()->alias('u')->where(['u.id' => $item['user_id']])
- ->leftJoin(['su' => SaasUser::tableName()], 'su.mobile = u.binding')->select('su.avatar')->asArray()->one();
- $item['avatar'] = $user['avatar'];
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => [
- 'list' => $list['list'] ?? [],
- 'pageNo' => $list['pageNo'] ?? 0,
- 'totalCount' => $list['totalCount'] ?? 0
- ]
- ];
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage()
- ];
- }
- }
- }
|