| | |
| | | |
| | | namespace app\common\model\user; |
| | | |
| | | use app\common\library\helper; |
| | | use app\common\model\BaseModel; |
| | | use app\common\model\plus\bonus\Setting as bonusSettingModel; |
| | | use app\common\model\user\Grade as GradeModel; |
| | | use app\common\model\user\PointsLog as PointsLogModel; |
| | | use app\common\model\supplier\User as SupplierUserModel; |
| | | use app\common\model\store\Clerk as StoreClerkModel; |
| | | use app\common\model\user\User as UserModel; |
| | | use app\common\model\settings\Setting as SettingModel; |
| | | use think\facade\Db; // by lyzflash |
| | | |
| | | use app\common\model\plus\bonus\User as BonusUserModel; |
| | | use app\common\model\user\ConsumptionLog as ConsumptionLogModel; |
| | | /** |
| | | * 用户模型 |
| | | */ |
| | |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 累积用户的可用消费券数量 (批量) |
| | | */ |
| | | public function onBatchIncConsumption($data) |
| | | { |
| | | foreach ($data as $userId => $expendPoints) { |
| | | $this->where(['user_id' => $userId]) |
| | | ->inc('consumer_coupon', $expendPoints) |
| | | ->inc('total_expend_money', $expendPoints) |
| | | ->update(); |
| | | event('UserGrade', $this['user_id']); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 累积用户的可用积分 |
| | |
| | | // 用户总积分 |
| | | if ($points > 0) { |
| | | $data['total_points'] = $this['total_points'] + $points; |
| | | } |
| | | $this->where('user_id', '=', $this['user_id'])->update($data); |
| | | if($upgrade) { |
| | | event('UserGrade', $this['user_id']); |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 累积用户的可用消费券 |
| | | */ |
| | | public function setIncConsumption($consumption, $describe, $decConsumption = 0, $upgrade = true) |
| | | { |
| | | // 新增消费券变动明细 |
| | | ConsumptionLogModel::add([ |
| | | 'user_id' => $this['user_id'], |
| | | 'value' => $consumption, |
| | | 'describe' => $describe, |
| | | 'app_id' => $this['app_id'], |
| | | ]); |
| | | |
| | | // 更新用户可用消费券 |
| | | $data['consumer_coupon'] = ($this['consumer_coupon'] + $consumption + $decConsumption <= 0) ? 0 : $this['consumer_coupon'] + $consumption + $decConsumption; |
| | | // 用户总消费券 |
| | | if ($consumption > 0) { |
| | | $data['total_expend_money'] = $this['total_expend_money'] + $consumption; |
| | | } |
| | | $this->where('user_id', '=', $this['user_id'])->update($data); |
| | | if($upgrade) { |
| | |
| | | } |
| | | return $model->where('user_id', 'in', $ids)->select(); |
| | | } |
| | | |
| | | /** |
| | | * 购买商品成功:累积购买商品次数 |
| | | */ |
| | | public static function setRepurchaseFrequency($user_id) |
| | | { |
| | | $user= self::detail($user_id); |
| | | $purchase_count=$user['purchase_count']+1; |
| | | if ($purchase_count==1&&$user['referee_id']){ |
| | | $referee= self::detail($user['referee_id']); |
| | | if ($referee){ |
| | | $settingConsumption=SettingModel::getItem('consumption'); |
| | | if ($settingConsumption['give_away']){ |
| | | $referee->setIncConsumption($settingConsumption['give_away'], '直推首单礼包'); |
| | | } |
| | | } |
| | | } |
| | | /*if ($purchase_count>11){ |
| | | return false; |
| | | }*/ |
| | | self::where('user_id',$user_id)->update([ |
| | | 'purchase_count'=>$purchase_count |
| | | ]); |
| | | // 用户等级 |
| | | event('UserGrade', $user_id); |
| | | $bonusUser=BonusUserModel::detail($user_id); |
| | | if ($bonusUser){ |
| | | return BonusUserModel::detail($user_id)->save([ |
| | | 'purchase_count'=>$purchase_count |
| | | ]); |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 取消订单:减少累积购买商品次数 |
| | | */ |
| | | public static function decreasePurchaseCount($user_id,$product,$app_id) |
| | | { |
| | | // 验证是否设置 |
| | | $config = bonusSettingModel::getItem('basic', $app_id); |
| | | if (empty($config['become__buy_product_ids'])) { |
| | | return false; |
| | | } |
| | | // 整理商品id集 |
| | | $productIds = helper::getArrayColumn($product, 'product_id'); |
| | | // 判断商品是否在设置范围内 |
| | | $intersect = array_intersect($productIds, $config['become__buy_product_ids']); |
| | | if (empty($intersect)) { |
| | | return false; |
| | | } |
| | | $quantity=0; |
| | | foreach ($product as $item){ |
| | | // 检查商品是否是指定的分红商品 |
| | | if (in_array($item['product_id'], $config['become__buy_product_ids'])||$item['is_vip']==1) { |
| | | // 获取商品数量 |
| | | $quantity+= $item['total_num']; |
| | | } |
| | | } |
| | | $user= self::detail($user_id); |
| | | $purchase_count=$user['purchase_count']-$quantity; |
| | | if ($purchase_count<0){ |
| | | $purchase_count=0; |
| | | } |
| | | $grade=(new GradeModel())->where('purchase_count','<=',$purchase_count)->order('purchase_count','desc')->find(); |
| | | self::where('user_id',$user_id)->update([ |
| | | 'purchase_count'=>$purchase_count, |
| | | 'grade_id'=>$grade['grade_id'] |
| | | ]); |
| | | // 用户等级 |
| | | event('UserGrade', $user_id); |
| | | $bonusUser=BonusUserModel::detail($user_id); |
| | | if ($bonusUser){ |
| | | return BonusUserModel::detail($user_id)->save([ |
| | | 'purchase_count'=>$purchase_count |
| | | ]); |
| | | } |
| | | return true; |
| | | } |
| | | /** |
| | | * 获取指定等级推荐人数量 |
| | | */ |
| | | public function getRefereeGradeCount($user_id,$referee_grade_ids) |
| | | { |
| | | return $this->where('referee_id', 'in', $user_id)->where('grade_id', 'in', $referee_grade_ids)->count(); |
| | | } |
| | | |
| | | } |