andWhere([ 'and', ['is_delete' => 0, 'status' => 1, 'store_id' => get_store_id(), 'is_platform' => 0], ['<', 'start_time', time()], ['>', 'end_time', time()], ]); $user = get_user(); $info = $query->one(); $coupons = explode(',', $info->coupon_ids); if($coupons){ $coupon_list = Coupon::find()->where(['in', 'id', $coupons])->andWhere(['is_delete' => 0])->asArray()->all(); $auto_sends = CouponAutoSend::find()->where(['store_id'=>get_store_id(), 'is_delete' => 0, 'status' => 1])->asArray()->all(); if($auto_sends){ foreach($coupon_list as &$item){ $item['auto_send'] = []; foreach ($auto_sends as $k){ $cids = json_decode($k['coupon_id'], true); if(in_array($item['id'], $cids)){ $item['auto_send'] = $k; break; } } } } if($user){ $user_coupons = UserCoupon::find()->where(['store_id'=>get_store_id(), 'user_id' => $user->id])->asArray()->all(); foreach($coupon_list as &$item){ foreach ($user_coupons as $k) { if($item['id'] == $k['coupon_id']){ $item['user_coupon'] = $k; break; } } } } } $goods_ext = ActivityNewUserGoods::findAll(['activity_id' => $info->id, 'is_delete' => 0]); return $this->asJson([ 'code' => 0, 'data' => $info, 'coupon_list' => $coupon_list, 'goods_ext' => $goods_ext, ]); } public function actionNewUserGoodsList() { $activity_id = input_params('activity_id', 0); $goods_ext = ActivityNewUserGoods::findAll(['activity_id' => $activity_id, 'is_delete' => 0]); return [ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'goods_ext' => $goods_ext ?? [], ] ]; } public function actionNewUserGoodsInfo() { $activity_id = input_params('activity_id', 0); $goods_id = input_params('goods_id', 0); $goods_ext = ActivityNewUserGoods::findOne(['activity_id' => $activity_id, 'goods_id' => $goods_id, 'is_delete' => 0]); return [ 'code' => 0, 'msg' => '获取成功', 'data' => [ 'goods_ext' => $goods_ext ?? [], ] ]; } public function actionNewUserConf(){ $conf = Option::get(OptionSetting::ACTIVITY_NEW_USER_CONF, get_store_id(), 'store')['value']; if($conf){ $conf = json_decode($conf, true); }else{ $conf = ['conf' => [ 'head' => ['bg_color' => '#f00', 'bg_img' => ''], 'body' => ['bg_color' => '#f00', 'bg_img' => ''], ]]; } return $this->asJson([ 'code'=>0, 'msg'=>'ok', 'data' => $conf, ]); } public function actionNewUserPushGoods(){ //{'conf':[{'tab':'推荐',goods_ids:[1,2,3],cat_ids:[5,6,7]}]} $conf = Option::get(OptionSetting::ACTIVITY_NEW_USER_GOODS_CONF, get_store_id(), 'store')['value']; if($conf){ $conf = json_decode($conf, true); }else{ $conf = ['conf' => []]; } $gname = input_params('goods_name', ''); if($gname){ $gids = []; $cids = []; foreach($conf['conf'] as $item){ $item['goods_ids'] && $gids = array_merge($gids, (array)$item['goods_ids']); $item['cat_ids'] && $cids = array_merge($cids, (array)$item['cat_ids']); } if($cids){ $cids = \app\models\Cat::getCatListByPids(get_store_id(), $cids); } $query = Goods::find(); $query->andWhere([ 'and', ['is_delete' => 0, 'status' => 1, 'store_id' => get_store_id()], ['like', 'name', $gname], ]); $idwhere = ['or', 0]; if($gids){ $idwhere[] = ['id' => $gids]; } if($cids){ $cquery = (new Query())->select('goods_id')->from(GoodsCat::tableName())->where(['cat_id' => $cids]); $idwhere[] = ['id' => $cquery]; } $query->andWhere($idwhere); $gres = $query->select(['id'])->asArray()->column(); } return $this->asJson([ 'code'=>0, 'msg'=>'ok', 'data' => $conf, 'search_goods_ids' => $gres, 'q' => $query ? $query->createCommand()->getRawSql() : '', ]); } public function actionCutPriceConf(){ $form = new ActivityCutPriceForm(); $form->store_id = get_store_id(); $res = $form->conf(); return $this->asJson($res); } public function actionCutPriceInfo() { $store_id = get_store_id(); $activity_id = intval(input_params('activity_id', 0)); if($activity_id){ $info = ActivityCutPrice::activityAt($activity_id); if(!$info){ return $this->asJson([ 'code' => 1, 'msg' => '活动不存在', ]); } }else{ $alist = ActivityCutPrice::activityAtList($store_id, true); $activity_id = array_column($alist, 'id'); } $gcatQuery = ActivityCutPriceGoods::find()->select('cat_id')->where(['activity_id' => $activity_id, 'is_delete' => 0]); $cat = ActivityCutPriceCat::find()->where(['id' => $gcatQuery, 'is_delete' => 0, 'is_show' => 1]) ->select('id,name')->orderBy('sort DESC')->all(); $banner = ActivityCutPriceBanner::find()->where(['is_delete' => 0]) ->select('id,name,url,pic_url')->orderBy('sort DESC')->all(); return $this->asJson([ 'code' => 0, 'data' => $info, 'cat' => $cat, 'banner' => $banner, ]); } public function actionCutPriceGoodsList() { $store_id = get_store_id(); $activity_id = intval(input_params('activity_id', 0)); if(!$activity_id){ $alist = ActivityCutPrice::activityAtList($store_id, true); $activity_id = array_column($alist, 'id'); } $cat_id = input_params('cat_id', 0); $goods_name = input_params('goods_name', ''); $goods_ext_query = ActivityCutPriceGoods::find()->where(['activity_id' => $activity_id, 'cat_id' => $cat_id, 'is_delete' => 0]); if($goods_name){ $goods_query = Goods::find()->select('id')->where(['like', 'name', $goods_name]); $goods_ext_query->andWhere(['goods_id' => $goods_query]); } $goods_ext = pagination_make($goods_ext_query); $goods_ids = array_column($goods_ext['list'], 'goods_id'); foreach($goods_ext['list'] as &$item){ $userCount = ActivityCutPriceOrder::find()->where(['activity_id' => $item['activity_id'], 'goods_id' => $item['goods_id']])->groupBy(['saas_id'])->count(); $item['userCount'] = $userCount; } $goods_list = Goods::find()->where(['id' => $goods_ids, 'status' => 1, 'is_delete' => 0]) ->select('id,name,cover_pic,price')->all(); $goods_list = ActivityCutPriceForm::sortGoods($goods_ext['list'], $goods_list); return $this->asJson([ 'code' => 0, 'goods_ids' => $goods_ids, 'goods_ext' => $goods_ext, 'goods_list' => $goods_list, // 'q' => $goods_ext_query->createCommand()->getRawSql(), ]); } public function actionCutPriceOrderByGoodsId() { $activity_id = input_params('activity_id', 0); $goods_id = input_params('goods_id', 0); $user_id = get_user_id(); $cutOrder = ActivityCutPriceForm::getHasOrder($user_id, get_saas_user_id(), $activity_id, $goods_id); return $this->asJson([ 'code' => 0, 'cutOrder' => $cutOrder, ]); } public function actionCutPriceOrderCreate() { $activity_id = input_params('activity_id', 0); $goods_id = input_params('goods_id', 0); $mch_list = input_params('mch_list', ''); $form = new ActivityCutPriceForm(); $form->store_id = get_store_id(); $user_id = get_user_id(); $saas_id = get_saas_user_id(); $res = $form->orderCreate($user_id, $saas_id, $activity_id, $goods_id, $mch_list); return $this->asJson($res); } public function actionCutPriceOrderList() { $form = new ActivityCutPriceForm(); $form->store_id = get_store_id(); $form->saas_id = get_saas_user_id(); $form->user_id = get_user_id(); $form->status = input_params('status', -1); $res = $form->orderList(); return $this->asJson($res); } public function actionCutPriceOrderInfo() { $order_id = input_params('order_id', 0); $order = ActivityCutPriceOrder::find()->where(['id' => $order_id, 'is_delete' => 0])->one(); if(!$order){ return $this->asJson([ 'code' => 1, 'msg' => '砍价订单不存在', ]); } //帮砍 $form = new ActivityCutPriceForm(); $form->store_id = get_store_id(); $user_id = get_user_id(); $saas_id = get_saas_user_id(); $logSave = $form->logSave($user_id, $saas_id, $order_id); $log = ActivityCutPriceLog::findOne([ 'order_id' => $order_id, 'saas_id' => $saas_id, ]); $order = ActivityCutPriceOrder::find()->where(['id' => $order_id, 'is_delete' => 0])->one(); $status = ActivityCutPriceOrder::getStatus($order); $activity = ActivityCutPrice::findOne($order['activity_id']); $goods_ext = ActivityCutPriceGoods::findOne(['activity_id' => $order['activity_id'], 'goods_id' => $order['goods_id'], 'is_delete' => 0]); $goods_info = Goods::find()->where(['id' => $order['goods_id']])->one(); $saasUser = SaasUser::find()->where(['id' => $order['saas_id']])->select('name,avatar')->asArray()->one(); $mch_list = json_decode($order['order_mch_list'], true); $attr_id_list = array_column($mch_list[0]['goods_list'][0]['attr'], 'attr_id'); sort($attr_id_list); $attr_list = Attr::find()->alias('a') ->select('ag.id AS attr_group_id,ag.attr_group_name,a.id AS attr_id,a.attr_name') ->leftJoin(['ag' => AttrGroup::tableName()], 'a.attr_group_id=ag.id') ->where(['a.id' => $attr_id_list, 'ag.store_id' => get_store_id(),]) ->asArray()->all(); return $this->asJson([ 'code' => 0, 'msg' => 'success', 'data' => $order, 'status' => $status, 'attr_list' => $attr_list, 'activity' => $activity, 'activity_finished' => $activity->end_time < time() ? 1 : 0, 'goods_ext' => $goods_ext, 'goods_info' => $goods_info, 'saasUser' => $saasUser, 'logSave' => $logSave, 'log' => $log, 'is_self_order' => $user_id == $order->user_id ? 1 : 0, ]); } public function actionCutPriceLogList() { $order_id = input_params('order_id', 0); $query = ActivityCutPriceLog::find()->alias('acp') ->leftJoin(['su' => SaasUser::tableName()], 'acp.saas_id = su.id') ->where(['order_id' => $order_id, 'acp.is_delete' => 0]) ->select('acp.user_id,acp.saas_id,acp.created_at,acp.cut_price,su.name,su.avatar'); $list = $query->asArray()->all(); $sum = array_sum(array_column($list, 'cut_price')); return $this->asJson([ 'code' => 0, 'data' => $list, 'count' => count($list), 'sum' => $sum, // 'q' => $query->createCommand()->getRawSql(), ]); } public function actionOrderRebateSelfOrder() { $form = new ActivityOrderRebateSelfForm(); $form->attributes = all_params(); $form->user_id = get_user_id(); $res = $form->orderList(input_params('pageNo', input_params('page', 1)) == 1); return $this->asJson($res); } public function actionOrderRebateSelfLog() { $form = new ActivityOrderRebateSelfForm(); $form->attributes = all_params(); $form->user_id = get_user_id(); $res = $form->logList(input_params('pageNo', input_params('page', 1)) == 1); return $this->asJson($res); } }