Task.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. namespace app\api\controller;
  3. use think\Request;
  4. class Task extends Base
  5. {
  6. use PublicApi;
  7. public function __construct()
  8. {
  9. parent::__construct();
  10. $this->check_config();
  11. }
  12. /**
  13. * 获取任务列表及用户完成状态
  14. * GET /api.php/Task/get_task_list
  15. */
  16. public function get_task_list(Request $request)
  17. {
  18. $check = model('User')->checkLogin();
  19. if ($check['code'] > 1) {
  20. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  21. }
  22. $user_id = intval($check['info']['user_id']);
  23. $user_info = $check['info'];
  24. $task_status = model('TaskLog')->getUserTaskStatus($user_id, $user_info);
  25. $sign_info = model('SignLog')->getSignInfo($user_id);
  26. return json([
  27. 'code' => 1,
  28. 'msg' => lang('obtain_ok'),
  29. 'info' => [
  30. 'daily_tasks' => $task_status['daily_tasks'],
  31. 'newbie_tasks' => $task_status['newbie_tasks'],
  32. 'sign_info' => $sign_info,
  33. 'today_earned' => $task_status['today_earned'],
  34. 'user_points' => intval($user_info['user_points']),
  35. ],
  36. ]);
  37. }
  38. /**
  39. * 每日签到
  40. * POST /api.php/Task/daily_sign
  41. */
  42. public function daily_sign(Request $request)
  43. {
  44. $check = model('User')->checkLogin();
  45. if ($check['code'] > 1) {
  46. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  47. }
  48. $user_id = intval($check['info']['user_id']);
  49. $res = model('SignLog')->doSign($user_id);
  50. return json($res);
  51. }
  52. /**
  53. * 获取签到信息(含里程碑)
  54. * GET /api.php/Task/get_sign_info
  55. */
  56. public function get_sign_info(Request $request)
  57. {
  58. $check = model('User')->checkLogin();
  59. if ($check['code'] > 1) {
  60. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  61. }
  62. $user_id = intval($check['info']['user_id']);
  63. $sign_info = model('SignLog')->getSignInfo($user_id);
  64. return json([
  65. 'code' => 1,
  66. 'msg' => lang('obtain_ok'),
  67. 'info' => $sign_info,
  68. ]);
  69. }
  70. /**
  71. * 领取签到里程碑奖励
  72. * POST /api.php/Task/claim_sign_milestone
  73. * @param milestone_id 里程碑ID
  74. */
  75. public function claim_sign_milestone(Request $request)
  76. {
  77. $check = model('User')->checkLogin();
  78. if ($check['code'] > 1) {
  79. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  80. }
  81. $user_id = intval($check['info']['user_id']);
  82. $param = $request->param();
  83. $milestone_id = intval($param['milestone_id']);
  84. if ($milestone_id <= 0) {
  85. return json(['code' => 1001, 'msg' => lang('param_err')]);
  86. }
  87. // 获取用户当前连续签到天数
  88. $sign_info = model('SignLog')->getSignInfo($user_id);
  89. $serial_days = $sign_info['serial_days'];
  90. $res = model('SignMilestone')->claimMilestone($user_id, $milestone_id, $serial_days);
  91. return json($res);
  92. }
  93. /**
  94. * 领取任务奖励
  95. * POST /api.php/Task/claim_reward
  96. * @param task_id 任务ID
  97. */
  98. public function claim_reward(Request $request)
  99. {
  100. $check = model('User')->checkLogin();
  101. if ($check['code'] > 1) {
  102. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  103. }
  104. $user_id = intval($check['info']['user_id']);
  105. $param = $request->param();
  106. $task_id = intval($param['task_id']);
  107. if ($task_id <= 0) {
  108. return json(['code' => 1001, 'msg' => lang('param_err')]);
  109. }
  110. $res = model('TaskLog')->claimReward($user_id, $task_id);
  111. return json($res);
  112. }
  113. /**
  114. * 上报每日任务进度
  115. * POST /api.php/Task/report_progress
  116. * @param task_action 任务动作标识 (watch_vod/share_vod/post_comment)
  117. */
  118. public function report_progress(Request $request)
  119. {
  120. $check = model('User')->checkLogin();
  121. if ($check['code'] > 1) {
  122. return json(['code' => 1401, 'msg' => lang('task/login_required')]);
  123. }
  124. $user_id = intval($check['info']['user_id']);
  125. $param = $request->param();
  126. $task_action = trim($param['task_action']);
  127. $allowed = ['watch_vod', 'share_vod', 'post_comment'];
  128. if (!in_array($task_action, $allowed)) {
  129. return json(['code' => 1001, 'msg' => lang('param_err')]);
  130. }
  131. $res = model('TaskLog')->addProgress($user_id, $task_action, 1);
  132. return json($res);
  133. }
  134. }