SignInRewardController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\logic\admin\SignInRewardLogic;
  5. use App\Models\SignInRewardConfig;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Validator;
  8. /**
  9. * 签到奖励配置控制器
  10. */
  11. class SignInRewardController extends Controller
  12. {
  13. /**
  14. * @var SignInRewardLogic
  15. */
  16. protected $logic;
  17. public function __construct()
  18. {
  19. $this->logic = new SignInRewardLogic();
  20. }
  21. /**
  22. * 列表页面
  23. *
  24. * @param Request $request
  25. * @return \Illuminate\View\View
  26. */
  27. public function listView(Request $request)
  28. {
  29. $list = $this->logic->getList(10);
  30. return view('admin.sign_in_reward.list', [
  31. 'list' => $list,
  32. ]);
  33. }
  34. /**
  35. * 添加页面
  36. *
  37. * @return \Illuminate\View\View
  38. */
  39. public function addView()
  40. {
  41. return view('admin.sign_in_reward.add');
  42. }
  43. /**
  44. * 处理添加请求
  45. *
  46. * @param Request $request
  47. * @return \Illuminate\Http\JsonResponse
  48. */
  49. public function add(Request $request)
  50. {
  51. $data = $request->only(['DayNumber', 'RewardScore']);
  52. // 验证输入
  53. $validator = Validator::make($data, [
  54. 'DayNumber' => ['required', 'integer', 'min:1'],
  55. 'RewardScore' => ['required', 'integer', 'min:0'],
  56. ], [
  57. 'DayNumber.required' => '签到天数不能为空',
  58. 'DayNumber.integer' => '签到天数必须是整数',
  59. 'DayNumber.min' => '签到天数必须大于 0',
  60. 'RewardScore.required' => '奖励积分不能为空',
  61. 'RewardScore.integer' => '奖励积分必须是整数',
  62. 'RewardScore.min' => '奖励积分不能为负数',
  63. ]);
  64. if ($validator->fails()) {
  65. return $this->json(400, $validator->errors()->first());
  66. }
  67. // 使用 Logic 处理业务逻辑
  68. if (!$this->logic->create($data)) {
  69. return $this->json(400, $this->logic->getError());
  70. }
  71. return $this->json(200, '添加成功');
  72. }
  73. /**
  74. * 更新页面
  75. *
  76. * @param int $dayNumber
  77. * @return \Illuminate\View\View
  78. */
  79. public function updateView($dayNumber)
  80. {
  81. $config = SignInRewardConfig::findOrFail($dayNumber);
  82. return view('admin.sign_in_reward.update', [
  83. 'config' => $config,
  84. ]);
  85. }
  86. /**
  87. * 处理更新请求
  88. *
  89. * @param Request $request
  90. * @param int $dayNumber
  91. * @return \Illuminate\Http\JsonResponse
  92. */
  93. public function update(Request $request, $dayNumber)
  94. {
  95. $data = $request->only(['RewardScore']);
  96. // 验证输入
  97. $validator = Validator::make($data, [
  98. 'RewardScore' => ['required', 'integer', 'min:0'],
  99. ], [
  100. 'RewardScore.required' => '奖励积分不能为空',
  101. 'RewardScore.integer' => '奖励积分必须是整数',
  102. 'RewardScore.min' => '奖励积分不能为负数',
  103. ]);
  104. if ($validator->fails()) {
  105. return $this->json(400, $validator->errors()->first());
  106. }
  107. // 使用 Logic 处理业务逻辑
  108. if (!$this->logic->update($dayNumber, $data)) {
  109. return $this->json(400, $this->logic->getError());
  110. }
  111. return $this->json(200, '修改成功');
  112. }
  113. /**
  114. * 删除操作
  115. *
  116. * @param int $dayNumber
  117. * @return \Illuminate\Http\JsonResponse
  118. */
  119. public function delete($dayNumber)
  120. {
  121. if (!$this->logic->delete($dayNumber)) {
  122. return $this->json(400, $this->logic->getError());
  123. }
  124. return $this->json(200, '删除成功');
  125. }
  126. }