request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['page', 'receive_status', 'usage_status'], 'integer'], [['name'], 'string'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $where = [ ['=', 'mall_id', $this->mall_id], ['>=', 'status', StatusEnum::DISABLED], ]; // 电子券名称 if (isset($params['name']) && $params['name'] != '' && $params['name'] != null) { $where[] = ['like', 'name', "%{$params['name']}%", false]; } $now_time = time(); // 领取状态 if (isset($params['receive_status']) && $params['receive_status'] != '' && $params['receive_status'] != null) { if ($params['receive_status'] == 0) { // 未开始 $where[] = ['>=', 'receive_begin_time', $now_time]; } else if ($params['receive_status'] == 1) { // 领取中 $where[] = ['<=', 'receive_begin_time', $now_time]; $where[] = ['>=', 'receive_end_time', $now_time]; } else if ($params['receive_status'] == 2) { // 已结束 $where[] = ['<=', 'receive_end_time', $now_time]; } } // 使用状态 if (isset($params['usage_status']) && $params['usage_status'] != '' && $params['usage_status'] != null) { if ($params['usage_status'] == 0) { // 未开始 $where[] = ['>=', 'use_begin_time', $now_time]; } else if ($params['usage_status'] == 1) { // 使用中 $where[] = ['<=', 'use_begin_time', $now_time]; $where[] = ['>=', 'use_end_time', $now_time]; } else if ($params['usage_status'] == 2) { // 已过期 $where[] = ['<=', 'use_end_time', $now_time]; } } $condition = ['where' => $where, 'order' => 'sort desc,id desc']; $page_data = ElectronCoupon::listPage($condition, false, true); $page_data['list'] = is_array($page_data['list']) ? $page_data['list'] : []; // 列表中的等级 $level_array = array_unique(array_filter(array_column($page_data['list'], 'receive_member_level'))); $user_levels = UserLevel::find() ->select('level,name') ->where(['>', 'status', StatusEnum::DISABLED]) ->where(['in', 'level', $level_array]) // 如果把这个条件移到最后,mall_id 就不灵了 。。。。。。 ->where(['=', 'mall_id', $this->mall_id]) ->asArray() ->all(); $level_name_data = array_column($user_levels, 'name', 'level'); foreach ($page_data['list'] as $index => $item) { $item['user_level_name'] = $level_name_data[$item['receive_member_level']] ?? ''; // 剩余数量 = 发行数量 - 领取数量 $item['remain_num'] = (int)$item['amount'] - (int)$item['receive_amount']; // 领取状态 if ($item['receive_begin_time'] > $now_time) { $item['receive_status'] = 0; $item['receive_status_name'] = '未开始'; } else if ($item['receive_begin_time'] <= $now_time && $item['receive_end_time'] >= $now_time) { $item['receive_status'] = 1; $item['receive_status_name'] = '领取中'; } else if ($item['receive_end_time'] <= $now_time) { $item['receive_status'] = 2; $item['receive_status_name'] = '已结束'; } // 使用状态 if ($item['use_begin_time'] > $now_time) { $item['usage_status'] = 0; $item['usage_status_name'] = '未开始'; } else if ($item['use_begin_time'] <= $now_time && $item['use_end_time'] >= $now_time) { $item['usage_status'] = 1; $item['usage_status_name'] = '使用中'; } else if ($item['use_end_time'] <= $now_time) { $item['usage_status'] = 2; $item['usage_status_name'] = '已过期'; } $page_data['list'][$index] = $item; } $this->success('获取成功', compact('page_data')); } else { return $this->render('index'); } } /** * 电子券管理-表格操作 */ public function actionHandle() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id', 'status', 'is_show_in_center'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; if (isset($params['status'])) { $res = ElectronCoupon::changeStatus($this->mall_id, $params['id'], $params['status']); if ($res == false) return $this->error("修改失败: " . ElectronCoupon::getStaticError()); return $this->success("修改成功"); } if (isset($params['is_show_in_center'])) { $res = ElectronCoupon::changeIsShowInCenter($this->mall_id, $params['id'], $params['is_show_in_center']); if ($res == false) return $this->error("修改失败: " . ElectronCoupon::getStaticError()); return $this->success("修改成功"); } return $this->error('请求参数错误'); } } /** * 选择优惠券 * @Author: ltm * @DateTime: 2022/6/27 0017 10:16 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|string|void */ public function actionSelectCoupon() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $params['where'][] = ['mall_id' => $this->mall_id]; $params['where'][] = ['status' => [StatusEnum::ENABLED]]; $params['where'][] = ['>', 'amount', 'receive_amount']; $params['where'][] = ['>', 'use_end_time', time()]; if (!empty($params['keyword'])) $params['where'][] = ['like', 'name', '%' . trim($params['keyword']) . '%', false]; unset($params['keyword']); $params['order'] = 'sort desc,id desc'; $params['select'] = 'id,name,amount,price,receive_amount,receive_begin_time,receive_end_time,use_begin_time,use_end_time,status'; $list = ElectronCoupon::listPage($params); $list['list'] = $list['list'] ?? []; //判断是否过期 foreach ($list['list'] as $k => $v) { $v['use_end_time'] < time() ? $list['list'][$k]['is_failure'] = 1 : $list['list'][$k]['is_failure'] = 0; } return $this->success('操作成功', $list); } } /** * 编辑电子券 */ public function actionEdit() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $electronCoupon = new ElectronCoupon(); $rules = $electronCoupon->rules(); unset($params['receive_amount'], $params['used_amount']); $res = Yii::$app->services->validate->validate($params, $rules); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; if (empty($params['share_expiry'])) $params['share_expiry'] = 0; if (empty($params['give_store_price'])) $params['give_store_price'] = 0; $res = ElectronCoupon::setData($params); if ($res == false) return $this->error("保存失败: " . ElectronCoupon::getStaticError()); return $this->success("保存成功"); } else { return $this->render('edit'); } } /** * 电子券详情 * @return mixed|void */ public function actionInfo() { if (Yii::$app->request->isAjax && Yii::$app->request->isGet) { $params = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($params, [ [['inc_id'], 'integer'] ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $info = ElectronCoupon::getOne([ ['=', 'id', $params['inc_id']], ['=', 'mall_id', $this->mall_id] ], true); return $this->success("保存成功", compact('info')); } } /** * 会员等级 * @return mixed|void */ public function actionUserLevel() { if (Yii::$app->request->isAjax && Yii::$app->request->isGet) { $user_level = UserLevel::find() ->select('level,name') ->where(['mall_id' => $this->mall_id]) ->andWhere(['>=', 'status', StatusEnum::DISABLED]) ->asArray() ->all(); return $this->success("保存成功", compact('user_level')); } } /** * 获取商品独立设置的优惠券设置 * @Author: ltm * @DateTime: 2022/6/28 15:53 * @Copyright: copyright (c) 2021 xuan-e * @return mixed|void */ public function actionGetElectronCoupon() { $params = Yii::$app->request->post(); $data = []; $where[] = ['=', 'mall_id', $this->mall_id]; $where[] = ['=', 'status', StatusEnum::ENABLED]; $where[] = ['=', 'goods_id', $params['goods_id']]; // 获取配置 $result = ElectronCouponGoods::lists(['where' => $where, 'with' => 'coupon', 'order' => 'id desc'], true); //var_dump($result); if (empty($result)) return $this->success('操作成功', $data); // 重新组合数组 $electron_selection = []; foreach ($result as $item) { $data['is_open'] = $item['is_open']; $data['send_type'] = $item['send_type']; $coupon['coupon_id'] = $item['e_coupon_id']; $coupon['num'] = $item['num']; $coupon['name'] = $item['coupon']['name']; $coupon['price'] = $item['coupon']['price']; $coupon['amount'] = $item['coupon']['amount']; $coupon['receive_amount'] = $item['coupon']['receive_amount']; $coupon['status'] = $item['coupon']['status']; $electron_selection[] = $coupon; } $data['electron_selection'] = $electron_selection; return $this->success('操作成功', $data); } //状态开关 public function actionHandleStatus() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['id', 'status'], 'integer'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $condition = ['id' => $params['id'], 'mall_id' => $this->mall_id]; $field = ['status' => $params['status']]; $res = ElectronCoupon::updateAll($field, $condition); if ($res == false) return $this->error("修改失败: " . ElectronCoupon::getStaticError()); return $this->success("修改成功"); } } //赠送 public function actionGiveCoupon() { if (Yii::$app->request->isAjax && Yii::$app->request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['e_coupon_id', 'user_id', 'number'], 'required'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; $params['get_type'] = ElectronCouponEnums::COUPON_GET_TYPE_SYSTEM; $params['receive_times'] = $params['number']; $result = ElectronCouponUserCoupon::userReceiveCoupon($params); if ($result === false) return $this->error(ElectronCouponUserCoupon::getStaticError()); return $this->success("赠送成功"); } } //搜索用户 public function actionSearchUser() { if (\Yii::$app->request->isAjax) { if (!\Yii::$app->request->isGet) return $this->error('请求方式错误'); $keyword = \Yii::$app->request->get('keyword'); $params = []; $where[] = ['mall_id' => $this->mall_id]; $where[] = ['status' => StatusEnum::ENABLED]; if (!empty($keyword)) $where[] = ['or', ['like', 'nickname', $keyword], ['like', 'mobile', $keyword], ['like', 'id', $keyword]]; $params['where'] = $where; $params['select'] = 'id,nickname,mobile,username,avatar_url'; $params['limit'] = 20; $list = User::lists($params); if (!empty($list)) { foreach ($list as &$item) { if (empty($item['nickname'])) $item['nickname'] = $item['mobile'] . "(id:{$item['id']})"; } } return $this->success('操作成功', ['list' => $list]); } } }