| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- namespace common\models\user;
- use common\enums\StatusEnum;
- use common\models\base\BaseActiveRecord;
- use common\models\order\Order;
- use common\models\user\UserLevelExpired;
- use PHPUnit\Util\Exception;
- use Yii;
- /**
- * This is the model class for table "qimall_member_benefit".
- *
- *
- * @property int $id
- * @property int $level_id 会员等级id
- * @property string $title 标题
- * @property string $content 内容
- * @property string $pic_url 图片
- * @property int|null $status 状态[-1:删除;0:禁用;1启用]
- * @property int $created_at
- * @property int $updated_at
- */
- class MemberBenefit extends BaseActiveRecord
- {
- /**
- * {@inheritdoc}
- */
- public static function tableName()
- {
- return '{{%member_benefit}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['level_id', 'status', 'created_at', 'updated_at'], 'integer'],
- [['title'], 'string', 'max' => 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,
- ];
- }
- }
|