From 3e8b80547f8eda38e5372d8841c0882f00619ccc Mon Sep 17 00:00:00 2001 From: HH Date: Wed, 20 Jul 2022 15:10:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=94=AF=E4=BB=98=E5=92=8C?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=8F=90=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/order/OrderController.java | 4 +- .../ghy/web/controller/pay/PayController.java | 18 ++- .../web/controller/pay/WxPayController.java | 13 +- .../ghy/common/adapay/model/PaymentDTO.java | 1 + .../com/ghy/common/enums/AdapayOrderType.java | 24 +++ .../ghy/common/enums/FinancialDetailType.java | 7 +- .../com/ghy/common/utils/AdapayUtils.java | 25 ++++ .../ghy/order/mapper/OrderMasterMapper.java | 12 +- .../ghy/order/service/OrderMasterService.java | 27 +++- .../service/impl/OrderMasterServiceImpl.java | 141 +++++++++++++++++- .../mapper/order/OrderMasterMapper.xml | 7 + .../payment/mapper/FinancialDetailMapper.java | 10 +- .../service/FinancialDetailService.java | 6 + .../impl/FinancialDetailServiceImpl.java | 18 ++- .../financial/FinancialDetailMapper.xml | 4 + 15 files changed, 284 insertions(+), 33 deletions(-) create mode 100644 ghy-common/src/main/java/com/ghy/common/enums/AdapayOrderType.java diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index 52a062c3..100ae02f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -100,7 +100,7 @@ public class OrderController extends BaseController { // 计算剩余未分配的商品数量 for (OrderGoods detailGoods : orderDetailGoodsList) { for(OrderGoods masterGoods : orderGoodsList){ - if(masterGoods.getGoodsStandardId() == detailGoods.getGoodsStandardId()){ + if(Objects.equals(masterGoods.getGoodsStandardId(), detailGoods.getGoodsStandardId())){ masterGoods.setGoodsNum(masterGoods.getGoodsNum() - detailGoods.getGoodsNum()); } } @@ -297,7 +297,7 @@ public class OrderController extends BaseController { */ private void createFinancialDetail(Long deptGoodsCategoryId, Long deptId, Customer customer, BigDecimal payMoney, FinancialMaster financialMaster) { // 是否为0元购 是的话下面就不用多级分销了 - if (BigDecimal.ZERO.equals(payMoney)) { + if (BigDecimal.ZERO.compareTo(payMoney) == 0) { return; } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java index 77c8ff69..e1e3c0ee 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java @@ -37,10 +37,20 @@ public class PayController { private FinancialMasterService financialMasterService; /** - * 撤销支付 + * 确认支付 * * @param orderMasterId 主订单ID - * @param refundAmt 退款金额 保留两位小数 + */ + public AjaxResult confirm(Long orderMasterId) throws BaseAdaPayException { + orderMasterService.confirm(orderMasterId); + return AjaxResult.success(); + } + + /** + * 发起退款 + * + * @param orderMasterId 主订单ID + * @param refundAmt 退款金额 保留两位小数 */ @PostMapping("refund") @ResponseBody @@ -48,12 +58,12 @@ public class PayController { OrderMaster orderMaster = orderMasterService.selectById(orderMasterId); Assert.notNull(orderMaster, "找不到对应的订单"); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMasterId); + Assert.notNull(financialMaster, "找不到订单"); PaymentDTO payment = financialMasterService.selectPaymentById(financialMaster.getPaymentId()); Assert.notNull(payment, "找不到支付记录"); - Assert.notNull(financialMaster, "找不到订单"); Assert.isTrue(financialMaster.getPayStatus() == 1, "订单未支付"); Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); - JSONObject response = adapayService.refund(orderMaster.getDeptId(), financialMaster.getPaymentId(),payment.getOrderNo(), refundAmt); + JSONObject response = adapayService.refund(orderMaster.getDeptId(), financialMaster.getPaymentId(), payment.getOrderNo(), refundAmt); if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) { return AjaxResult.success(); } else { diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java index 9baaeab5..9c1c4361 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/WxPayController.java @@ -1,26 +1,26 @@ package com.ghy.web.controller.pay; import com.ghy.common.adapay.model.DivMember; -import com.ghy.common.json.JSONObject; -import com.ghy.payment.domain.FinancialMaster; -import com.ghy.payment.service.AdapayService; import com.ghy.common.adapay.model.PayParam; import com.ghy.common.adapay.model.WxpayExpend; import com.ghy.common.config.WxConfig; import com.ghy.common.core.controller.BaseController; import com.ghy.common.core.domain.AjaxResult; +import com.ghy.common.json.JSONObject; import com.ghy.common.utils.ExceptionUtil; import com.ghy.order.domain.OrderMaster; import com.ghy.order.service.OrderMasterService; +import com.ghy.payment.domain.FinancialMaster; +import com.ghy.payment.service.AdapayService; import com.ghy.payment.service.FinancialMasterService; import com.huifu.adapay.core.exception.BaseAdaPayException; import org.springframework.stereotype.Controller; +import org.springframework.util.Assert; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -64,11 +64,8 @@ public class WxPayController extends BaseController { String openId = request.getHeader("code"); String orderMasterCode = request.getHeader("orderMasterCode"); OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode); - + Assert.notNull(orderMaster, "找不到对应的订单"); FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); - if (orderMaster == null) { - return AjaxResult.error("订单不存在"); - } //调用adapay微信公众号支付. WxpayExpend expend = new WxpayExpend(); expend.setOpenId(openId); diff --git a/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java index e5631a30..4982fb70 100644 --- a/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java +++ b/ghy-common/src/main/java/com/ghy/common/adapay/model/PaymentDTO.java @@ -14,6 +14,7 @@ public class PaymentDTO extends Payment { */ @JSONField(name = "party_order_id") private String partyOrderId; + /** * 当前交易状态 */ diff --git a/ghy-common/src/main/java/com/ghy/common/enums/AdapayOrderType.java b/ghy-common/src/main/java/com/ghy/common/enums/AdapayOrderType.java new file mode 100644 index 00000000..4adeb32e --- /dev/null +++ b/ghy-common/src/main/java/com/ghy/common/enums/AdapayOrderType.java @@ -0,0 +1,24 @@ +package com.ghy.common.enums; + +public enum AdapayOrderType { + + PAY("PAY", "支付"), + DRAW_CASH("DRAW_CASH", "提现"), + PAYMENT_CONFIRM("PAYMENT_CONFIRM", "确认支付"); + + private final String code; + private final String desc; + + AdapayOrderType(String code, String desc) { + this.code = code; + this.desc = desc; + } + + public String getCode() { + return code; + } + + public String getDesc() { + return desc; + } +} diff --git a/ghy-common/src/main/java/com/ghy/common/enums/FinancialDetailType.java b/ghy-common/src/main/java/com/ghy/common/enums/FinancialDetailType.java index f4068a56..9bbb996a 100644 --- a/ghy-common/src/main/java/com/ghy/common/enums/FinancialDetailType.java +++ b/ghy-common/src/main/java/com/ghy/common/enums/FinancialDetailType.java @@ -2,13 +2,14 @@ package com.ghy.common.enums; /** * 财务细单类型.所有类型合起来等于主订单实付金额 + * * @author clunt */ public enum FinancialDetailType { - ORDER_FEE(0, "订单金额"), - WORKER_FEE(1,"大师傅/店铺提成金额"), - PLATFORM_FEE(2,"平台提成金额"), + ORDER_FEE(0, "结单金额"), + WORKER_FEE(1, "大师傅/店铺提成金额"), + PLATFORM_FEE(2, "平台提成金额"), PLACE_FEE(3, "分销金额,可能存在多级"), RETURN_FEE(4, "退款金额"); diff --git a/ghy-common/src/main/java/com/ghy/common/utils/AdapayUtils.java b/ghy-common/src/main/java/com/ghy/common/utils/AdapayUtils.java index b09cfd76..f1e170f5 100644 --- a/ghy-common/src/main/java/com/ghy/common/utils/AdapayUtils.java +++ b/ghy-common/src/main/java/com/ghy/common/utils/AdapayUtils.java @@ -1,14 +1,24 @@ package com.ghy.common.utils; +import com.ghy.common.enums.AdapayOrderType; import lombok.extern.slf4j.Slf4j; import org.springframework.util.Assert; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.atomic.AtomicLong; + /** * @author HH 2022/5/21 */ @Slf4j public class AdapayUtils { + private static final AtomicLong INDEX = new AtomicLong(1L); + private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); + /** * 生成 Adapay member_id * @@ -33,4 +43,19 @@ public class AdapayUtils { return String.format("W%dD%d", workerId, deptId); } + /** + * 把BigDecimal格式的价格转为保留两位小数的String + * + * @param b BigDecimal + * @return 保留两位小数的String + */ + public static String bigDecimalToString(BigDecimal b) { + return b.setScale(2, RoundingMode.UNNECESSARY).toString(); + } + + public synchronized static String createOrderNo(AdapayOrderType type) { + INDEX.compareAndSet(9999L, 1L); + return type.getCode() + DATETIME_FORMATTER.format(LocalDateTime.now()) + INDEX.getAndIncrement(); + } + } diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java index 00f3d1bd..82867922 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderMasterMapper.java @@ -1,6 +1,5 @@ package com.ghy.order.mapper; -import com.ghy.order.domain.OrderGoods; import com.ghy.order.domain.OrderMaster; import org.apache.ibatis.annotations.Param; @@ -34,7 +33,7 @@ public interface OrderMasterMapper { /** * @param orderMaster 主订单入参 * @return 满足条件的主单单量 - * */ + */ Long countOrderMasterList(OrderMaster orderMaster); /** @@ -64,4 +63,13 @@ public interface OrderMasterMapper { * @return 主订单信息 */ OrderMaster selectByCode(String orderMasterCode); + + /** + * 修改主订单状态 + * + * @param orderMasterId 主订单ID + * @param orderStatus 主订单状态码 + * @return 0失败 1成功 + */ + int updateStatus(@Param("orderMasterId") Long orderMasterId, @Param("orderStatus") int orderStatus); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java index 81197684..0d6fe9e3 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java +++ b/ghy-order/src/main/java/com/ghy/order/service/OrderMasterService.java @@ -2,6 +2,7 @@ package com.ghy.order.service; import com.ghy.order.domain.OrderMaster; import com.ghy.order.request.AppOrderRequest; +import com.huifu.adapay.core.exception.BaseAdaPayException; import java.util.List; @@ -37,7 +38,7 @@ public interface OrderMasterService { /** * @param orderMaster 主订单入参 * @return 满足条件的主单单量 - * */ + */ Long countOrderMasterList(OrderMaster orderMaster); /** @@ -68,4 +69,28 @@ public interface OrderMasterService { */ String checkOrderMasterCodeUnique(OrderMaster orderMaster); + /** + * 修改主订单状态 + * + * @param orderMasterId 主订单ID + * @param status 主订单状态码 + * @return 0失败 1成功 + */ + int updateStatus(Long orderMasterId, int status); + + /** + * 确认支付订单 + * + * @param orderMasterId 主订单ID + */ + void confirm(Long orderMasterId) throws BaseAdaPayException; + + /** + * 发起提现 + * + * @param deptId 公司ID + * @param memberId Adapay实名账户ID + * @param amount 提现金额 + */ + void drawCash(Long deptId, String memberId, String amount) throws BaseAdaPayException; } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java index 5c9469bd..5a15630f 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderMasterServiceImpl.java @@ -1,16 +1,35 @@ package com.ghy.order.service.impl; +import com.alibaba.fastjson.JSONObject; +import com.ghy.common.adapay.model.AdapayStatusEnum; +import com.ghy.common.adapay.model.DivMember; +import com.ghy.common.adapay.model.PaymentDTO; import com.ghy.common.constant.UserConstants; import com.ghy.common.core.text.Convert; +import com.ghy.common.enums.AdapayOrderType; +import com.ghy.common.enums.OrderStatus; +import com.ghy.common.utils.AdapayUtils; import com.ghy.order.domain.OrderMaster; -import com.ghy.order.mapper.OrderDetailMapper; import com.ghy.order.mapper.OrderMasterMapper; import com.ghy.order.request.AppOrderRequest; import com.ghy.order.service.OrderMasterService; +import com.ghy.payment.domain.FinancialDetail; +import com.ghy.payment.domain.FinancialMaster; +import com.ghy.payment.service.AdapayService; +import com.ghy.payment.service.FinancialDetailService; +import com.ghy.payment.service.FinancialMasterService; +import com.huifu.adapay.core.exception.BaseAdaPayException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicLong; @@ -23,11 +42,18 @@ import java.util.concurrent.atomic.AtomicLong; @Service public class OrderMasterServiceImpl implements OrderMasterService { - @Resource - private OrderMasterMapper orderMasterMapper; + private static final Logger logger = LoggerFactory.getLogger(OrderMasterServiceImpl.class); @Resource - private OrderDetailMapper orderDetailMapper; + private ThreadPoolTaskExecutor executor; + @Resource + private AdapayService adapayService; + @Resource + private OrderMasterMapper orderMasterMapper; + @Resource + private FinancialMasterService financialMasterService; + @Resource + private FinancialDetailService financialDetailService; private static final AtomicLong INDEX = new AtomicLong(1L); @@ -90,4 +116,111 @@ public class OrderMasterServiceImpl implements OrderMasterService { return UserConstants.ORDER_CODE_UNIQUE; } + @Override + public int updateStatus(Long orderMasterId, int status) { + return orderMasterMapper.updateStatus(orderMasterId, status); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(Long orderMasterId) throws BaseAdaPayException { + // 校验订单 + OrderMaster orderMaster = selectById(orderMasterId); + Assert.notNull(orderMaster, "找不到对应的订单"); + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMasterId); + Assert.notNull(financialMaster, "找不到订单"); + Assert.isTrue(financialMaster.getPayStatus() == 1, "订单未支付"); + PaymentDTO payment = financialMasterService.selectPaymentById(financialMaster.getPaymentId()); + Assert.notNull(payment, "找不到支付记录"); + + // 修改主订单状态为已完成 + int i = updateStatus(orderMasterId, OrderStatus.FINISH.code()); + Assert.isTrue(i == 1, "更新订单状态失败"); + + if (BigDecimal.ZERO.compareTo(financialMaster.getPayMoney()) < 0) { + // 支付金额<=0的话 不需要走下面的流程了 + return; + } + + // 用子财务单组成分账信息 + List financialDetails = financialDetailService.selectByFinancialMasterId(financialMaster.getId()); + // 分账账户 + ArrayList divMembers = new ArrayList<>(); + // 需要自动提现的账户 + ArrayList autoDrawCashMembers = new ArrayList<>(); + // 校验金额 主财务单的金额减去所有子财务单的金额是否=0 + BigDecimal checkMoney = financialMaster.getPayMoney(); + // 确认支付金额 = 主财务单付款金额 - 退款金额 + BigDecimal confirmAmt = financialMaster.getPayMoney(); + for (FinancialDetail financialDetail : financialDetails) { + checkMoney = checkMoney.subtract(financialDetail.getPayMoney()); + String memberId, amount; + DivMember member; + switch (financialDetail.getFinancialDetailType()) { + case 0: + // 上门师傅结单 分账同下 + case 1: + // 大师傅/店铺提成 + memberId = AdapayUtils.getWorkerMemberId(financialDetail.getPayeeId(), orderMaster.getDeptId()); + amount = AdapayUtils.bigDecimalToString(financialDetail.getPayMoney()); + member = new DivMember(memberId, amount, false); + divMembers.add(member); + autoDrawCashMembers.add(member); + break; + case 2: + // 平台提成 并且是手续费承担方 + amount = AdapayUtils.bigDecimalToString(financialDetail.getPayMoney()); + divMembers.add(new DivMember("0", amount, true)); + break; + case 3: + // 分销 + memberId = AdapayUtils.getCustomerMemberId(financialDetail.getPayeeId(), orderMaster.getDeptId()); + amount = AdapayUtils.bigDecimalToString(financialDetail.getPayMoney()); + member = new DivMember(memberId, amount, false); + divMembers.add(member); + autoDrawCashMembers.add(member); + break; + case 4: + // 退款 + confirmAmt = confirmAmt.subtract(financialDetail.getPayMoney()); + default: + break; + } + } + + // 这里校验一次主财务单的金额减去所有子财务单的金额是否=0 + Assert.isTrue(BigDecimal.ZERO.compareTo(checkMoney) == 0, "订单异常,请稍后再试"); + + JSONObject response = adapayService.paymentConfirm(orderMaster.getDeptId(), payment.getId(), payment.getOrderNo(), + AdapayUtils.bigDecimalToString(confirmAmt), divMembers, null, null); + boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status")); + // 如果确认支付失败 这里抛出异常 回滚前面修改主订单状态的操作 + Assert.isTrue(status, response.getString("error_msg")); + + // 走到这里确认支付和分账都成功了 异步进入自动提现流程 + autoDrawCashMembers.forEach(member -> executor.execute(() -> { + String memberId = member.getMemberId(); + String amount = member.getAmount(); + try { + drawCash(orderMaster.getDeptId(), memberId, amount); + } catch (BaseAdaPayException e) { + logger.error("自动发起提现失败: orderMasterId={}, memberId={}, cashAmt={}", orderMasterId, memberId, amount, e); + } + })); + } + + /** + * 发起提现 + * + * @param deptId 公司ID + * @param memberId Adapay实名账户ID + * @param amount 提现金额 + */ + public void drawCash(Long deptId, String memberId, String amount) throws BaseAdaPayException { + String orderNo = AdapayUtils.createOrderNo(AdapayOrderType.DRAW_CASH); + JSONObject response = adapayService.drawCash(deptId, orderNo, "T1", amount, memberId, "订单结算", null); + + boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status")); + Assert.isTrue(status, response.getString("error_msg")); + } } diff --git a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml index 5f930789..5883ef11 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderMasterMapper.xml @@ -199,6 +199,13 @@ WHERE id = #{id} + + UPDATE order_master + SET order_status = #{orderStatus}, + update_time = SYSDATE() + WHERE id = #{orderMasterId} + + INSERT INTO order_master( dept_id, diff --git a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java index f972ed00..1dec4a3a 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java +++ b/ghy-payment/src/main/java/com/ghy/payment/mapper/FinancialDetailMapper.java @@ -1,8 +1,8 @@ package com.ghy.payment.mapper; import com.ghy.payment.domain.FinancialDetail; -import org.apache.ibatis.annotations.Param; import com.ghy.payment.response.FinancialCountResponse; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -48,6 +48,12 @@ public interface FinancialDetailMapper { */ FinancialDetail selectById(Long financialDetailId); + /** + * @param financialMasterId 主财务单ID + * @return 财务细单 + */ + List selectByFinancialMasterId(Long financialMasterId); + /** * 批量删除财务细单信息 * @@ -76,4 +82,4 @@ public interface FinancialDetailMapper { * @param reverseId 撤销支付ID */ void payReverseSucceeded(String reverseId); -} +} \ No newline at end of file diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java index 2e410989..100127a0 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/FinancialDetailService.java @@ -50,6 +50,12 @@ public interface FinancialDetailService { */ FinancialDetail selectById(Long financialDetailId); + /** + * @param financialMasterId 主财务单id + * @return 财务细单 + */ + List selectByFinancialMasterId(Long financialMasterId); + /** * @param ids 财务细单ids * @return 删除结果 diff --git a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java index a3fab1b2..792e66ee 100644 --- a/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java +++ b/ghy-payment/src/main/java/com/ghy/payment/service/impl/FinancialDetailServiceImpl.java @@ -18,7 +18,6 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicLong; import static java.time.temporal.ChronoField.*; -import static java.time.temporal.ChronoField.SECOND_OF_MINUTE; @Service public class FinancialDetailServiceImpl implements FinancialDetailService { @@ -42,14 +41,14 @@ public class FinancialDetailServiceImpl implements FinancialDetailService { request.setFlag("true"); // 查询各月含有收入的费用 List list = financialDetailMapper.count(request); - list.forEach(financialCountResponse->{ + list.forEach(financialCountResponse -> { // 查询指定月支出的 request.setFlag("false"); request.setCreateTime(financialCountResponse.getCreateTime()); List payCountList = financialDetailMapper.count(request); - if( payCountList != null && payCountList.size() != 0){ + if (payCountList != null && payCountList.size() != 0) { financialCountResponse.setPayCount(payCountList.get(0).getIncomeCount()); - }else { + } else { financialCountResponse.setPayCount("0"); } }); @@ -82,6 +81,11 @@ public class FinancialDetailServiceImpl implements FinancialDetailService { return financialDetailMapper.selectById(financialDetailId); } + @Override + public List selectByFinancialMasterId(Long financialMasterId) { + return financialDetailMapper.selectByFinancialMasterId(financialMasterId); + } + @Override public int deleteFinancialDetailByIds(String ids) { Long[] financialDetailIds = Convert.toLongArray(ids); @@ -113,10 +117,10 @@ public class FinancialDetailServiceImpl implements FinancialDetailService { @Override public Map byOrderIdInMap(List orderIdList) { Map longFinancialDetailHashMap = new HashMap<>(); - if(orderIdList != null && orderIdList.size() > 0){ + if (orderIdList != null && orderIdList.size() > 0) { List financialDetailList = financialDetailMapper.getByOrderIdList(orderIdList); - if(financialDetailList != null && financialDetailList.size() > 0){ - for(FinancialDetail financialDetail : financialDetailList){ + if (financialDetailList != null && financialDetailList.size() > 0) { + for (FinancialDetail financialDetail : financialDetailList) { longFinancialDetailHashMap.put(financialDetail.getOrderDetailId(), financialDetail); } } diff --git a/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml b/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml index 7286ec12..445306ec 100644 --- a/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml +++ b/ghy-payment/src/main/resources/mapper/financial/FinancialDetailMapper.xml @@ -79,6 +79,10 @@ WHERE id = #{financialDetailId} + + DELETE FROM financial_detail WHERE id IN