65], [['content', 'pic_url'], 'string', 'max' => 255], ]; } /** * {@inheritdoc} */ public function attributeLabels() { return [ 'id' => 'ID', 'level_id' => '会员等级id', 'title' => '标题', 'content' => '内容', 'pic_url' => '图片', 'status' => '状态[-1:删除;0:禁用;1启用]', 'created_at' => 'Created At', 'updated_at' => 'Updated At', ]; } /** * @desc:保存数据 * @Author: hua * @Date: 2021/10/29 * @Time: 11:28 * @Copyright: copyright (c) 2021 广东七件事集团 * @param array $params * @return MemberBenefit|false|null */ public static function setData(array $params) { try { self::updateAll(['status' => StatusEnum::DELETE], ['and', ['level_id' => $params['level_id']], ['not in', 'id', array_column($params['benefits'], 'id')]]); foreach ($params['benefits'] as $benefit) { if (!empty($benefit['id'])) { $model = self::findOne(['id' => $benefit['id'], 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]]); if (empty($model)) { $model = new self(); $model->loadDefaultValues(); } } else { $model = new self(); $model->loadDefaultValues(); } $benefit['level_id'] = $params['level_id']; if (!$model->load($benefit, '') || !$model->save()) throw new \Exception($model->getErrorMessage()); } return true; } catch (\Exception $e) { self::$static_error = $e->getMessage(); return false; } } /** * @desc:会员权益表 * @Author: hua * @Date: 2021/10/29 * @Time: 11:31 * @Copyright: copyright (c) 2021 广东七件事集团 */ public static function memberBenefitList($params) { $cond = []; $where = []; $where[] = ['mall_id' => $params['mall_id']]; $where[] = ['status' => StatusEnum::ENABLED]; $cond['where'] = $where; $cond['select'] = 'id,name,pic_url,level'; $cond['with'] = ['memberBenefitList' => function ($query) { $query->where(['status' => StatusEnum::ENABLED])->select('id,level_id,title,content, pic_url as picUrl'); }]; $cond['order'] = 'level asc'; $user_level_list = UserLevel::lists($cond); $max_money = 0; // 当前用户已消费金额 $where = ['user_id' => $params['user_id'], 'mall_id' => $params['mall_id'], 'pay_status' => 1]; $user_member_money = Order::find()->where($where)->sum('pay_money'); $where = []; $where[] = ['mall_id' => $params['mall_id']]; $where[] = ['>', 'level', $params['level']]; $where[] = ['status' => StatusEnum::ENABLED]; $user_level = UserLevel::getOne($where, true, ['upgradeCondition'], 'level asc'); $up_data["next_level"] = 0; if (!empty($user_level)) { if (!empty($user_level['upgradeCondition']['is_auto_upgrade'])) $up_data["next_level"] = $user_level['level']; } else { //最高等级则显示当前等级 $max_money = $user_member_money; $up_data["next_level"] = $params['level']; } // $up_data["max_money"] = $max_money; $up_data["money"] = $user_member_money ?? 0; $up_data["level"] = $params['level']; $balance_name = \Yii::$app->services->setting->mall->get($params['mall_id'], 'balance.balance_name'); $user_wallet = UserWallet::findOne(['user_id'=>$params['user_id']]); //会员期限 $user_level_expired = ''; $user_level = UserLevel::findOne(['mall_id'=>$params['mall_id'],'level'=>$up_data['level'],'status'=>StatusEnum::ENABLED]); if($user_level && isset($user_level['is_open_expired']) && $user_level['is_open_expired']){ $user_level_expired = UserLevelExpired::findOne(['user_id'=> $params['user_id'],'level'=>$user_level['level'],'status'=>StatusEnum::ENABLED]); if($user_level_expired){ $user_level_expired = date('Y-m-d H:i:s', $user_level_expired['expired_at']); } } $up_data['user_level_expired'] = $user_level_expired; return [ 'member_benefit_list' => $user_level_list, 'up_data' => $up_data, 'balance_name' => !empty($balance_name) ? $balance_name : '余额', 'balance' => $user_wallet['balance']??0, ]; } }