'ID', 'mall_id' => '商城ID', 'user_id' => '申请人会员ID', 'business_bonus_level' => '申请的招商员等级', 'audit_status' => '审核状态:0待审核,1审核通过,2驳回', 'audit_time' => '审核时间', 'audit_admin' => '审核的管理员的用户名', 'apply_time' => '申请时间', 'faid_reason' => '驳回理由', 'status' => '状态:-1删除,0禁用,1启用', 'created_at' => '创建时间', 'updated_at' => '更新时间', ]; } /** * 数据设置 */ public static function setData(array $params) { try{ if (!isset($params['mall_id']) || empty($params['mall_id'])) throw new Exception('缺少商城ID'); if (isset($params['id']) && !empty($params['id'])) { $model = self::findOne(['id' => $params['id'], 'mall_id' => $params['mall_id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); if(empty($model)) throw new Exception('申请记录不存在或已删除'); } else { $model = new self(); $model->loadDefaultValues(); $model->mall_id = $params['mall_id']; } if (!$model->load($params,'') || !$model->save()) throw new Exception($model->getErrorMessage()); return $model; }catch(Exception $e){ self::setStaticError($e->getMessage()); return false; } } /** * 提交申请 * @return * 200: 提交审核成功 * 201: 提交成功无需审核 * false: 提交失败 */ public static function apply($mall_id, $user_id) { $trans = Yii::$app->db->beginTransaction(); $result = 200; try { $bbu = BusinessBonusUser::getOne([ ['=', 'mall_id', $mall_id], ['=', 'user_id', $user_id], ['>=', 'status', StatusEnum::DISABLED], ], true); if ($bbu) { throw new Exception('您已是招商员,无需申请'); } $is_apply = self::getOne([ ['=', 'mall_id', $mall_id], ['=', 'user_id', $user_id], ['=', 'status', StatusEnum::ENABLED], ], true, '', 'id desc'); if ($is_apply && $is_apply['audit_status'] == BusinessBonusEnums::AUDIT_STATUS_CHECKING) { // 如果是驳回的,可以继续提交申请。未审核要先审核 throw new Exception('您已提交申请,请耐心等待审核'); } $business_bonus_level = BusinessBonusEnums::FIRST_BUSINESS_LEVEL; $condition = BusinessBonusUpgradeCondition::getOne([ ['=', 'mall_id', $mall_id], ['=', 'business_bonus_level', $business_bonus_level], ['=', 'status', StatusEnum::ENABLED], ], true); if (!$condition) { throw new Exception('暂时无法提交申请'); } //升级条件 $checked_condition_values = json_decode($condition['checked_condition_values'], true); //升级条件选中的key集合 $checked_condition_keys = json_decode($condition['checked_condition_keys'], true); $condition['is_audit'] = $checked_condition_values['1']['is_audit']; if (!$condition['is_condition_upgrade'] || !in_array('1', $checked_condition_keys)) { throw new Exception('暂不支持提交申请'); } // if ($condition['upgrade_type'] != BusinessBonusEnums::UPGRADE_TYPE_APPLY) { // throw new Exception('暂不支持提交申请'); // } $data = [ 'mall_id' => $mall_id, 'user_id' => $user_id, 'business_bonus_level' => $business_bonus_level, 'audit_status' => BusinessBonusEnums::AUDIT_STATUS_CHECKING, 'audit_time' => 0, 'apply_time' => time(), 'status' => StatusEnum::ENABLED, 'audit_admin' => '', 'faid_reason' => '', ]; if ($condition['is_audit'] == 0) { // 无需审核 $data['audit_status'] = BusinessBonusEnums::AUDIT_STATUS_CHECKED; $data['audit_time'] = time(); $data['faid_reason'] = '系统自动审核通过'; $user_data = [ 'user_id' => $user_id, 'business_bonus_level' => $business_bonus_level, 'mall_id' => $mall_id, 'status' => StatusEnum::ENABLED, 'register_time' => time() ]; // 对应等级信息 $level_info = BusinessBonusLevel::getOne([ ['=', 'mall_id', $mall_id], ['=', 'level', $user_data['business_bonus_level']], ['>=', 'status', StatusEnum::DISABLED], ], true); $record = [ 'mall_id' => $mall_id, 'user_id' => $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([ '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()); $result = 201; } $res = self::setData($data); if ($res == false) throw new Exception(self::getStaticError()); $trans->commit(); //触发用户条件升级 $event = new UpgradeUserEvent($mall_id); $data = ['mall_id' => $mall_id, 'user_id' => $user_id]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); } catch (Exception $e) { $trans->rollBack(); self::setStaticError($e->getMessage()); return false; } return $result; } public function getUser() { return $this->hasOne(User::class, ['id' => 'user_id'])->select('id,mobile,nickname,avatar_url,parent_id,username'); } }