From cfaf819cb87cec28fcc4341c560185ee3fb3baf6 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 21 八月 2025 19:22:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 52 insertions(+), 7 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
index facfcc1..86d9fdb 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java
@@ -28,6 +28,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -181,14 +182,17 @@
     @Transactional(rollbackFor = {BusinessException.class,Exception.class})
     public TransferToUser.TransferToUserResponse  applyWithdrawal(WithdrawalDTO withdrawalDTO){
         if(Objects.isNull(withdrawalDTO)
-        || Objects.isNull(withdrawalDTO.getAmount())){
+        || Objects.isNull(withdrawalDTO.getAmount())
+        || org.apache.commons.lang3.StringUtils.isBlank(withdrawalDTO.getName())
+        || withdrawalDTO.getAmount().compareTo(BigDecimal.ZERO)<=Constants.ZERO
+        ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         Member member = memberMapper.selectById(withdrawalDTO.getMember().getId());
         if(Objects.isNull(member)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛淇℃伅寮傚父,璇疯仈绯荤鐞嗗憳");
         }
-        if(member.getAmount() < withdrawalDTO.getAmount()){
+        if(member.getAmount() < withdrawalDTO.getAmount().multiply(new BigDecimal("100")).intValue()){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鍙彁鐜颁綑棰濅笉瓒炽��");
         }
         if(StringUtils.isEmpty(member.getName())){
@@ -198,7 +202,7 @@
         withdrawalOrders.setCreateTime(new Date());
         withdrawalOrders.setMemberId(member.getId());
         withdrawalOrders.setOutBillNo(UUID.randomUUID().toString().replace("-",""));
-        withdrawalOrders.setAmount(withdrawalDTO.getAmount());
+        withdrawalOrders.setAmount((withdrawalDTO.getAmount().multiply(new BigDecimal("100"))).longValue());
         withdrawalOrders.setStatus(Constants.ZERO);
         withdrawalOrders.setType(Constants.ZERO);
         withdrawalOrders.setDeleted(Constants.ZERO);
@@ -207,18 +211,17 @@
         TransferToUser.TransferToUserRequest transferToUserRequest = new TransferToUser.TransferToUserRequest();
         transferToUserRequest.openid = member.getOpenid();
         transferToUserRequest.outBillNo =  withdrawalOrders.getOutBillNo();
-        transferToUserRequest.transferAmount = withdrawalDTO.getAmount();
+        transferToUserRequest.transferAmount = withdrawalOrders.getAmount();
         transferToUserRequest.transferRemark = "鎻愮幇鐢宠";
         try {
-            TransferToUser.TransferToUserResponse response =  WxMiniConfig.transferToUser.run(transferToUserRequest,member.getName());
+            TransferToUser.TransferToUserResponse response =  WxMiniConfig.transferToUser.run(transferToUserRequest,withdrawalDTO.getName());
             withdrawalOrders.setRemark(JSONObject.toJSONString(response));
             if(response.state.name().equals("WAIT_USER_CONFIRM") || response.state.name().equals("ACCEPTED")){
                 withdrawalOrders.setWxExternalNo(response.transferBillNo);
             }
             withdrawalOrdersMapper.insert(withdrawalOrders);
             //鏇存柊鐢ㄦ埛浣欓
-            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT -  " + withdrawalDTO.getAmount() ).eq(Member::getId,member.getId()));
-
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT -  " + withdrawalOrders.getAmount() ).eq(Member::getId,member.getId()));
             //瀛樺偍娴佹按璁板綍
             MemberRevenue memberRevenue = new MemberRevenue();
             memberRevenue.setCreateTime(new Date());
@@ -245,6 +248,48 @@
 
 
     @Override
+    public void transferSuccess(String outBillNo,Boolean isSuccess){
+        //杞处鎴愬姛
+        if(isSuccess){
+            withdrawalOrdersMapper.update(new UpdateWrapper<WithdrawalOrders>().lambda()
+                    .set(WithdrawalOrders::getStatus,Constants.ONE)
+                    .eq(WithdrawalOrders::getOutBillNo,outBillNo)
+            );
+        }else {
+            WithdrawalOrders withdrawalOrders = withdrawalOrdersMapper.selectOne(new QueryWrapper<WithdrawalOrders>().lambda()
+                    .eq(WithdrawalOrders::getOutBillNo,outBillNo).last("limit 1"));
+            if(Objects.isNull(withdrawalOrders)){
+                return;
+            }
+            Member member = memberMapper.selectById(withdrawalOrders.getMemberId());
+            if(Objects.isNull(member)){
+                return;
+            }
+            //鏇存柊鐢ㄦ埛浣欓
+            memberMapper.update(new UpdateWrapper<Member>().lambda().setSql(" AMOUNT = AMOUNT +  " + withdrawalOrders.getAmount() ).eq(Member::getId,withdrawalOrders.getMemberId()));
+
+            //瀛樺偍娴佹按璁板綍
+            MemberRevenue memberRevenue = new MemberRevenue();
+            memberRevenue.setCreateTime(new Date());
+            memberRevenue.setTransactionNo(withdrawalOrders.getOutBillNo());
+            memberRevenue.setDeleted(Constants.ZERO);
+            memberRevenue.setMemberId(withdrawalOrders.getMemberId());
+            memberRevenue.setType(Constants.FOUR);
+            memberRevenue.setOptType(Constants.ONE);
+            memberRevenue.setBeforeAmount(member.getAmount());
+            memberRevenue.setAmount(withdrawalOrders.getAmount());
+            memberRevenue.setAfterAmount(member.getAmount() + withdrawalOrders.getAmount());
+            memberRevenue.setObjId(withdrawalOrders.getId());
+            memberRevenue.setRemark(Constants.RevenueType.getInfo(memberRevenue.getType()));
+            memberRevenue.setObjType(Constants.ONE);
+            memberRevenue.setDeleted(Constants.ZERO);
+            memberRevenue.setStatus(Constants.ZERO);
+            memberRevenueMapper.insert(memberRevenue);
+
+        }
+    }
+
+    @Override
     public void cancelTransfer(TransferToUser.CancelTransferRequest request){
         if(Objects.isNull(request)
         || StringUtils.isEmpty(request.outBillNo)){

--
Gitblit v1.9.3