| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- namespace App\Jobs;
- use App\Constants\ChangeLogConstant;
- use App\Model\TaskAwarkLogModel;
- use App\Model\UserModel;
- use App\Repositories\Service\QueueService;
- use App\Repositories\TaskAwarkLogRepository;
- use App\Repositories\UserRepository;
- use Carbon\Carbon;
- use Hyperf\AsyncQueue\Job;
- class SentTaskRewardJob extends Job
- {
- public $params;
- public function __construct($params)
- {
- // 这里最好是普通数据,不要使用携带 IO 的对象,比如 PDO 对象
- $this->params = $params;
- }
- public function handle()
- {
- try {
- $rewardInfo = $this->params['reward_info'];
- $setData = [
- 'uid' => $this->params['user_id'],
- 'is_add_up' => $rewardInfo['is_add_up'],
- 'date' => date('Y-m-d'),
- 'reward_way' => $this->params['reward_way'],
- ];
- $userModel = new UserModel();
- $awarkLogRepo = make(TaskAwarkLogRepository::class);
- $userModel = $userModel->where('code', $this->params['user_id']);
- foreach ($rewardInfo['reward'] as $k => $v) {
- $setData['reward'] = $v;
- switch ($k) {
- case 'movie':
- $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_MOVIE_CONUT;
- break;
- case 'house':
- $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_OPEN_HOUSE_COUNT;
- $userModel->increment('max_open_house', $v);
- break;
- case 'comment':
- $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_COMMENT_COUNT;
- break;
- case 'coin':
- $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_COIN;
- break;
- case 'vipTime':
- $setData['reward_type'] = TaskAwarkLogModel::REWARD_VIP_TIME;
- break;
- }
- if ($rewardInfo['is_add_up'] == 1) {
- switch ($k) {
- case 'movie':
- $userModel->increment('max_view', $v);
- break;
- case 'comment':
- $userModel->increment('max_comment', $v);
- break;
- case 'coin':
- $userModel->increment('coins', $v);
- // 帐变记录
- $changeData = [
- 'user_uid' => $this->params['user_id'],
- 'currency_type' => ChangeLogConstant::CHANGE_COIN,
- 'amount' => $v,
- 'way' => ChangeLogConstant::WAY_1,
- 'type' => ChangeLogConstant::TYPE_24,
- 'item_id' => $this->params['reward_way'],
- ];
- make(QueueService::class)->saveChangeLogJob($changeData);
- break;
- }
- } elseif ($rewardInfo['is_add_up'] == 2) {
- // 不累计
- if ($k == 'vipTime') {
- $userObj = UserModel::query()->where(['code' => $this->params['user_id']])->first();
- if (empty($userObj->vip_expired)) {
- $userObj->vip_expired = Carbon::now()->addDays($v)->toDateTimeString();
- } else {
- $oldVipExpired = Carbon::parse($userObj->vip_expired);
- $newVipExpired = $oldVipExpired->copy()->addDays($v)->toDateTimeString();
- $userObj->vip_expired = $newVipExpired;
- }
- $userObj->save();
- }
- }
- //插入日志
- $awarkLogRepo->create($setData);
- make(UserRepository::class)->delUserCache($this->params['user_id']);
- }
- } catch (\Exception $exception) {
- logger('SendSignInRewardsJob', [$exception->getMessage()]);
- }
- }
- }
|