| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- <?php
- namespace addons\BusinessBonus\common\models;
- use addons\BusinessBonus\common\enums\BusinessBonusEnums;
- use addons\BusinessBonus\common\events\user\UpgradeUserEvent;
- use common\enums\StatusEnum;
- use Yii;
- use yii\db\Exception;
- use common\models\user\User;
- /**
- * This is the model class for table "{{%addons_business_bonus_upgrade_apply}}".
- *
- * @property int $id
- * @property int|null $mall_id 商城ID
- * @property int|null $user_id 申请人会员ID
- * @property int|null $business_bonus_level 申请的招商员等级
- * @property int|null $audit_status 审核状态:0待审核,1审核通过,2驳回
- * @property int|null $audit_time 审核时间
- * @property int|null $apply_time 申请时间
- * @property int|null $status 状态:-1删除,0禁用,1启用
- * @property int|null $created_at 创建时间
- * @property int|null $updated_at 更新时间
- */
- class BusinessBonusUpgradeApply extends \common\models\base\BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%addons_business_bonus_upgrade_apply}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['mall_id', 'user_id', 'business_bonus_level', 'audit_status', 'audit_time', 'apply_time', 'status', 'created_at', 'updated_at'], 'integer'],
- [['audit_admin', 'faid_reason'], 'string'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'id' => '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');
- }
- }
|