MercFeeCountController.java 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.xy.controller;
  2. import cn.hutool.core.util.BooleanUtil;
  3. import com.xy.annotate.RestMappingController;
  4. import com.xy.dto.MercFeeCountMonthDto;
  5. import com.xy.dto.MercFeeSettleDto;
  6. import com.xy.dto.MercFeeStatisticDto;
  7. import com.xy.entity.MercFeeStatistic;
  8. import com.xy.error.CommRuntimeException;
  9. import com.xy.service.MercFeeCountMonthServiceImpl;
  10. import com.xy.service.MercFeeSettleServiceImpl;
  11. import com.xy.service.MercFeeStatisticServiceImpl;
  12. import com.xy.utils.MercAuthUtils;
  13. import com.xy.utils.PageBean;
  14. import com.xy.utils.R;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import org.springframework.validation.annotation.Validated;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.RequestBody;
  22. @AllArgsConstructor
  23. @Api(tags = "商户-收益概览")
  24. @RestMappingController("merc-api/fee")
  25. public class MercFeeCountController {
  26. private MercFeeCountMonthServiceImpl mercFeeCountMonthService;
  27. private MercFeeStatisticServiceImpl mercFeeStatisticService;
  28. private MercFeeSettleServiceImpl mercFeeSettleService;
  29. @PostMapping("page")
  30. @ApiOperation("收益概览-分页")
  31. public R<PageBean<MercFeeCountMonthDto.Vo>> page(@RequestBody MercFeeCountMonthDto.Page page) {
  32. page.setParentMercId(MercAuthUtils.getMercId());
  33. return mercFeeCountMonthService.page(page);
  34. }
  35. @PostMapping("confirm")
  36. @ApiOperation("确认佣金")
  37. public R confirm(@RequestBody @Validated MercFeeCountMonthDto.ConfirmDTO dto) {
  38. dto.setParentMercId(MercAuthUtils.getMercId());
  39. return mercFeeCountMonthService.confirm(dto);
  40. }
  41. @PostMapping("info")
  42. @ApiOperation("总览")
  43. public R<MercFeeStatisticDto.InFoVO> info() {
  44. return mercFeeStatisticService.info(MercAuthUtils.getMercId());
  45. }
  46. @PostMapping("applySettle")
  47. @ApiOperation("结算申请")
  48. @Transactional(rollbackFor = Exception.class)
  49. public R applySettle(@RequestBody @Validated MercFeeSettleDto.ApplyDTO dto) {
  50. Long mercId = MercAuthUtils.getMercId();
  51. dto.setMercId(mercId);
  52. // 验证结算金额是否在可结算金额范围内
  53. Integer settleMoney = dto.getSettleMoney();
  54. if (settleMoney.intValue() <= 0) {
  55. throw new CommRuntimeException("申请结算金额填写有误,必须大于0");
  56. }
  57. // 可结算金额查看
  58. MercFeeStatisticDto.InFoVO inFoVO = R.feignCheckData(mercFeeStatisticService.info(mercId));
  59. Integer unSettleMoney = inFoVO.getUnSettleMoney();
  60. if (settleMoney > unSettleMoney) {
  61. throw new CommRuntimeException("申请结算金额填写有误,不可大于可结算金额:" + unSettleMoney);
  62. }
  63. Boolean b = R.feignCheckData(mercFeeSettleService.applySettle(dto));
  64. if (BooleanUtil.isTrue(b)) {
  65. // 成功申请,统计表中的可结算佣金扣除申请结算金额
  66. unSettleMoney = unSettleMoney - settleMoney;
  67. MercFeeStatistic mercFeeStatistic = new MercFeeStatistic();
  68. mercFeeStatistic.setMercId(mercId);
  69. mercFeeStatistic.setUnSettleMoney(unSettleMoney);
  70. mercFeeStatisticService.updateById(mercFeeStatistic);
  71. }
  72. return R.ok();
  73. }
  74. @PostMapping("settlePage")
  75. @ApiOperation("收益概览-结算记录")
  76. public R<PageBean<MercFeeSettleDto.Vo>> settlePage(@RequestBody MercFeeSettleDto.Page page) {
  77. page.setMercId(MercAuthUtils.getMercId());
  78. return mercFeeSettleService.page(page);
  79. }
  80. }