BackendCouponGroupController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. package com.fuint.module.backendApi.controller;
  2. import com.fuint.common.Constants;
  3. import com.fuint.common.dto.*;
  4. import com.fuint.common.enums.StatusEnum;
  5. import com.fuint.common.service.CouponGroupService;
  6. import com.fuint.common.service.UploadService;
  7. import com.fuint.common.util.TokenUtil;
  8. import com.fuint.common.util.XlsUtil;
  9. import com.fuint.framework.dto.ExcelExportDto;
  10. import com.fuint.framework.exception.BusinessCheckException;
  11. import com.fuint.framework.pagination.PaginationRequest;
  12. import com.fuint.framework.pagination.PaginationResponse;
  13. import com.fuint.framework.service.ExportService;
  14. import com.fuint.framework.web.BaseController;
  15. import com.fuint.framework.web.ResponseObject;
  16. import com.fuint.repository.mapper.MtCouponMapper;
  17. import com.fuint.repository.model.MtCoupon;
  18. import com.fuint.repository.model.MtCouponGroup;
  19. import com.fuint.utils.StringUtil;
  20. import io.swagger.annotations.Api;
  21. import io.swagger.annotations.ApiOperation;
  22. import lombok.AllArgsConstructor;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.web.bind.annotation.*;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import javax.servlet.http.HttpServletRequest;
  29. import javax.servlet.http.HttpServletResponse;
  30. import java.io.File;
  31. import java.io.OutputStream;
  32. import java.net.URL;
  33. import java.util.ArrayList;
  34. import java.util.HashMap;
  35. import java.util.List;
  36. import java.util.Map;
  37. /**
  38. * 卡券分组管理类controller
  39. *
  40. * Created by FSQ
  41. * CopyRight https://www.fuint.cn
  42. */
  43. @Api(tags="管理端-卡券分组相关接口")
  44. @RestController
  45. @AllArgsConstructor
  46. @RequestMapping(value = "/backendApi/couponGroup")
  47. public class BackendCouponGroupController extends BaseController {
  48. private static final Logger logger = LoggerFactory.getLogger(BackendCouponGroupController.class);
  49. private MtCouponMapper mtCouponMapper;
  50. /**
  51. * 卡券分组服务接口
  52. */
  53. private CouponGroupService couponGroupService;
  54. /**
  55. * 导出服务接口
  56. * */
  57. private ExportService exportService;
  58. /**
  59. * 上传文件服务接口
  60. * */
  61. private UploadService uploadService;
  62. /**
  63. * 查询卡券分组列表
  64. *
  65. * @param request
  66. * @return
  67. * @throws BusinessCheckException
  68. */
  69. @ApiOperation(value = "查询卡券分组列表")
  70. @RequestMapping(value = "/list", method = RequestMethod.GET)
  71. @CrossOrigin
  72. @PreAuthorize("@pms.hasPermission('coupon:group:index')")
  73. public ResponseObject list(HttpServletRequest request) throws BusinessCheckException {
  74. String token = request.getHeader("Access-Token");
  75. Integer page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
  76. Integer pageSize = request.getParameter("pageSize") == null ? Constants.PAGE_SIZE : Integer.parseInt(request.getParameter("pageSize"));
  77. String name = request.getParameter("name") == null ? "" : request.getParameter("name");
  78. String id = request.getParameter("id") == null ? "" : request.getParameter("id");
  79. String status = request.getParameter("status") == null ? StatusEnum.ENABLED.getKey() : request.getParameter("status");
  80. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  81. PaginationRequest paginationRequest = new PaginationRequest();
  82. paginationRequest.setCurrentPage(page);
  83. paginationRequest.setPageSize(pageSize);
  84. Map<String, Object> searchParams = new HashMap<>();
  85. if (StringUtil.isNotEmpty(name)) {
  86. searchParams.put("name", name);
  87. }
  88. if (StringUtil.isNotEmpty(id)) {
  89. searchParams.put("id", id);
  90. }
  91. if (StringUtil.isNotEmpty(status)) {
  92. searchParams.put("status", status);
  93. }
  94. if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0) {
  95. searchParams.put("merchantId", accountInfo.getMerchantId());
  96. }
  97. if (accountInfo.getStoreId() != null && accountInfo.getStoreId() > 0) {
  98. searchParams.put("storeId", accountInfo.getStoreId());
  99. }
  100. paginationRequest.setSearchParams(searchParams);
  101. PaginationResponse<MtCouponGroup> paginationResponse = couponGroupService.queryCouponGroupListByPagination(paginationRequest);
  102. // 计算券种类、总价值
  103. if (paginationResponse.getContent().size() > 0) {
  104. for (int i = 0; i < paginationResponse.getContent().size(); i++) {
  105. MtCouponGroup object = paginationResponse.getContent().get(i);
  106. object.setMoney(couponGroupService.getCouponMoney(object.getId().intValue()));
  107. object.setNum(couponGroupService.getCouponNum(object.getId()));
  108. }
  109. }
  110. // 统计数据
  111. List<GroupDataListDto> groupData = new ArrayList<>();
  112. if (paginationResponse.getContent().size() > 0) {
  113. for (int i = 0; i < paginationResponse.getContent().size(); i++) {
  114. Integer groupId = paginationResponse.getContent().get(i).getId();
  115. GroupDataDto data = new GroupDataDto();
  116. data.setCancelNum(0);
  117. data.setExpireNum(0);
  118. data.setUseNum(0);
  119. data.setSendNum(0);
  120. data.setUnSendNum(0);
  121. GroupDataListDto item = new GroupDataListDto();
  122. if (null != data) {
  123. item.setKey(groupId.toString());
  124. item.setData(data);
  125. groupData.add(item);
  126. }
  127. }
  128. }
  129. Map<String, Object> result = new HashMap<>();
  130. result.put("paginationResponse", paginationResponse);
  131. result.put("groupData", groupData);
  132. return getSuccessResult(result);
  133. }
  134. /**
  135. * 保存卡券分组信息
  136. *
  137. * @param request
  138. * @param reqCouponGroupDto
  139. * @return
  140. */
  141. @ApiOperation(value = "保存卡券分组信息")
  142. @RequestMapping(value = "/save", method = RequestMethod.POST)
  143. @CrossOrigin
  144. @PreAuthorize("@pms.hasPermission('coupon:group:edit')")
  145. public ResponseObject save(HttpServletRequest request, @RequestBody ReqCouponGroupDto reqCouponGroupDto) throws BusinessCheckException {
  146. String token = request.getHeader("Access-Token");
  147. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  148. reqCouponGroupDto.setMerchantId(accountInfo.getMerchantId());
  149. reqCouponGroupDto.setStoreId(accountInfo.getStoreId());
  150. reqCouponGroupDto.setOperator(accountInfo.getAccountName());
  151. if (reqCouponGroupDto.getId() != null && reqCouponGroupDto.getId() > 0) {
  152. couponGroupService.updateCouponGroup(reqCouponGroupDto);
  153. } else {
  154. couponGroupService.addCouponGroup(reqCouponGroupDto);
  155. }
  156. return getSuccessResult(true);
  157. }
  158. /**
  159. * 删除卡券分组
  160. *
  161. * @param request
  162. * @return
  163. */
  164. @ApiOperation(value = "删除卡券分组")
  165. @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
  166. @CrossOrigin
  167. @PreAuthorize("@pms.hasPermission('coupon:group:edit')")
  168. public ResponseObject delete(HttpServletRequest request, @PathVariable("id") Integer id) throws BusinessCheckException {
  169. String token = request.getHeader("Access-Token");
  170. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  171. // 该分组已有数据,不允许删除
  172. Map<String, Object> searchParams = new HashMap<>();
  173. searchParams.put("GROUP_ID", id.toString());
  174. searchParams.put("status", StatusEnum.ENABLED.getKey());
  175. List<MtCoupon> dataList = mtCouponMapper.selectByMap(searchParams);
  176. if (dataList.size() > 0) {
  177. return getFailureResult(201, "该分组下有卡券,不能删除");
  178. }
  179. couponGroupService.deleteCouponGroup(id, accountInfo.getAccountName());
  180. return getSuccessResult(true);
  181. }
  182. /**
  183. * 更新分组状态
  184. *
  185. * @return
  186. */
  187. @ApiOperation(value = "更新分组状态")
  188. @RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
  189. @CrossOrigin
  190. @PreAuthorize("@pms.hasPermission('coupon:group:edit')")
  191. public ResponseObject updateStatus(HttpServletRequest request, @RequestBody Map<String, Object> params) throws BusinessCheckException {
  192. String token = request.getHeader("Access-Token");
  193. String status = params.get("status") != null ? params.get("status").toString() : StatusEnum.ENABLED.getKey();
  194. Integer id = params.get("id") == null ? 0 : Integer.parseInt(params.get("id").toString());
  195. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  196. ReqCouponGroupDto groupDto = new ReqCouponGroupDto();
  197. groupDto.setOperator(accountInfo.getAccountName());
  198. groupDto.setId(id);
  199. groupDto.setStatus(status);
  200. couponGroupService.updateCouponGroup(groupDto);
  201. return getSuccessResult(true);
  202. }
  203. /**
  204. * 获取分组详情
  205. *
  206. * @param groupId
  207. * @return
  208. */
  209. @ApiOperation(value = "获取分组详情")
  210. @RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
  211. @CrossOrigin
  212. @PreAuthorize("@pms.hasPermission('coupon:group:index')")
  213. public ResponseObject info(@PathVariable("id") Integer groupId) throws BusinessCheckException {
  214. MtCouponGroup mtCouponGroup = couponGroupService.queryCouponGroupById(groupId);
  215. Map<String, Object> resultMap = new HashMap<>();
  216. resultMap.put("groupInfo", mtCouponGroup);
  217. return getSuccessResult(resultMap);
  218. }
  219. /**
  220. * 导出模板文件
  221. *
  222. * @param request
  223. * @param response
  224. * @throws BusinessCheckException
  225. */
  226. @ApiOperation(value = "导出模板文件")
  227. @RequestMapping(value = "/exportTemplate", method = RequestMethod.GET)
  228. @CrossOrigin
  229. public void exportTemplate(HttpServletRequest request, HttpServletResponse response) throws BusinessCheckException {
  230. ClassLoader classLoader = this.getClass().getClassLoader();
  231. URL url = classLoader.getResource("");
  232. String srcTemplateFilePath = url.getPath();
  233. ExcelExportDto excelExportDto = new ExcelExportDto();
  234. excelExportDto.setSrcPath(srcTemplateFilePath);
  235. excelExportDto.setSrcTemplateFileName("template" + File.separator + "importTemplate.xlsx");
  236. String filename = "批量发券模板" + ".xlsx";
  237. try {
  238. OutputStream out = response.getOutputStream();
  239. XlsUtil.setXlsHeader(request, response, filename);
  240. excelExportDto.setOut(out);
  241. exportService.exportLocalFile(excelExportDto);
  242. } catch (Exception e) {
  243. logger.error("导出出错", e);
  244. throw new BusinessCheckException("导出出错");
  245. }
  246. }
  247. /**
  248. * 上传文件
  249. *
  250. * @param request
  251. * @throws
  252. */
  253. @ApiOperation(value = "上传文件")
  254. @RequestMapping(value = "/upload/", method = RequestMethod.POST, produces = "text/html;charset=UTF-8")
  255. @CrossOrigin
  256. public ResponseObject uploadFile(HttpServletRequest request, @RequestParam("fileInput") MultipartFile file) throws Exception {
  257. String token = request.getHeader("Access-Token");
  258. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  259. String filePath = uploadService.saveUploadFile(request, file);
  260. String uuid = couponGroupService.importSendCoupon(file, accountInfo.getAccountName(), filePath);
  261. return getSuccessResult(uuid);
  262. }
  263. /**
  264. * 查询分组列表
  265. * */
  266. @ApiOperation(value = "查询分组列表")
  267. @RequestMapping(value = "/quickSearch", method = RequestMethod.GET)
  268. @CrossOrigin
  269. public ResponseObject quickSearch(HttpServletRequest request) throws BusinessCheckException {
  270. String token = request.getHeader("Access-Token");
  271. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  272. PaginationRequest paginationRequest = new PaginationRequest();
  273. paginationRequest.setCurrentPage(Constants.PAGE_NUMBER);
  274. paginationRequest.setPageSize(Constants.ALL_ROWS);
  275. Map<String, Object> param = new HashMap<>();
  276. param.put("status", StatusEnum.ENABLED.getKey());
  277. if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0) {
  278. param.put("merchantId", accountInfo.getMerchantId());
  279. }
  280. if (accountInfo.getStoreId() != null && accountInfo.getStoreId() > 0) {
  281. param.put("storeId", accountInfo.getStoreId());
  282. }
  283. paginationRequest.setSearchParams(param);
  284. PaginationResponse<MtCouponGroup> paginationResponse = couponGroupService.queryCouponGroupListByPagination(paginationRequest);
  285. List<MtCouponGroup> groupList = paginationResponse.getContent();
  286. Map<String, Object> resultMap = new HashMap<>();
  287. resultMap.put("groupList", groupList);
  288. return getSuccessResult(resultMap);
  289. }
  290. }