From c96b05ab329834d16ec2aad7a35e66dfa02511c1 Mon Sep 17 00:00:00 2001 From: jiaosong <jiaosong6760@dingtalk.com> Date: 星期三, 18 十月 2023 11:40:34 +0800 Subject: [PATCH] #获取正常还车 --- server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 54 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 31 insertions(+), 23 deletions(-) diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java index 8d6d6c5..d080e2d 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java @@ -44,6 +44,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.checkerframework.checker.units.qual.A; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -494,26 +495,34 @@ public void backGoodsorder(String orderId, BigDecimal money,String reason) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Goodsorder goodsorder = goodsorderMapper.selectById(orderId); + if(goodsorder == null){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璁㈠崟淇℃伅涓嶅瓨鍦紝璇峰埛鏂伴〉闈㈤噸璇曪紒"); + } + if (Constants.formatIntegerNum(goodsorder.getStatus()) != Constants.GOODSORDER_STATUS.CLOSE.getKey()){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇ヨ鍗曡缁撶畻鍚庡啀閫�娆緙"); + } QueryWrapper<Refund> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Refund::getObjId,orderId) - .orderByDesc(Refund::getCreateDate) - .last("limit 1"); - Refund lastRefund = refundMapper.selectOne(wrapper); - if (Objects.isNull(lastRefund)){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏀硅鍗曡缁撶畻鍚庡湪閫�娆�"); - } - BigDecimal canBalance = lastRefund.getCanBalance(); + .eq(Refund::getStatus,Constants.TWO) + .eq(Refund::getIsdeleted,Constants.ZERO) ; + wrapper.select("sum(money) as money").last(" limit 1"); + Refund total = refundMapper.selectOne(wrapper); + BigDecimal refundMoney = total == null?new BigDecimal(0):Constants.formatDecimalNum(total.getMoney()); + BigDecimal canBalance =Constants.formatDecimalNum(goodsorder.getMoney()).subtract(money); if(canBalance.compareTo(money) > Constants.ZERO){ RefundDTO refundDTO = new RefundDTO(); refundDTO.setOrderId(orderId); - refundDTO.setCanBalance(lastRefund.getCanBalance().subtract(lastRefund.getMoney())); + refundDTO.setCanBalance(canBalance); refundDTO.setRefundAmount(money); refundDTO.setTotalAmount(goodsorder.getMoney()); refundDTO.setMemberId(goodsorder.getMemberId()); + refundDTO.setCreator(principal.getId()); refundDTO.setReason(reason); refundDTO.setType(Constants.REFUND_TYPE.BACK.getKey()); Refund refund = wxMiniUtilService.wxRefund(refundDTO); + }else { + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝閫�娆鹃噾棰濅笉鍏佽瓒呰繃"+canBalance); } } @@ -527,20 +536,16 @@ QueryWrapper<Refund> wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Refund::getObjId,orderId) - .orderByDesc(Refund::getCreateDate); - List<Refund> refunds = refundMapper.selectList(wrapper); + .eq(Refund::getStatus,Constants.TWO) + .eq(Refund::getIsdeleted,Constants.ZERO) ; + wrapper.select("sum(money) as money").last(" limit 1"); + Refund total = refundMapper.selectOne(wrapper); GoodsorderCanBanlanceDTO goodsorderCanBanlanceDTO = new GoodsorderCanBanlanceDTO(); goodsorderCanBanlanceDTO.setGoodsorderMoney(goodsorder.getMoney()); goodsorderCanBanlanceDTO.setCloseMoney(goodsorder.getCloseMoney()); - if (!CollectionUtils.isEmpty(refunds)){ - BigDecimal reduce = refunds.stream().map(s -> s.getMoney()).reduce(new BigDecimal("0"), (a, b) -> b.add(a)); - Refund refund = refunds.stream().findFirst().orElse(null); - goodsorderCanBanlanceDTO.setHasRefundMoney(reduce); - goodsorderCanBanlanceDTO.setCanBanlanceMoney(refund.getCanBalance().subtract(refund.getMoney())); - }else { - goodsorderCanBanlanceDTO.setHasRefundMoney(new BigDecimal("0")); - goodsorderCanBanlanceDTO.setCanBanlanceMoney(goodsorder.getMoney()); - } + BigDecimal reduce = total!=null?Constants.formatDecimalNum(total.getMoney()):new BigDecimal(0); + goodsorderCanBanlanceDTO.setHasRefundMoney(reduce); + goodsorderCanBanlanceDTO.setCanBanlanceMoney(Constants.formatDecimalNum(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney())); return goodsorderCanBanlanceDTO; } @@ -671,6 +676,7 @@ goodsorder.setId(Constants.getUUID()); goodsorder.setCreateDate(new Date()); goodsorder.setIsdeleted(Constants.ZERO); + goodsorder.setCode(goodsorder.getId()); goodsorder.setMemberId(memberId); goodsorder.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode())); goodsorder.setStatus(Constants.goodsorderStatus.waitPay); @@ -685,8 +691,8 @@ request.setBody("鏀粯鎶奸噾"); request.setAttach("createGoodsOrder"); request.setOutTradeNo(goodsorder.getId()); -// request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); - request.setTotalFee(1); + request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); +// request.setTotalFee(1); request.setSpbillCreateIp(this.getIpAddr()); request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss")); request.setOpenid(member.getOpenid()); @@ -745,8 +751,10 @@ Date date = new Date(); list.forEach(s->{ try { - goodsorder.setEditDate(date); - goodsorder.setEditor(null); + s.setEditDate(date); + s.setEditor(null); + s.setCloseDate(date); + closeGoodsorder(s,Constants.REFUND_TYPE.PLAT_AUTO.getKey()); }catch (BusinessException e){ -- Gitblit v1.9.3