'ID', 'mall_id' => 'Mall ID', 'level' => '会员等级', 'user_id' => 'User ID', 'status' => '状态[-1:删除;0:禁用;1启用]', 'created_at' => 'Created At', 'updated_at' => 'Updated At', 'expired_at' => 'Expired At', ]; } /** * 保存数据 * @param array $params * @return bool|UserLevel */ public static function setData(array $params) { $t = Yii::$app->db->beginTransaction(); try { if (!empty($params['id'])) { $model = self::findOne(['id' => $params['id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); if (empty($model)) throw new Exception('服务不存在或已删除'); $where[] = ['<>', 'id', $params['id']]; } else { $model = new self(); $model->loadDefaultValues(); } if (!$model->load($params, '') || !$model->save()) throw new Exception($model->getErrorMessage()); $t->commit(); return $model; } catch (Exception $e) { $t->rollBack(); self::$static_error = $e->getMessage(); return false; } } /** * 会员过期(过期后恢复到默认等级) * @param array $params * @return bool|UserLevel */ public static function levelExpired($mall_id){ try{ $list = self::find() ->where(['status'=>StatusEnum::ENABLED,'mall_id'=>$mall_id]) ->andWhere(['<','expired_at',time()]) ->all(); if(!empty($list)){ foreach($list as $item){ $user_extra = User::findOne(['id'=>$item->user_id,'level'=>$item->level]); if(!$user_extra){ continue; } //查询修改前用户信息 $user = User::getUser([['id' => $item->user_id,'mall_id' => $mall_id]],'*',[],1); $params = []; $params['id'] = $item->user_id; $params['user_id'] = $item->user_id; $params['mall_id'] = $mall_id; $params['level'] = 0; $res = User::change($params); if($res){ \Yii::error('会员等级过期'.$item->user_id); $item->status = StatusEnum::DELETE; $item->save(); //触发事件 $event = new UserUpgradeAfterEvent($mall_id); $data = ['after_level' => $params['level'], 'before_level' => $user['level'],'mall_id'=>$mall_id,'user_id' => $params['user_id'], 'system_auto' => UserBehaviorLogsEnum::AUTO_DOWNGRADE_USER_LEVEL_EXPIRED]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); // 会员过期事件 $event = new UserLevelExpiredEvent($mall_id); $data = ['mall_id'=>$mall_id, 'user_id' => $params['user_id'], 'before_level' => $user['level'], 'after_level' => $params['level']]; \Yii::$app->services->events->dispatch($event, $data, $event->listeners); } } } return true; }catch(\Exception $e){ \Yii::error('会员等级过期'.$e->getMessage()); return false; } } }