| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <?php
- namespace addons\BusinessBonus\backend\controllers;
- use addons\BusinessBonus\common\enums\BusinessBonusEnums;
- use addons\BusinessBonus\common\models\BusinessBonusUpgradeApply;
- use addons\BusinessBonus\common\models\BusinessBonusUpgradeRecord;
- use addons\BusinessBonus\common\models\BusinessBonusUser;
- use addons\BusinessBonus\common\events\user\UpgradeUserEvent;
- use common\enums\StatusEnum;
- use common\models\user\User;
- use Yii;
- use yii\db\Exception;
- use addons\BusinessBonus\common\models\BusinessBonusLevel;
- class ApplyController extends BaseController
- {
- /**
- * 申请列表
- */
- 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', 'audit_status'], 'integer'],
- [['nickname'], 'string'],
- [['apply_time'], '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['audit_status'] != null && $params['audit_status'] != '') {
- $where[] = ['=', 'audit_status', (int)$params['audit_status']];
- }
- // 申请时间
- $start_time = strtotime($params['apply_time'][0] ?? 0);
- $end_time = strtotime($params['apply_time'][1] ?? 0);
- if ($start_time > 0 && $end_time > 0 && $end_time >= $start_time) {
- $where[] = ['>=', 'apply_time', $start_time];
- $where[] = ['<=', 'apply_time', $end_time];
- }
- $condition = ['where' => $where, 'with' => ['user'], 'order' => 'id desc'];
- $page_data = BusinessBonusUpgradeApply::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 actionAudit() {
- if (Yii::$app->request->isAjax && Yii::$app->request->isPost) {
- $params = Yii::$app->request->post();
- $res = Yii::$app->services->validate->validate($params, [
- [['id', 'audit_status'], 'integer'],
- [['faid_reason'], 'string'],
- ]);
- if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
- $apply = BusinessBonusUpgradeApply::getOne([
- ['=', 'mall_id', $this->mall_id],
- ['=', 'id', $params['id']],
- ['<>', 'status', StatusEnum::DELETE],
- ], true);
- if (!$apply) {
- return $this->error('申请记录不存在');
- }
- if ($apply['audit_status'] == 1) {
- return $this->error('该申请已审核');
- }
- $bbu = BusinessBonusUser::getOne([
- ['=', 'mall_id', $this->mall_id],
- ['=', 'user_id', $apply['user_id']],
- ['<>', 'status', StatusEnum::DELETE],
- ], true);
- if ($bbu && $params['audit_status'] == 1) {
- return $this->error('该会员已是招商员,无需审核,请驳回审核');
- }
- if ($bbu && $apply['audit_status'] == 2) {
- return $this->error('该会员已是招商员,请勿重复审核');
- }
- $trans = Yii::$app->db->beginTransaction();
- try {
- if ($params['audit_status'] == 1) {// 审核通过,成为招商员
- $user_data = [
- 'user_id' => $apply['user_id'],
- 'business_bonus_level' => $apply['business_bonus_level'],
- 'mall_id' => $this->mall_id,
- 'status' => StatusEnum::ENABLED,
- 'register_time' => time()
- ];
- // 对应等级信息
- $level_info = BusinessBonusLevel::getOne([
- ['=', 'mall_id', $this->mall_id],
- ['=', 'level', $user_data['business_bonus_level']],
- ['>=', 'status', StatusEnum::DISABLED],
- ], true);
- $record = [
- 'mall_id' => $this->mall_id,
- 'user_id' => $user_data['user_id'],
- 'business_bonus_level' => $user_data['business_bonus_level'],
- 'bonus_rate' => $level_info['bonus_rate'] ?? 0,
- 'upgrade_time' => time(),
- 'status' => StatusEnum::ENABLED,
- 'upgrade_type' => BusinessBonusEnums::UPGRADE_TYPE_APPLY,
- 'extra_data' => json_encode([
- 'audit_admin' => $this->admin->username,
- 'audit_account' => $this->admin->account,
- 'mark' => '前端申请,后台审核,成为' . ($level_info['level_name'] ?? ''),
- ], JSON_UNESCAPED_UNICODE)
- ];
- $res = BusinessBonusUpgradeRecord::setData($record);
- if ($res == false) throw new Exception(BusinessBonusUpgradeRecord::getStaticError());
- $res = BusinessBonusUser::setData($user_data);
- if ($res == false) throw new Exception(BusinessBonusUser::getStaticError());
- }
- $params['id'] = $apply['id'];
- $params['mall_id'] = $this->mall_id;
- $params['audit_time'] = time();
- $params['audit_admin'] = $this->admin->username;
- $res = BusinessBonusUpgradeApply::setData($params);
- if ($res == false) throw new Exception(BusinessBonusUpgradeApply::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' => $user_data['user_id']];
- \Yii::$app->services->events->dispatch($event, $data, $event->listeners);
- return $this->success("审核成功");
- }
- }
- }
|