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