diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/IndexController.java b/nxhs-service/src/main/java/cc/yunxi/controller/IndexController.java index c5d0ab4..3637c89 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/IndexController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/IndexController.java @@ -6,12 +6,14 @@ import cc.yunxi.common.utils.BeanUtils; import cc.yunxi.domain.dto.UserDTO; import cc.yunxi.domain.po.Client; import cc.yunxi.domain.po.Product; +import cc.yunxi.domain.po.RecycleOrder; import cc.yunxi.domain.vo.enterprise.RechargeBalanceVO; import cc.yunxi.domain.vo.priceproduct.ProductSimpleVO; import cc.yunxi.enums.UserTypeEnum; import cc.yunxi.service.IClientService; import cc.yunxi.service.IEnterpriseService; import cc.yunxi.service.IPriceProductService; +import cc.yunxi.service.IRecycleOrderService; import cc.yunxi.utils.UserContext; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -41,6 +43,8 @@ public class IndexController { private final IEnterpriseService enterpriseService; + private final IRecycleOrderService recycleOrderService; + @ApiOperation("废品类目列表") @GetMapping("/products") @@ -73,4 +77,12 @@ public class IndexController { return CommonResult.success(true); } + + @ApiOperation(value = "散户退款", hidden = true) + @GetMapping(value = "/refund") + public CommonResult recharge(@RequestParam("orderId") String orderId) { + recycleOrderService.refundOrder(orderId); + return CommonResult.success(true); + } + } diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java index 410955b..3813683 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java @@ -67,11 +67,10 @@ public class RecycleOrderController { @ApiOperation("分页查询回收订单") @PostMapping("/page") public CommonResult> queryOrderByPage(@RequestBody RecycleOrderQuery recycleOrderQuery) { -// if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) { -//// throw new BizIllegalException("请确定要查询的订单类型"); -// recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER); -// } - recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER); // 先定死 todo + if (ObjectUtil.isEmpty(recycleOrderQuery.getOrderType())) { + throw new BizIllegalException("请确定要查询的订单类型"); + } +// recycleOrderQuery.setOrderType(OrderTypeEnum.SH_ORDER); // 先定死 todo // 1.解析用户上下文 UserDTO userDTO = UserContext.getUser(); recycleOrderQuery.setUserType(userDTO.getUserType()).setUserId(userDTO.getId()).setStationId(userDTO.getStationId()); diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java index 5fac14e..c76ab93 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/EnterpriseAccountBill.java @@ -50,7 +50,7 @@ public class EnterpriseAccountBill { // @TableField("bill_status_id") // private String billStatusId; - @ApiModelProperty("充值(元)") + @ApiModelProperty("进账(元)") @TableField("income_amount") private BigDecimal incomeAmount; diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java index 675cb8e..865093d 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/RecycleOrder.java @@ -143,7 +143,7 @@ public class RecycleOrder { @TableField("remark") private String remark; - @ApiModelProperty("数据隔离1") + @ApiModelProperty("企业商户id") @TableField("company_id") private String companyId; diff --git a/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java b/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java index 793ae0f..e4345c0 100644 --- a/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java +++ b/nxhs-service/src/main/java/cc/yunxi/enums/BalanceChangeTypeEnum.java @@ -18,7 +18,7 @@ public enum BalanceChangeTypeEnum implements BaseEnum { CASH_OUT("2", "提现"), - EXPEND("3", "消费"); + REFUND("3", "退款"); @EnumValue private final String code; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java index 86e2d8f..d03ff12 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IClientService.java @@ -90,14 +90,26 @@ public interface IClientService extends IService { * @param clientId * @param amount * @param orderNo + * @param enterpriseId */ - void addBalance(String clientId, BigDecimal amount, String orderNo, String stationId); + void addBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId); /** * 散户提现 * @param openId + * @param amount */ void cashBalance(String openId, Integer amount) throws Exception; + + /** + * 散户退款 + * @param clientId + * @param amount + * @param orderNo + * @param enterpriseId + */ + void reduceBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId); + } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderService.java index b3946b2..f205519 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecycleOrderService.java @@ -98,4 +98,10 @@ public interface IRecycleOrderService extends IService { */ void finishOrder(@Valid RecycleOrderFinishVO orderFinishVO); + + /** + * 订单退款 + * @param orderId + */ + void refundOrder(String orderId); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java index 52c2ad1..929cbae 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/ClientServiceImpl.java @@ -170,8 +170,14 @@ public class ClientServiceImpl extends ServiceImpl impleme @Override - public void addBalance(String clientId, BigDecimal amount, String orderNo, String stationId) { - this.changeBalance(clientId, amount, orderNo, stationId, BalanceChangeTypeEnum.INCOME); + public void addBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId) { + this.changeBalance(clientId, amount, orderNo, enterpriseId, BalanceChangeTypeEnum.INCOME); + } + + + @Override + public void reduceBalance(String clientId, BigDecimal amount, String orderNo, String enterpriseId) { + this.changeBalance(clientId, amount, orderNo, enterpriseId, BalanceChangeTypeEnum.REFUND); } @@ -257,44 +263,73 @@ public class ClientServiceImpl extends ServiceImpl impleme // 统一金额交易 private void changeBalance(String keyId, BigDecimal amount, String orderNo, - String stationId, BalanceChangeTypeEnum changeTypeEnum) { + String enterpriseId, BalanceChangeTypeEnum changeTypeEnum) { Client client = this.getClientByKeyId(keyId); BigDecimal balance = client.getBanlance(); String remark; LocalDateTime now = LocalDateTime.now(); amount = amount.setScale(2, RoundingMode.HALF_UP); String amountStr = String.valueOf(amount); - if (changeTypeEnum.equals(BalanceChangeTypeEnum.INCOME)) { // 收入 - balance = balance.add(amount); - remark = "废品回收结算,收入" + amountStr + "元"; - - // 更新商户资金 - Enterprise enterprise = enterpriseService.getEnterpriseByStationId(stationId); - BigDecimal fund = enterprise.getFund(); - if (fund.compareTo(amount) < 0) { - throw new BizIllegalException("商户资金不足,请联系商户"); - } - fund = fund.subtract(amount); - enterprise.setFund(fund); - enterpriseService.updateById(enterprise); - - // 记录商户流水 - EnterpriseAccountBill accountBill = new EnterpriseAccountBill(); - accountBill.setEnterpriseId(enterprise.getId()); - accountBill.setBillNumber(CommonUtil.getIdNumber(BusinessCodeEnum.BILL.getCode())); - accountBill.setAccountBalance(fund); - accountBill.setPayoutAmount(amount); - accountBill.setOrderNumber(orderNo); - accountBill.setRemark("支付给散户" + amountStr + "元"); - accountBill.setCreatorTime(now); - accountBillMapper.insert(accountBill); - - } else { // 微信提现 - if (balance.compareTo(amount) < 0) { - throw new BizIllegalException("余额不足"); - } - balance = balance.subtract(amount); - remark = "微信提现" + amountStr + "元"; + switch (changeTypeEnum) { // 收入 + case INCOME: + balance = balance.add(amount); + remark = "废品回收结算,收入" + amountStr + "元"; + + // 更新商户资金 + Enterprise enterprise = enterpriseService.getEnterpriseById(enterpriseId, true); + BigDecimal fund = enterprise.getFund(); + if (fund.compareTo(amount) < 0) { + throw new BizIllegalException("商户资金不足,请联系商户"); + } + fund = fund.subtract(amount); + enterprise.setFund(fund); + enterpriseService.updateById(enterprise); + + // 记录商户流水 + EnterpriseAccountBill accountBill = new EnterpriseAccountBill(); + accountBill.setEnterpriseId(enterprise.getId()); + accountBill.setBillNumber(CommonUtil.getIdNumber(BusinessCodeEnum.BILL.getCode())); + accountBill.setAccountBalance(fund); + accountBill.setPayoutAmount(amount); + accountBill.setOrderNumber(orderNo); + accountBill.setRemark("支付给散户" + amountStr + "元"); + accountBill.setCreatorTime(now); + accountBillMapper.insert(accountBill); + break; + case REFUND: + if (balance.compareTo(amount) < 0) { + throw new BizIllegalException("余额不足"); + } + balance = balance.subtract(amount); + remark = "退款给商户" + amountStr + "元"; + + // 更新商户资金 + Enterprise enterprise1 = enterpriseService.getEnterpriseById(enterpriseId, true); + BigDecimal fund1 = enterprise1.getFund(); + fund1 = fund1.add(amount); + enterprise1.setFund(fund1); + enterpriseService.updateById(enterprise1); + + // 记录商户流水 + EnterpriseAccountBill accountBill1 = new EnterpriseAccountBill(); + accountBill1.setEnterpriseId(enterprise1.getId()); + accountBill1.setBillNumber(CommonUtil.getIdNumber(BusinessCodeEnum.BILL.getCode())); + accountBill1.setAccountBalance(fund1); + accountBill1.setIncomeAmount(amount); + accountBill1.setOrderNumber(orderNo); + accountBill1.setRemark("散户退款到商户" + amountStr + "元"); + accountBill1.setCreatorTime(now); + accountBillMapper.insert(accountBill1); + break; + case CASH_OUT: // 微信提现 + if (balance.compareTo(amount) < 0) { + throw new BizIllegalException("余额不足"); + } + balance = balance.subtract(amount); + remark = "微信提现" + amountStr + "元"; + break; + default: + return; } // 更新散户余额 client.setBanlance(balance); diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java index 4cacbaa..e52ebd5 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java @@ -299,7 +299,7 @@ public class RecycleOrderServiceImpl extends ServiceImpl