ShPromotionActivityController.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package com.ruoyi.app.mendian;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.ruoyi.common.annotation.Anonymous;
  5. import com.ruoyi.common.core.controller.BaseController;
  6. import com.ruoyi.common.core.domain.AjaxResult;
  7. import com.ruoyi.system.domain.PromotionActivity;
  8. import com.ruoyi.system.dto.PromotionActivitySaveRequest;
  9. import com.ruoyi.system.service.IPromotionActivityService;
  10. import com.ruoyi.system.utils.Auth;
  11. import com.ruoyi.system.utils.JwtUtil;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.web.bind.annotation.*;
  14. /**
  15. * 商家端促销活动管理
  16. *
  17. * 2026-10-19 满额免运(008 T074):保存请求改用 PromotionActivitySaveRequest DTO
  18. * (与旧请求体字段兼容),操作者ID从 token 解析并传入服务层做门店归属校验;
  19. * 列表对 type=5 返回按日期计算的有效状态。
  20. */
  21. @RestController
  22. @RequestMapping("/system/shPromotionActivity")
  23. public class ShPromotionActivityController extends BaseController
  24. {
  25. @Autowired
  26. private IPromotionActivityService promotionActivityService;
  27. /**
  28. * 查询商家促销活动列表
  29. */
  30. @Anonymous
  31. @Auth
  32. @GetMapping("/list")
  33. public AjaxResult list(@RequestHeader String token,
  34. @RequestParam Integer page,
  35. @RequestParam Integer size,
  36. @RequestParam Long storeId,
  37. @RequestParam(required = false) Integer type,
  38. @RequestParam(required = false) Integer status)
  39. {
  40. IPage<PromotionActivity> pageParam = new Page<>(page, size);
  41. IPage<PromotionActivity> result = promotionActivityService.selectActivityPage(pageParam, storeId, type, status);
  42. return success(result);
  43. }
  44. /**
  45. * 获取促销活动详细信息(含规则)
  46. */
  47. @Anonymous
  48. @Auth
  49. @GetMapping("/{id}")
  50. public AjaxResult getInfo(@RequestHeader String token, @PathVariable("id") Long id)
  51. {
  52. PromotionActivity activity = promotionActivityService.selectActivityWithRules(id, resolveOperator(token));
  53. return success(activity);
  54. }
  55. /**
  56. * 新增促销活动
  57. */
  58. @Anonymous
  59. @Auth
  60. @PostMapping
  61. public AjaxResult add(@RequestHeader String token, @RequestBody PromotionActivitySaveRequest request)
  62. {
  63. PromotionActivity activity = request.toActivity();
  64. return toAjax(promotionActivityService.createActivity(activity, request.getRules(), resolveOperator(token)));
  65. }
  66. /**
  67. * 结束促销活动
  68. */
  69. @Anonymous
  70. @Auth
  71. @PutMapping("/{id}/end")
  72. public AjaxResult end(@RequestHeader String token, @PathVariable("id") Long id)
  73. {
  74. return toAjax(promotionActivityService.endActivity(id, resolveOperator(token)));
  75. }
  76. /**
  77. * 修改促销活动(仅未开始;type=5 按有效状态判定)
  78. */
  79. @Anonymous
  80. @Auth
  81. @PutMapping
  82. public AjaxResult edit(@RequestHeader String token, @RequestBody PromotionActivitySaveRequest request)
  83. {
  84. PromotionActivity activity = request.toActivity();
  85. return toAjax(promotionActivityService.updateActivity(activity, request.getRules(), resolveOperator(token)));
  86. }
  87. /**
  88. * 删除促销活动(仅未开始)
  89. */
  90. @Anonymous
  91. @Auth
  92. @DeleteMapping("/{id}")
  93. public AjaxResult remove(@RequestHeader String token, @PathVariable("id") Long id)
  94. {
  95. return toAjax(promotionActivityService.deleteActivity(id, resolveOperator(token)));
  96. }
  97. /**
  98. * 从 token 解析操作者用户ID(@Auth 切面已完成验签,这里只取可信id)
  99. */
  100. private Long resolveOperator(String token)
  101. {
  102. String userId = new JwtUtil().getusid(token);
  103. return userId == null ? null : Long.valueOf(userId);
  104. }
  105. }