BackendSettlementController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.fuint.module.backendApi.controller;
  2. import com.fuint.common.Constants;
  3. import com.fuint.common.dto.AccountInfo;
  4. import com.fuint.common.dto.ParamDto;
  5. import com.fuint.common.dto.SettlementDto;
  6. import com.fuint.common.enums.OrderStatusEnum;
  7. import com.fuint.common.enums.SettleStatusEnum;
  8. import com.fuint.common.enums.StatusEnum;
  9. import com.fuint.common.service.MerchantService;
  10. import com.fuint.common.service.SettlementService;
  11. import com.fuint.common.service.StoreService;
  12. import com.fuint.common.util.TokenUtil;
  13. import com.fuint.framework.exception.BusinessCheckException;
  14. import com.fuint.framework.pagination.PaginationRequest;
  15. import com.fuint.framework.pagination.PaginationResponse;
  16. import com.fuint.framework.web.BaseController;
  17. import com.fuint.framework.web.ResponseObject;
  18. import com.fuint.module.backendApi.request.SettlementRequest;
  19. import com.fuint.repository.model.MtMerchant;
  20. import com.fuint.repository.model.MtSettlement;
  21. import com.fuint.repository.model.MtStore;
  22. import com.fuint.utils.StringUtil;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import lombok.AllArgsConstructor;
  26. import org.springframework.security.access.prepost.PreAuthorize;
  27. import org.springframework.web.bind.annotation.*;
  28. import javax.servlet.http.HttpServletRequest;
  29. import java.util.*;
  30. /**
  31. * 商户结算管理controller
  32. *
  33. * Created by FSQ
  34. * CopyRight https://www.fuint.cn
  35. */
  36. @Api(tags="管理端-商户结算相关接口")
  37. @RestController
  38. @AllArgsConstructor
  39. @RequestMapping(value = "/backendApi/settlement")
  40. public class BackendSettlementController extends BaseController {
  41. /**
  42. * 结算服务接口
  43. * */
  44. private SettlementService settlementService;
  45. /**
  46. * 店铺服务接口
  47. */
  48. private StoreService storeService;
  49. /**
  50. * 商户服务接口
  51. */
  52. private MerchantService merchantService;
  53. /**
  54. * 结算列表查询
  55. *
  56. * @param request HttpServletRequest对象
  57. * @return 余额明细列表
  58. */
  59. @ApiOperation(value = "结算列表查询")
  60. @RequestMapping(value = "/list", method = RequestMethod.GET)
  61. @CrossOrigin
  62. @PreAuthorize("@pms.hasPermission('settlement:index')")
  63. public ResponseObject list(HttpServletRequest request) throws BusinessCheckException {
  64. String token = request.getHeader("Access-Token");
  65. Integer page = request.getParameter("page") == null ? Constants.PAGE_NUMBER : Integer.parseInt(request.getParameter("page"));
  66. Integer pageSize = request.getParameter("pageSize") == null ? Constants.PAGE_SIZE : Integer.parseInt(request.getParameter("pageSize"));
  67. String mobile = request.getParameter("mobile") == null ? "" : request.getParameter("mobile");
  68. String userId = request.getParameter("userId") == null ? "" : request.getParameter("userId");
  69. String status = request.getParameter("status") == null ? StatusEnum.ENABLED.getKey() : request.getParameter("status");
  70. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  71. if (accountInfo == null) {
  72. return getFailureResult(1001, "请先登录");
  73. }
  74. Map<String, Object> searchParams = new HashMap<>();
  75. if (StringUtil.isNotEmpty(mobile)) {
  76. searchParams.put("mobile", mobile);
  77. }
  78. if (StringUtil.isNotEmpty(userId)) {
  79. searchParams.put("userId", userId);
  80. }
  81. if (StringUtil.isNotEmpty(status)) {
  82. searchParams.put("status", status);
  83. }
  84. Integer storeId = accountInfo.getStoreId();
  85. if (storeId != null && storeId > 0) {
  86. searchParams.put("storeId", storeId);
  87. }
  88. if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0) {
  89. searchParams.put("merchantId", accountInfo.getMerchantId());
  90. }
  91. Map<String, Object> params = new HashMap<>();
  92. params.put("status", StatusEnum.ENABLED.getKey());
  93. if (accountInfo.getStoreId() != null && accountInfo.getStoreId() > 0) {
  94. params.put("storeId", accountInfo.getStoreId());
  95. }
  96. if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0) {
  97. params.put("merchantId", accountInfo.getMerchantId());
  98. }
  99. List<MtStore> storeList = storeService.queryStoresByParams(params);
  100. List<MtMerchant> merchantList = merchantService.queryMerchantByParams(params);
  101. PaginationRequest paginationRequest = new PaginationRequest();
  102. paginationRequest.setCurrentPage(page);
  103. paginationRequest.setPageSize(pageSize);
  104. paginationRequest.setSearchParams(searchParams);
  105. PaginationResponse<MtSettlement> paginationResponse = settlementService.querySettlementListByPagination(paginationRequest);
  106. // 结算状态
  107. SettleStatusEnum[] statusListEnum = SettleStatusEnum.values();
  108. List<ParamDto> statusList = new ArrayList<>();
  109. for (SettleStatusEnum enumItem : statusListEnum) {
  110. ParamDto paramDto = new ParamDto();
  111. paramDto.setKey(enumItem.getKey());
  112. paramDto.setName(enumItem.getValue());
  113. paramDto.setValue(enumItem.getKey());
  114. statusList.add(paramDto);
  115. }
  116. Map<String, Object> result = new HashMap<>();
  117. result.put("merchantList", merchantList);
  118. result.put("storeList", storeList);
  119. result.put("statusList", statusList);
  120. result.put("paginationResponse", paginationResponse);
  121. return getSuccessResult(result);
  122. }
  123. /**
  124. * 获取结算单详情
  125. * @param request HttpServletRequest对象
  126. * @return
  127. * */
  128. @ApiOperation(value = "获取结算单详情")
  129. @RequestMapping(value = "/info", method = RequestMethod.GET)
  130. @CrossOrigin
  131. @PreAuthorize("@pms.hasPermission('settlement:index')")
  132. public ResponseObject info(HttpServletRequest request) throws BusinessCheckException {
  133. String token = request.getHeader("Access-Token");
  134. Integer page = request.getParameter("page") == null ? Constants.PAGE_NUMBER : Integer.parseInt(request.getParameter("page"));
  135. Integer pageSize = request.getParameter("pageSize") == null ? Constants.PAGE_SIZE : Integer.parseInt(request.getParameter("pageSize"));
  136. Integer settlementId = request.getParameter("settlementId") == null ? 0 : Integer.parseInt(request.getParameter("settlementId"));
  137. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  138. if (accountInfo == null) {
  139. return getFailureResult(1001, "请先登录");
  140. }
  141. SettlementDto settlementInfo = settlementService.getSettlementInfo(settlementId, page, pageSize);
  142. OrderStatusEnum[] statusListEnum = OrderStatusEnum.values();
  143. List<ParamDto> statusList = new ArrayList<>();
  144. for (OrderStatusEnum enumItem : statusListEnum) {
  145. ParamDto paramDto = new ParamDto();
  146. paramDto.setKey(enumItem.getKey());
  147. paramDto.setName(enumItem.getValue());
  148. paramDto.setValue(enumItem.getKey());
  149. statusList.add(paramDto);
  150. }
  151. Map<String, Object> result = new HashMap<>();
  152. result.put("settlementInfo", settlementInfo);
  153. result.put("statusList", statusList);
  154. return getSuccessResult(result);
  155. }
  156. /**
  157. * 提交结算
  158. *
  159. * @param request HttpServletRequest对象
  160. * @return
  161. */
  162. @ApiOperation(value = "提交结算")
  163. @RequestMapping(value = "/doSubmit", method = RequestMethod.POST)
  164. @CrossOrigin
  165. @PreAuthorize("@pms.hasPermission('settlement:doSubmit')")
  166. public ResponseObject doSubmit(HttpServletRequest request, @RequestBody SettlementRequest requestParam) throws BusinessCheckException {
  167. String token = request.getHeader("Access-Token");
  168. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  169. if (accountInfo == null) {
  170. return getFailureResult(1001, "请先登录");
  171. }
  172. String operator = accountInfo.getAccountName();
  173. if (accountInfo.getMerchantId() != null && accountInfo.getMerchantId() > 0) {
  174. requestParam.setMerchantId(accountInfo.getMerchantId());
  175. }
  176. requestParam.setOperator(operator);
  177. settlementService.submitSettlement(requestParam);
  178. return getSuccessResult(true);
  179. }
  180. /**
  181. * 确认结算
  182. *
  183. * @param request HttpServletRequest对象
  184. * @return
  185. */
  186. @ApiOperation(value = "确认结算")
  187. @RequestMapping(value = "/doConfirm", method = RequestMethod.POST)
  188. @CrossOrigin
  189. @PreAuthorize("@pms.hasPermission('settlement:doConfirm')")
  190. public ResponseObject doConfirm(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
  191. String token = request.getHeader("Access-Token");
  192. String settlementId = StringUtil.isEmpty(param.get("settlementId").toString())? "" : param.get("settlementId").toString();
  193. AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
  194. if (accountInfo == null) {
  195. return getFailureResult(1001, "请先登录");
  196. }
  197. if (StringUtil.isEmpty(settlementId)) {
  198. return getFailureResult(201, "参数有误");
  199. }
  200. String operator = accountInfo.getAccountName();
  201. settlementService.doConfirm(Integer.parseInt(settlementId), operator);
  202. return getSuccessResult(true);
  203. }
  204. }