AppActConfigController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.tzy.app.controller;
  2. import java.util.Arrays;
  3. import java.util.List;
  4. import com.github.pagehelper.PageHelper;
  5. import com.tzy.app.dto.ActDto;
  6. import com.tzy.app.dto.AppActivityConfigDto;
  7. import com.tzy.common.core.domain.MsgResult;
  8. import com.tzy.common.core.domain.entity.SysUser;
  9. import com.tzy.common.dto.OutDTO;
  10. import com.tzy.common.exception.ServiceException;
  11. import com.tzy.common.utils.ShiroUtils;
  12. import com.tzy.common.utils.StringUtils;
  13. import com.tzy.coupon.card.dto.CouponDto;
  14. import com.tzy.coupon.card.service.CardBaseInfoService;
  15. import com.tzy.coupon.card.service.CardRecordService;
  16. import com.tzy.coupon.card.service.IAppUserCardRecordService;
  17. import com.tzy.framework.util.RedisUtils;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.apache.commons.beanutils.ConvertUtils;
  22. import org.apache.shiro.authz.annotation.RequiresPermissions;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Controller;
  25. import org.springframework.ui.ModelMap;
  26. import org.springframework.web.bind.annotation.*;
  27. import com.tzy.common.annotation.Log;
  28. import com.tzy.common.enums.BusinessType;
  29. import com.tzy.app.domain.AppActConfig;
  30. import com.tzy.app.service.IAppActConfigService;
  31. import com.tzy.common.core.controller.BaseController;
  32. import com.tzy.common.core.domain.AjaxResult;
  33. import com.tzy.common.utils.poi.ExcelUtil;
  34. import com.tzy.common.core.page.TableDataInfo;
  35. import javax.annotation.Resource;
  36. /**
  37. * appActConfigController
  38. *
  39. * @author tencheer
  40. * @date 2022-08-08
  41. */
  42. @Slf4j
  43. @Api("商家活动管理")
  44. @RestController
  45. @RequestMapping("/act/config")
  46. public class AppActConfigController extends BaseController {
  47. @Resource private IAppActConfigService appActConfigService;
  48. @Resource private CardBaseInfoService cardBaseInfoService;
  49. @Resource private CardRecordService cardRecordService;
  50. @Resource private RedisUtils redisUtils;
  51. /**
  52. * 查询appActConfig列表
  53. */
  54. @ApiOperation("获取商家活动列表")
  55. @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
  56. @PostMapping("/page")
  57. public TableDataInfo page(@RequestBody AppActConfig appActConfig) {
  58. PageHelper.startPage(appActConfig.getPage(), appActConfig.getRows());
  59. List<AppActivityConfigDto> actConfigList = appActConfigService.selectAppActConfigList(appActConfig);
  60. return getDataTable(actConfigList);
  61. }
  62. /**
  63. * 修改appActConfig
  64. */
  65. @ApiOperation("根据ID查询商家活动")
  66. @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
  67. @GetMapping("/find/{id}")
  68. public OutDTO find(@PathVariable("id") Long id) {
  69. AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id);
  70. return OutDTO.ok().put("actConfig", appActConfig);
  71. }
  72. /**
  73. * 新增保存appActConfig
  74. */
  75. @ApiOperation("新增商家活动")
  76. @Log(title = "appActConfig", businessType = BusinessType.INSERT)
  77. @PostMapping("/add")
  78. public OutDTO addSave(@RequestBody AppActConfig appActConfig) {
  79. appActConfigService.insertAppActConfig(appActConfig);
  80. return OutDTO.ok();
  81. }
  82. /**
  83. * 修改保存appActConfig
  84. */
  85. @ApiOperation("修改商家活动")
  86. @Log(title = "appActConfig", businessType = BusinessType.UPDATE)
  87. @PostMapping("/update")
  88. public OutDTO editSave(@RequestBody AppActConfig appActConfig) {
  89. appActConfigService.updateAppActConfig(appActConfig);
  90. return OutDTO.ok();
  91. }
  92. /**
  93. * 删除appActConfig
  94. */
  95. @ApiOperation("删除商家活动")
  96. @Log(title = "appActConfig", businessType = BusinessType.DELETE)
  97. @PostMapping( "/del")
  98. public OutDTO delete(String ids) {
  99. appActConfigService.deleteAppActConfigByIds(ids);
  100. return OutDTO.ok();
  101. }
  102. @ApiOperation("获取商家活动绑定的优惠券")
  103. @Log(title = "appActConfig", businessType = BusinessType.SEARCH)
  104. @GetMapping( "/cards/{id}")
  105. public OutDTO findByIds(@PathVariable("id") Long id){
  106. // 根据ID查询活动
  107. AppActivityConfigDto appActConfig = appActConfigService.selectAppActConfigById(id);
  108. if(appActConfig == null){
  109. throw new ServiceException("活动不存在");
  110. }
  111. String couponIds = appActConfig.getCouponIds();
  112. if(StringUtils.isEmpty(couponIds)){
  113. throw new ServiceException("优惠券信息不存在");
  114. }
  115. String[] splits = couponIds.split(",");
  116. Long[] couponIdArr = (Long[]) ConvertUtils.convert(splits, Long.class);
  117. List<CouponDto> couponDtoList = cardBaseInfoService.findCardByIds(couponIdArr);
  118. couponDtoList.forEach(couponDto -> {
  119. int usedNum = cardRecordService.countUsedByCardId(couponDto.getId()); // 优惠券已使用数量
  120. couponDto.setUsedNum(usedNum);
  121. });
  122. return OutDTO.ok().put("couponList", couponDtoList);
  123. }
  124. @ApiOperation("开启关闭商家活动")
  125. @Log(title = "appActConfig", businessType = BusinessType.UPDATE)
  126. @PostMapping("/open")
  127. public OutDTO open(@RequestBody AppActConfig appActConfig){
  128. Long id = appActConfig.getId();
  129. if(id == null){
  130. throw new ServiceException("参数id不能为空");
  131. }
  132. Long status = appActConfig.getStatus();
  133. if(status == null){
  134. throw new ServiceException("参数status不能为空");
  135. }
  136. appActConfigService.updateStatus(id, status);
  137. redisUtils.del("app_act_cache"); // 每次开启关闭商家活动删除缓存
  138. return OutDTO.ok();
  139. }
  140. }