From d0378c7fce817dff8d8a180ea4d23b11bda6d1bc Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 22 八月 2025 11:10:40 +0800
Subject: [PATCH] 前端
---
server/services/src/main/java/com/doumee/service/business/impl/WithdrawalOrdersServiceImpl.java | 61 +++++++++++++++++++++++++++---
1 files changed, 54 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 ef8c562..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,21 +211,22 @@
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());
+ memberRevenue.setTransactionNo(withdrawalOrders.getOutBillNo());
+ memberRevenue.setDeleted(Constants.ZERO);
memberRevenue.setMemberId(member.getId());
memberRevenue.setType(Constants.THREE);
memberRevenue.setOptType(-Constants.ONE);
@@ -243,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