SettlementAppController.java 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. package com.poteviohealth.ym.ipos.controller.app;
  2. import com.google.common.collect.Lists;
  3. import com.poteviohealth.cgp.common.controller.BaseWebController;
  4. import com.poteviohealth.cgp.common.facade.log.OperateType;
  5. import com.poteviohealth.cgp.common.facade.log.OperationLog;
  6. import com.poteviohealth.cgp.common.filter.TokenContext;
  7. import com.poteviohealth.cgp.common.integrated.StringParams;
  8. import com.poteviohealth.cgp.common.integrated.customer.CustomerFeignClient;
  9. import com.poteviohealth.cgp.common.integrated.customer.model.GroupLeaderDTO;
  10. import com.poteviohealth.cgp.common.integrated.customer.model.GroupLeaderParams;
  11. import com.poteviohealth.cgp.common.model.CommonPage;
  12. import com.poteviohealth.cgp.common.model.VaultsResponse;
  13. import com.poteviohealth.cgp.common.utils.CgpTool;
  14. import com.poteviohealth.ym.ipos.model.split.SplitWithdraw;
  15. import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
  16. import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
  17. import com.poteviohealth.ym.ipos.model.split.back.WithdrawBack;
  18. import com.poteviohealth.ym.ipos.model.split.detail.AccountBalanceList;
  19. import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
  20. import com.poteviohealth.ym.ipos.model.split.dto.SplitWithdrawDto;
  21. import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
  22. import com.poteviohealth.ym.ipos.service.ISplitService;
  23. import com.poteviohealth.ym.ipos.service.ISplitWithdrawService;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiOperation;
  26. import org.apache.commons.lang.StringUtils;
  27. import org.springframework.web.bind.annotation.PostMapping;
  28. import org.springframework.web.bind.annotation.RequestBody;
  29. import org.springframework.web.bind.annotation.RequestMapping;
  30. import org.springframework.web.bind.annotation.RestController;
  31. import javax.annotation.Resource;
  32. import java.util.Date;
  33. import java.util.List;
  34. /**
  35. * 结算管理app
  36. * @author Qin
  37. */
  38. @RestController
  39. @RequestMapping("/ipos/app/settlementApp")
  40. @Api(value = "SettlementAppController", tags = "结算管理app")
  41. public class SettlementAppController extends BaseWebController {
  42. @Resource
  43. private ISplitService splitService;
  44. @Resource
  45. private ISplitWithdrawService splitWithdrawService;
  46. @Resource
  47. private CustomerFeignClient customerFeignClient;
  48. @PostMapping("/merchantQuery")
  49. @ApiOperation(value = "结算查询")
  50. @OperationLog(type = OperateType.SELECT, description ="结算查询")
  51. public VaultsResponse<SettlementQueryBack> merchantQuery(@RequestBody SettlementQueryDetail detail) {
  52. String ipos = TokenContext.cureMiniUser().getIposMerchantId();
  53. if(StringUtils.isEmpty(ipos)){
  54. return VaultsResponse.failed("账户未激活,请联系管理员");
  55. }
  56. return splitService.merchantSettlementQuery(detail);
  57. }
  58. @PostMapping("/accountBalanceQuery")
  59. @ApiOperation(value = "单账户查询")
  60. @OperationLog(type = OperateType.SELECT, description ="单账户查询")
  61. public VaultsResponse<AccountBalanceBack> accountBalanceQuery(@RequestBody StringParams params) {
  62. //TODO 暂时去掉三方支付
  63. /* if(StringUtils.isEmpty(params.getId())){
  64. String ipos = TokenContext.cureMiniUser().getIposMerchantId();
  65. if(StringUtils.isEmpty(ipos)){
  66. return VaultsResponse.failed("账户未激活,请联系管理员");
  67. }
  68. params.setId(TokenContext.cureMiniUser().getIposMerchantId());
  69. }
  70. return splitService.accountBalanceQuery(params.getId());*/
  71. Integer money = splitWithdrawService.getGroupLeaderWithdrawSumPrice(TokenContext.cureOperatorId(), TokenContext.cureMiniUser().getGroupLeaderId());
  72. AccountBalanceBack balanceBack = new AccountBalanceBack();
  73. List<AccountBalanceList> list = Lists.newArrayList();
  74. AccountBalanceList abList = new AccountBalanceList();
  75. abList.setAvl_amt(money);
  76. list.add(abList);
  77. balanceBack.setList(list);
  78. return VaultsResponse.success(balanceBack);
  79. }
  80. @PostMapping("/accountBalanceUse")
  81. @ApiOperation(value = "可提现金额查询")
  82. @OperationLog(type = OperateType.SELECT, description ="可提现金额查询")
  83. public VaultsResponse<Long> accountBalanceUse() {
  84. //TODO 暂时去掉三方支付
  85. Long money = splitWithdrawService.getGroupLeaderWithdrawPrice(TokenContext.cureOperatorId(), TokenContext.cureMiniUser().getGroupLeaderId());
  86. return VaultsResponse.success(money<0L?0L:money);
  87. /*if(StringUtils.isEmpty(TokenContext.cureMiniUser().getIposMerchantId())){
  88. return VaultsResponse.success(0L);
  89. }
  90. GroupLeaderParams groupLeaderParams = new GroupLeaderParams();
  91. groupLeaderParams.setOperatorId(TokenContext.cureOperatorId());
  92. groupLeaderParams.setGroupLeaderId(Integer.parseInt(TokenContext.cureMiniUser().getGroupLeaderId().toString()));
  93. VaultsResponse<GroupLeaderDTO> vaultsResponse = customerFeignClient.getGroupLeaderById(groupLeaderParams);
  94. GroupLeaderDTO groupLeaderDTO = vaultsResponse.getData();
  95. VaultsResponse<AccountBalanceBack> backVaultsResponse = splitService.accountBalanceQuery(TokenContext.cureMiniUser().getIposMerchantId());
  96. AccountBalanceBack back = backVaultsResponse.getData();
  97. try {
  98. Long money =Long.parseLong( back.getList().get(0).getAvl_amt().toString())-groupLeaderDTO.getRemainedAmt();
  99. if(money<0L){
  100. money = 0L;
  101. }
  102. return VaultsResponse.success(money);
  103. }catch (Exception e){
  104. e.printStackTrace();
  105. return VaultsResponse.success(0L);
  106. }*/
  107. }
  108. @PostMapping("/withdraw")
  109. @ApiOperation(value = "取现")
  110. @OperationLog(type = OperateType.SELECT, description ="取现")
  111. public VaultsResponse<WithdrawBack> withdraw(@RequestBody WithdrawDto dto) {
  112. //TODO 暂时去掉三方支付
  113. /* if(StringUtils.isEmpty(dto.getMerchantId())){
  114. String ipos = TokenContext.cureMiniUser().getIposMerchantId();
  115. if(StringUtils.isEmpty(ipos)){
  116. return VaultsResponse.failed("账户未激活,请联系管理员");
  117. }
  118. dto.setMerchantId(TokenContext.cureMiniUser().getIposMerchantId());
  119. }
  120. GroupLeaderParams groupLeaderParams = new GroupLeaderParams();
  121. groupLeaderParams.setOperatorId(TokenContext.cureOperatorId());
  122. groupLeaderParams.setGroupLeaderId(Integer.parseInt(TokenContext.cureMiniUser().getGroupLeaderId().toString()));
  123. VaultsResponse<GroupLeaderDTO> vaultsResponse = customerFeignClient.getGroupLeaderById(groupLeaderParams);
  124. GroupLeaderDTO groupLeaderDTO = vaultsResponse.getData();
  125. *//* if(groupLeaderDTO.getRemainedAmt()>=dto.getAmount()){
  126. DecimalFormat df = new DecimalFormat("#0.00");
  127. return VaultsResponse.failed("留存保证金为:"+new BigDecimal(df.format(groupLeaderDTO.getRemainedAmt() / 100.0))+"元,可提现金额不足");
  128. }*//*
  129. dto.setAmount(dto.getAmount());
  130. return splitService.withdraw(dto);*/
  131. Long money = splitWithdrawService.getGroupLeaderWithdrawPrice(TokenContext.cureOperatorId(), TokenContext.cureMiniUser().getGroupLeaderId());
  132. money = money<0L?0L:money;
  133. if(!dto.getAmount().equals(money)){
  134. return VaultsResponse.failed("可提现金额变动,请刷新");
  135. }
  136. GroupLeaderParams groupLeaderParams = new GroupLeaderParams();
  137. groupLeaderParams.setOperatorId(TokenContext.cureOperatorId());
  138. groupLeaderParams.setGroupLeaderId(Integer.parseInt(TokenContext.cureMiniUser().getGroupLeaderId().toString()));
  139. VaultsResponse<GroupLeaderDTO> vaultsResponse = customerFeignClient.getGroupLeaderById(groupLeaderParams);
  140. GroupLeaderDTO groupLeaderDTO = vaultsResponse.getData();
  141. SplitWithdraw splitWithdraw = new SplitWithdraw();
  142. splitWithdraw.setOperatorId(TokenContext.cureOperatorId());
  143. splitWithdraw.setWithdrawId(CgpTool.generateKey());
  144. splitWithdraw.setWithdrawSeq(CgpTool.generateKey().toString());
  145. splitWithdraw.setMerchantId("TZ"+TokenContext.cureMiniUser().getGroupLeaderId());
  146. splitWithdraw.setAmount(dto.getAmount());
  147. splitWithdraw.setTransDate(new Date());
  148. splitWithdraw.setTransStatus("p");
  149. splitWithdraw.setAcctStatus("p");
  150. splitWithdraw.setName(groupLeaderDTO.getName());
  151. splitWithdraw.setOpenid(TokenContext.cureMiniUser().getOpenId());
  152. splitWithdrawService.save(splitWithdraw);
  153. splitWithdrawService.updateOrderGroupLeaderWithdraw(TokenContext.cureOperatorId(), TokenContext.cureMiniUser().getGroupLeaderId(),splitWithdraw.getId());
  154. return VaultsResponse.success();
  155. }
  156. @PostMapping("/withdrawQuery")
  157. @ApiOperation(value = "取现查询")
  158. @OperationLog(type = OperateType.SELECT, description ="取现查询")
  159. public VaultsResponse<WithdrawBack> withdrawQuery(@RequestBody StringParams params) {
  160. String ipos = TokenContext.cureMiniUser().getIposMerchantId();
  161. if(StringUtils.isEmpty(ipos)){
  162. return VaultsResponse.failed("账户未激活,请联系管理员");
  163. }
  164. return splitService.withdrawQuery(params.getId());
  165. }
  166. @PostMapping("/list")
  167. @ApiOperation(value = "取现记录",notes = "list")
  168. public VaultsResponse<CommonPage<SplitWithdraw>> list(@RequestBody SplitWithdrawDto dto){
  169. //TODO 暂时去掉三方支付
  170. /*if(StringUtils.isEmpty(dto.getIposMerchantId())){
  171. String ipos = TokenContext.cureMiniUser().getIposMerchantId();
  172. if(StringUtils.isEmpty(ipos)){
  173. return VaultsResponse.failed("账户未激活,请联系管理员");
  174. }
  175. dto.setIposMerchantId(TokenContext.cureMiniUser().getIposMerchantId());
  176. }*/
  177. dto.setIposMerchantId("TZ"+TokenContext.cureMiniUser().getGroupLeaderId());
  178. return VaultsResponse.success(splitWithdrawService.pageList(dto));
  179. }
  180. }