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() ]; } } }