UserTaskRepoistory.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Repositories;
  4. use App\Model\TaskAwarkLogModel;
  5. use App\Model\UserModel;
  6. use App\Model\UserTaskModel;
  7. use Hyperf\Database\Model\Builder;
  8. use KZ2\Repositories\Model\Repository;
  9. class UserTaskRepoistory extends Repository
  10. {
  11. public function model()
  12. {
  13. return UserTaskModel::class;
  14. }
  15. /**
  16. * 获取任务奖励信息
  17. *
  18. * @param $rewardType
  19. * @return array
  20. */
  21. public function getTaskRewardInfo($rewardType)
  22. {
  23. $info = UserTaskModel::query()->where(['reward_type' => $rewardType])->first(['reward', 'is_add_up']);
  24. if (empty($info)) {
  25. return [];
  26. }
  27. $reward = json_decode($info->reward, true);
  28. $res['is_add_up'] = $info->is_add_up;
  29. $res['reward']['movie'] = 0;
  30. foreach ($reward as $key => $val) {
  31. if ($val != 0) {
  32. $res['reward'][$key] = $val;
  33. }
  34. }
  35. return $res;
  36. }
  37. /**
  38. * 发放奖励
  39. *
  40. * @param $rewardInfo
  41. * @param $userId
  42. * @param $rewardWay
  43. */
  44. public function sentTaskReward($rewardInfo, $userId, $rewardWay)
  45. {
  46. $setData = [
  47. 'uid' => $userId,
  48. 'is_add_up' => $rewardInfo['is_add_up'],
  49. 'date' => date('Y-m-d'),
  50. $setData['reward_way'] = $rewardWay,
  51. ];
  52. $userModel = new UserModel();
  53. $awarkLogModel = new TaskAwarkLogModel();
  54. foreach ($rewardInfo['reward'] as $k => $v) {
  55. $setData['reward'] = $v;
  56. switch ($k) {
  57. case 'movie':
  58. $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_MOVIE_CONUT;
  59. $userModel->increment('max_view', $v);
  60. break;
  61. case 'house':
  62. $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_OPEN_HOUSE_COUNT;
  63. $userModel->increment('max_apen_house', $v);
  64. break;
  65. case 'comment':
  66. $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_COMMENT_COUNT;
  67. $userModel->increment('max_comment', $v);
  68. break;
  69. case 'coin':
  70. $setData['reward_type'] = TaskAwarkLogModel::REWARD_TYPE_COIN;
  71. $userModel->increment('coins', $v);
  72. break;
  73. }
  74. //插入日志
  75. $awarkLogModel->create($setData);
  76. }
  77. }
  78. }