SettlementAppController.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.poteviohealth.ym.ipos.controller.app;
  2. import com.poteviohealth.cgp.common.controller.BaseWebController;
  3. import com.poteviohealth.cgp.common.facade.log.OperateType;
  4. import com.poteviohealth.cgp.common.facade.log.OperationLog;
  5. import com.poteviohealth.cgp.common.filter.TokenContext;
  6. import com.poteviohealth.cgp.common.integrated.StringParams;
  7. import com.poteviohealth.cgp.common.integrated.customer.CustomerFeignClient;
  8. import com.poteviohealth.cgp.common.integrated.customer.model.GroupLeaderDTO;
  9. import com.poteviohealth.cgp.common.integrated.customer.model.GroupLeaderParams;
  10. import com.poteviohealth.cgp.common.model.CommonPage;
  11. import com.poteviohealth.cgp.common.model.VaultsResponse;
  12. import com.poteviohealth.ym.ipos.model.split.SplitWithdraw;
  13. import com.poteviohealth.ym.ipos.model.split.back.AccountBalanceBack;
  14. import com.poteviohealth.ym.ipos.model.split.back.SettlementQueryBack;
  15. import com.poteviohealth.ym.ipos.model.split.back.WithdrawBack;
  16. import com.poteviohealth.ym.ipos.model.split.detail.SettlementQueryDetail;
  17. import com.poteviohealth.ym.ipos.model.split.dto.SplitWithdrawDto;
  18. import com.poteviohealth.ym.ipos.model.split.dto.WithdrawDto;
  19. import com.poteviohealth.ym.ipos.service.ISplitService;
  20. import com.poteviohealth.ym.ipos.service.ISplitWithdrawService;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import org.apache.commons.lang.StringUtils;
  24. import org.springframework.web.bind.annotation.PostMapping;
  25. import org.springframework.web.bind.annotation.RequestBody;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RestController;
  28. import javax.annotation.Resource;
  29. import java.math.BigDecimal;
  30. import java.text.DecimalFormat;
  31. /**
  32. * 结算管理app
  33. * @author Qin
  34. */
  35. @RestController
  36. @RequestMapping("/ipos/app/settlementApp")
  37. @Api(value = "SettlementAppController", tags = "结算管理app")
  38. public class SettlementAppController extends BaseWebController {
  39. @Resource
  40. private ISplitService splitService;
  41. @Resource
  42. private ISplitWithdrawService splitWithdrawService;
  43. @Resource
  44. private CustomerFeignClient customerFeignClient;
  45. @PostMapping("/merchantQuery")
  46. @ApiOperation(value = "结算查询")
  47. @OperationLog(type = OperateType.SELECT, description ="结算查询")
  48. public VaultsResponse<SettlementQueryBack> merchantQuery(@RequestBody SettlementQueryDetail detail) {
  49. return splitService.merchantSettlementQuery(detail);
  50. }
  51. @PostMapping("/accountBalanceQuery")
  52. @ApiOperation(value = "单账户查询")
  53. @OperationLog(type = OperateType.SELECT, description ="单账户查询")
  54. public VaultsResponse<AccountBalanceBack> accountBalanceQuery(@RequestBody StringParams params) {
  55. if(StringUtils.isEmpty(params.getId())){
  56. params.setId(TokenContext.cureMiniUser().getIposMerchantId());
  57. }
  58. return splitService.accountBalanceQuery(params.getId());
  59. }
  60. @PostMapping("/withdraw")
  61. @ApiOperation(value = "取现")
  62. @OperationLog(type = OperateType.SELECT, description ="取现")
  63. public VaultsResponse<WithdrawBack> withdraw(@RequestBody WithdrawDto dto) {
  64. GroupLeaderParams groupLeaderParams = new GroupLeaderParams();
  65. groupLeaderParams.setOperatorId(TokenContext.cureOperatorId());
  66. groupLeaderParams.setGroupLeaderId(Integer.parseInt(TokenContext.cureMiniUser().getGroupLeaderId().toString()));
  67. VaultsResponse<GroupLeaderDTO> vaultsResponse = customerFeignClient.getGroupLeaderById(groupLeaderParams);
  68. GroupLeaderDTO groupLeaderDTO = vaultsResponse.getData();
  69. if(groupLeaderDTO.getRemainedAmt()<dto.getAmount()){
  70. DecimalFormat df = new DecimalFormat("#0.00");
  71. return VaultsResponse.failed("留存保证金为:"+new BigDecimal(df.format(groupLeaderDTO.getRemainedAmt() / 100.0))+"元,可提现金额不足");
  72. }
  73. if(StringUtils.isEmpty(dto.getMerchantId())){
  74. dto.setMerchantId(TokenContext.cureMiniUser().getIposMerchantId());
  75. }
  76. return splitService.withdraw(dto);
  77. }
  78. @PostMapping("/withdrawQuery")
  79. @ApiOperation(value = "取现查询")
  80. @OperationLog(type = OperateType.SELECT, description ="取现查询")
  81. public VaultsResponse<WithdrawBack> withdrawQuery(@RequestBody StringParams params) {
  82. return splitService.withdrawQuery(params.getId());
  83. }
  84. @PostMapping("/list")
  85. @ApiOperation(value = "取现记录",notes = "list")
  86. public VaultsResponse<CommonPage<SplitWithdraw>> list(@RequestBody SplitWithdrawDto dto){
  87. return VaultsResponse.success(splitWithdrawService.pageList(dto));
  88. }
  89. }