| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- <?php
- namespace addons\BusinessBonus\backend\controllers;
- use addons\BusinessBonus\common\enums\BusinessBonusEnums;
- use addons\BusinessBonus\common\events\user\UpgradeUserEvent;
- use addons\BusinessBonus\common\listeners\MchOrderPaidListener;
- use addons\BusinessBonus\common\listeners\OrderFinishListener;
- use addons\BusinessBonus\common\listeners\OrderPaidListener;
- use addons\BusinessBonus\common\listeners\StoreOrderPaidListener;
- use addons\BusinessBonus\common\models\BusinessBonusLevel;
- use addons\BusinessBonus\common\models\BusinessBonusReward;
- use addons\BusinessBonus\common\models\BusinessBonusStore;
- use addons\BusinessBonus\common\models\BusinessBonusUpgradeRecord;
- use addons\BusinessBonus\common\models\BusinessBonusUser;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Yii;
- use yii\db\Exception;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\BusinessBonus\backend\controllers
- */
- class DefaultController extends BaseController
- {
- /**
- * 测试
- * /index.php?r=business-bonus/default/test&op=op&id=1
- */
- public function actionTest()
- {
- $p = Yii::$app->request->get();
- if ($p['op'] == 'sendBonus') {
- // 发放分红
- BusinessBonusReward::sendBonus();
- } else if ($p['op'] == 'alterRegisterTime') {
- // 更改招商员注册时间,让其享受门店分红
- $sql = "UPDATE `qimall_addons_business_bonus_user` SET `register_time` = '{$p['register_time']}' WHERE `id` = '{$p['id']}'";
- Yii::$app->getDb()->createCommand($sql)->query();
- } else if ($p['op'] == 'OrderPaidListener') {
- // 商城订单支付完成
- OrderPaidListener::async_handle(['id' => $p['id']]);
- } else if ($p['op'] == 'OrderFinishListener') {
- // 商城订单完成
- OrderFinishListener::async_handle(['id' => $p['id']]);
- } else if ($p['op'] == 'StoreOrderPaidListener') {
- // 门店订单支付完成
- StoreOrderPaidListener::async_handle(['id' => $p['id']]);
- } else if ($p['op'] == 'MchOrderPaidListener') {
- // 商户订单支付完成
- MchOrderPaidListener::async_handle(['id' => $p['id']]);
- } else if ($p['op'] == 'rewardExportHandle') {
- // 导出分红明细
- BusinessBonusReward::exportHandle(['download_id' => $p['id']]);
- } else if ($p['op'] == 'storeExportHandle') {
- // 导出门店列表
- BusinessBonusStore::exportHandle(['download_id' => $p['id']]);
- } else if ($p['op'] == 'incomeInfo') {
- // 推广中心分红统计显示
- $res = BusinessBonusUser::getIncomeInfo(['user_id' => $p['id'], 'mall_id' => $this->mall_id, 'addons_name' => BusinessBonusEnums::ADDONS_NAME]);
- print_r($res);
- }
- dd($p, 'test done');
- }
- /**
- * 首页 > 招商员列表
- *
- * @return string
- */
- public function actionIndex()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params,[
- [['page', 'user_id', 'business_bonus_level', 'status'], 'integer'],
- [['nickname'], 'string'],
- [['created_at'], 'safe'],
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $where = [
- ['=', 'mall_id', $this->mall_id],
- ['<>', 'status', StatusEnum::DELETE],
- ];
- if ($params['user_id']) {
- $where[] = ['=', 'user_id', (int)$params['user_id']];
- }
- // 昵称、手机号
- if ($params['nickname']) {
- $user_ids = User::find()
- ->orWhere(['like', 'nickname', "%" . $params['nickname'] . "%", false])
- ->orWhere(['like', 'mobile', "%" . $params['nickname'] . "%", false])
- ->select('id')
- ->asArray()
- ->column();
- $where[] = ['in', 'user_id', $user_ids];
- }
- if ($params['business_bonus_level']) {
- $where[] = ['=', 'business_bonus_level', (int)$params['business_bonus_level']];
- }
- if ($params['status'] !== null && $params['status'] !== '') {
- $where[] = ['=', 'status', (int)$params['status']];
- }
- // 成为招商员时间
- $start_time = strtotime($params['created_at'][0] ?? 0);
- $end_time = strtotime($params['created_at'][1] ?? 0);
- if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) {
- $where[] = ['>=', 'created_at', $start_time];
- $where[] = ['<=', 'created_at', $end_time];
- }
- $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc'];
- $page_data = BusinessBonusUser::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'], 'business_bonus_level')));
- $level_list = BusinessBonusLevel::find()
- ->select('level,level_name,bonus_rate')
- ->andWhere(['>', 'status', StatusEnum::DISABLED])
- ->andWhere(['in', 'level', $level_array])
- ->andWhere(['=', 'mall_id', $this->mall_id])
- ->asArray()
- ->all();
- $level_name_data = array_column($level_list, null, 'level');
- foreach ($page_data['list'] as $index => $item) {
- $item['level_info'] = $level_name_data[$item['business_bonus_level']] ?? '';
- $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'], 'integer'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $params['mall_id'] = $this->mall_id;
- $res = BusinessBonusUser::setData($params);
- if ($res == false) return $this->error("修改失败: " . BusinessBonusUser::getStaticError());
- return $this->success("修改成功");
- }
- }
- /**
- * 升级记录
- */
- public function actionUpgradeRecord()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params,[
- [['page', 'user_id', ], 'integer']
- ]);
- if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $where = [
- ['=', 'mall_id', $this->mall_id],
- ['<>', 'status', StatusEnum::DELETE],
- ];
- if ($params['user_id']) {
- $where[] = ['=', 'user_id', (int)$params['user_id']];
- }
- $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc'];
- $page_data = BusinessBonusUpgradeRecord::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'], 'business_bonus_level')));
- $level_list = BusinessBonusLevel::find()
- ->select('level,level_name,bonus_rate')
- ->andWhere(['>', 'status', StatusEnum::DISABLED])
- ->andWhere(['in', 'level', $level_array])
- ->andWhere(['=', 'mall_id', $this->mall_id])
- ->asArray()
- ->all();
- $level_name_data = array_column($level_list, null, 'level');
- foreach ($page_data['list'] as $index => $item) {
- $item['level_info'] = $level_name_data[$item['business_bonus_level']] ?? '';
- $item['extra_data'] = json_decode($item['extra_data'], true);
- $page_data['list'][$index] = $item;
- }
- $this->success('获取成功', compact('page_data'));
- }
- }
- /**
- * 获取招商员等级列表
- */
- public function actionBusinessBonusLevel()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
- $level_list = BusinessBonusLevel::find()
- ->where(['mall_id' => $this->mall_id])
- ->andWhere(['status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
- return $this->success("招商员等级列表", compact('level_list'));
- }
- }
- /**
- * 编辑、新增招商员
- */
- public function actionEdit()
- {
- if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id', 'user_id', 'status', 'business_bonus_level', 'created_at', 'created_at'], 'integer'],
- [['bonus_rate'], 'number'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- if (!$params['created_at']) unset($params['created_at']);
- if (!$params['id']) $params['register_time'] = time();
- $params['mall_id'] = $this->mall_id;
- $where = [
- ['=', 'mall_id', $this->mall_id],
- ['=', 'user_id', $params['user_id']],
- ['>=', 'status', StatusEnum::DISABLED],
- ];
- $record = [
- 'mall_id' => $this->mall_id,
- 'user_id' => $params['user_id'],
- 'business_bonus_level' => $params['business_bonus_level'],
- 'bonus_rate' => $params['bonus_rate'],
- 'upgrade_time' => time(),
- 'status' => StatusEnum::ENABLED
- ];
- unset($params['bonus_rate']);
- // 是否重复添加
- if (!$params['id']) {
- $is_repeact = BusinessBonusUser::getOne($where, true);
- if ($is_repeact) {
- return $this->error('该用户已是招商员,请勿重复添加');
- }
- unset($params['id']);
- // 后台添加等级
- $record['upgrade_type'] = BusinessBonusEnums::UPGRADE_TYPE_ADMIN_ADD;
- $mark = '后台添加等级';
- } else {
- $where[] = ['=', 'id', $params['id']];
- $business_user = BusinessBonusUser::getOne($where, true);
- // 后台修改等级
- if ($business_user['business_bonus_level'] != $params['business_bonus_level']) {
- $record['upgrade_type'] = BusinessBonusEnums::UPGRADE_TYPE_ADMIN_ALTER;
- $mark = '后台修改等级';
- }
- }
- $record['extra_data'] = json_encode([
- 'username' => $this->admin->username,
- 'account' => $this->admin->account,
- 'mark' => $mark
- ], JSON_UNESCAPED_UNICODE);
- $trans = Yii::$app->db->beginTransaction();
- try {
- if (isset($record['upgrade_type'])) {
- $res = BusinessBonusUpgradeRecord::setData($record);
- if ($res == false) return $this->error("保存失败: " . BusinessBonusUpgradeRecord::getStaticError());
- }
- $res = BusinessBonusUser::setData($params);
- if ($res == false) return $this->error("保存失败: " . BusinessBonusUser::getStaticError());
- $trans->commit();
- } catch (Exception $e) {
- $trans->rollBack();
- return $this->error($e->getMessage());
- }
- //触发用户条件升级
- $event = new UpgradeUserEvent($this->mall_id);
- $data = ['mall_id' => $this->mall_id, 'user_id' => $params['user_id']];
- \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
- return $this->success("保存成功");
- } else {
- return $this->render('edit');
- }
- }
- /**
- * 获取编辑招商员的信息
- */
- public function actionInfo()
- {
- if (Yii::$app->request->isAjax) {
- $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 = BusinessBonusUser::getOne([
- ['id' => $params['inc_id']],
- ['mall_id' => $this->mall_id]
- ], true, '', '', 'id,user_id,status,business_bonus_level,created_at,updated_at');
- if ($info) {
- $user = User::getOne([
- ['=', 'id', $info['user_id']],
- ['=', 'mall_id', $this->mall_id],
- ], true, '', '', 'nickname,mobile,avatar_url');
- $info['nickname'] = $user['nickname'] ?? '';
- $info['mobile'] = $user['mobile'] ?? '';
- $info['avatar_url'] = $user['avatar_url'] ?? '';
- }
- $is_null = $info ? 0 : 1;
- return $this->success("保存成功", compact('info', 'is_null'));
- }
- }
- /**
- * 搜索用户
- * @return \yii\web\Response
- */
- public function actionSearchUser()
- {
- if (\Yii::$app->request->isAjax) {
- $params = \Yii::$app->request->get();
- $res = \Yii::$app->services->validate->validate($params, [
- [['keyword_name','keyword_id','keyword_mobile'], 'string','message' => '请输入发放对象搜索关键字'],
- ]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- if(!empty($params['keyword_name']))$where[] = ['like','nickname',$params['keyword_name']];
- if(!empty($params['keyword_id']))$where[] = ['=','id',$params['keyword_id']];
- if(!empty($params['keyword_mobile']))$where[] = ['=','mobile',$params['keyword_mobile']];
- $where[] = ['=', 'mall_id', $this->mall_id];
- $cond = ['where' => $where, 'limit' => 10,'order'=>"id desc"];
- $field = "nickname,id,avatar_url,mobile";
- $list = User::listPage($cond);
- return $this->success('操作成功', $list);
- }
- }
- /**
- * 查看招商员详情
- */
- public function actionDetail()
- {
- if (\Yii::$app->request->isAjax) {
- $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 = BusinessBonusUser::getOne([
- ['id' => $params['inc_id']],
- ['mall_id' => $this->mall_id]
- ], true, '', '', 'id,user_id,status,business_bonus_level,store_number,mch_number,register_time');
- if ($info) {
- $user = User::getOne([
- ['=', 'id', $info['user_id']],
- ['=', 'mall_id', $this->mall_id],
- ['>=', 'status', StatusEnum::DISABLED],
- ], true, '', '', 'nickname,mobile,avatar_url');
- $info['nickname'] = $user['nickname'] ?? '';
- $info['mobile'] = $user['mobile'] ?? '';
- $info['avatar_url'] = $user['avatar_url'] ?? '';
- $level_info = BusinessBonusLevel::getOne([
- ['level' => $info['business_bonus_level']],
- ['mall_id' => $this->mall_id],
- ['>=', 'status', StatusEnum::DISABLED]
- ], true, '', '', 'level_name,bonus_rate');
- $info['level_name'] = $level_info['level_name'] ?? '';
- $info['bonus_rate'] = $level_info['bonus_rate'] ?? '';
- $info['register_time_format'] = date('Y-m-d H:i:s', $info['register_time']);
- }
- $is_null = $info ? 0 : 1;
- return $this->success("操作成功", compact('info', 'is_null'));
- } else {
- return $this->render('detail');
- }
- }
- }
|