From 3b48dbfe08bf2bcaeba2f8f9ff63f1599407fcdd Mon Sep 17 00:00:00 2001 From: jiaosong <jiaosong6760@dingtalk.com> Date: 星期一, 23 十月 2023 14:53:29 +0800 Subject: [PATCH] #调整记录修改单位 --- server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 148 +++++++++++++++++++++++++++++-------------------- 1 files changed, 88 insertions(+), 60 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 0b87604..4bfa8dc 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; @@ -226,7 +227,16 @@ public PageData<Goodsorder> findPage(PageWrap<Goodsorder> pageWrap) { IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel()); - return PageData.from(goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class,queryWrapper)); + queryWrapper.select("(select er.status from member_rides er where er.ordre_id=t.id order by er.create_date limit 1) as memberRidesStatus"); + IPage<Goodsorder> goodsorderIPage = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper); + if (!CollectionUtils.isEmpty(goodsorderIPage.getRecords())){ + goodsorderIPage.getRecords().forEach(s->{ + s.setMoney(Constants.translateMoney(s.getMoney())); + s.setCloseMoney(Constants.translateMoney(s.getCloseMoney())); + s.setRefundMoney(Constants.translateMoney(s.getRefundMoney())); + }); + } + return PageData.from(goodsorderIPage); } @@ -245,11 +255,11 @@ systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode() ; homeResponse.setParkName(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PROJECT_NAME).getCode()); homeResponse.setServerPhone(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.SERVER_PHONE).getCode()); - homeResponse.setLeaseNoticeUrl(fullPath + systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE_URL).getCode()); + homeResponse.setLeaseNoticeUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE_URL).getCode()); homeResponse.setLeaseNotice(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.LEASE_NOTICE).getCode()); - homeResponse.setDeposit(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode())); + homeResponse.setDeposit(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()).multiply(BigDecimal.valueOf(100))); homeResponse.setTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.TIPS).getCode()); - homeResponse.setLeaseVideoUrl(fullPath + systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode()); + homeResponse.setLeaseVideoUrl(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_TIPS_VIDEO).getCode()); homeResponse.setStopServeTips(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_TIPS).getCode()); homeResponse.setIsStopServe(this.checkTemporaryStop()?1:0); homeResponse.setIsBusiness(this.checkBusiness()?0:1); @@ -334,12 +344,13 @@ if (!CollectionUtils.isEmpty(refunds)){ refunds.forEach(s->{ PayOrderDTO refundOrderDTO = new PayOrderDTO(); - refundOrderDTO.setOrderCode(s.getCode()); + refundOrderDTO.setOrderCode(s.getObjId()); refundOrderDTO.setId(s.getId()); refundOrderDTO.setPayWay(s.getPayWay()); refundOrderDTO.setRefundType(s.getType()); refundOrderDTO.setMoney(Constants.translateMoney(s.getMoney())); refundOrderDTO.setPayDate(s.getDoneDate()); + refundOrderDTO.setOnlineorderId(s.getOnlineOrderid()); payOrderDTOList.add(refundOrderDTO); }); } @@ -399,8 +410,8 @@ Goodsorder update = new Goodsorder(); update.setId(goodsorder.getId()); update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); - update.setCloseMoney(goodsorder.getMoney()); - update.setCloseDate(goodsorder.getEndDate()); + update.setCloseMoney(closeMoney); + update.setCloseDate(new Date()); update.setCloseInfo(Constants.REFUND_TYPE.get(type).getInfo()); update.setCloseUserId(goodsorder.getEditor()); if(Constants.REFUND_TYPE.PLAT_FORCE.getKey() == type){ @@ -426,23 +437,23 @@ refundDTO.setType(type); Refund refund = wxMiniUtilService.wxRefund(refundDTO); update.setCloseId(refund.getId()); - //瀛樺偍 娑堣垂浜ゆ槗娴佹按 - Transactions transactions = new Transactions(); - transactions.setId(Constants.getUUID()); - transactions.setMemberId(goodsorder.getMemberId()); - transactions.setCreateDate(new Date()); - transactions.setIsdeleted(Constants.ZERO); - transactions.setOrderId(goodsorder.getId()); - transactions.setMoney(goodsorder.getMoney().subtract(new BigDecimal(refundMoney))); - transactions.setType(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getKey()); - transactions.setDoneDate(new Date()); - transactions.setTitle(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getName()); - transactions.setContent(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getInfo()); - transactions.setBalance(BigDecimal.ZERO); - transactions.setObjId(goodsorder.getId()); - transactions.setObjType(Constants.ONE); - transactionsMapper.insert(transactions); } + //瀛樺偍 娑堣垂浜ゆ槗娴佹按 + Transactions transactions = new Transactions(); + transactions.setId(Constants.getUUID()); + transactions.setMemberId(goodsorder.getMemberId()); + transactions.setCreateDate(new Date()); + transactions.setIsdeleted(Constants.ZERO); + transactions.setOrderId(goodsorder.getId()); + transactions.setMoney(goodsorder.getMoney().subtract(new BigDecimal(refundMoney))); + transactions.setType(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getKey()); + transactions.setDoneDate(new Date()); + transactions.setTitle(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getName()); + transactions.setContent(Constants.TRANSACTIONS_TYPE.CONSUMPTION.getInfo()); + transactions.setBalance(BigDecimal.ZERO); + transactions.setObjId(goodsorder.getId()); + transactions.setObjType(Constants.ONE); + transactionsMapper.insert(transactions); //淇敼璁㈠崟淇℃伅 goodsorderMapper.updateById(update); } @@ -484,7 +495,8 @@ wrapper.eq(MemberRides::getOrdreId,id); wrapper.selectAll(MemberRides.class).selectAs(BaseParam::getName, MemberRides::getParamName); wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId); - wrapper.orderByDesc(BaseParam::getSortnum);//鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗� + wrapper.orderByDesc(BaseParam::getSortnum); + //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗� //鏌ヨ鎵�鏈夐獞琛岃褰� List<MemberRides> memberRides = memberRidesJoinMapper.selectList(wrapper); return memberRides; @@ -494,28 +506,35 @@ 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.translateMoney(Constants.formatDecimalNum(goodsorder.getMoney()).subtract(refundMoney)); if(canBalance.compareTo(money) > Constants.ZERO){ RefundDTO refundDTO = new RefundDTO(); refundDTO.setOrderId(orderId); - refundDTO.setCanBalance(lastRefund.getCanBalance().subtract(lastRefund.getMoney())); - refundDTO.setRefundAmount(money); + refundDTO.setCanBalance(canBalance); + refundDTO.setRefundAmount(money.multiply(new BigDecimal(100))); 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); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝閫�娆鹃噾棰濅笉鍏佽瓒呰繃"+canBalance+"鍏�"); } } @@ -529,20 +548,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()); - } + goodsorderCanBanlanceDTO.setGoodsorderMoney( Constants.translateMoney(goodsorder.getMoney())); + goodsorderCanBanlanceDTO.setCloseMoney(Constants.translateMoney(goodsorder.getCloseMoney())); + BigDecimal reduce = total!=null?Constants.formatDecimalNum(total.getMoney()):new BigDecimal(0); + goodsorderCanBanlanceDTO.setHasRefundMoney(Constants.translateMoney(reduce)); + goodsorderCanBanlanceDTO.setCanBanlanceMoney(Constants.translateMoney(goodsorder.getMoney()).subtract(goodsorderCanBanlanceDTO.getHasRefundMoney())); return goodsorderCanBanlanceDTO; } @@ -605,7 +620,9 @@ if(goodsorder ==null){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } - List<MemberRides> memberRides = getMemberRidesForClose(id); + + List<MemberRides> memberRides = memberRidesJoinMapper.selectList(new QueryWrapper<MemberRides>() + .lambda().eq(MemberRides::getOrdreId,id).orderByDesc(MemberRides::getCreateDate)); if (!CollectionUtils.isEmpty(memberRides)){ //棰勮缁撶畻浠锋牸鍜岃绠楁椂闀� int freeTime = 0; @@ -621,7 +638,11 @@ memberRidesResponse.setRideStartTime(s.getRentDate()); memberRidesResponse.setRideEndTime(endTime); memberRidesResponse.setRideTime(rideTime); - memberRidesResponse.setDuration(s.getDuration()); + if(!s.getStatus().equals(Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey())){ + memberRidesResponse.setDuration(finalFreeTime >= rideTime?0:rideTime); + }else{ + memberRidesResponse.setDuration(s.getDuration()); + } memberRidesResponse.setBikeType(s.getParamName()); memberRidesResponse.setBikeCode(s.getBikeCode()); memberRidesResponse.setBasePrice(s.getBasePrice()); @@ -630,7 +651,7 @@ memberRidesResponse.setUnitTime(s.getUnitTime()); if ( Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(s.getStatus()))){ //濡傛灉鏄獞琛屼腑 - s.setDuration(rideTime> finalFreeTime ?(rideTime- finalFreeTime):0); + s.setDuration(rideTime> finalFreeTime ?(rideTime):0); } s.setRideTime(rideTime); return memberRidesResponse; @@ -673,8 +694,9 @@ 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.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode()).multiply(new BigDecimal(100))); goodsorder.setStatus(Constants.goodsorderStatus.waitPay); goodsorder.setPreOrderid(goodsorder.getId()); goodsorder.setPayStatus(Constants.goodsorderPayStatus.waitPay); @@ -687,8 +709,7 @@ request.setBody("鏀粯鎶奸噾"); request.setAttach("createGoodsOrder"); request.setOutTradeNo(goodsorder.getId()); - request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); -// request.setTotalFee(1); + request.setTotalFee(goodsorder.getMoney().intValue()); request.setSpbillCreateIp(this.getIpAddr()); request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss")); request.setOpenid(member.getOpenid()); @@ -710,8 +731,12 @@ LocalTime currentTime = LocalTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); String nowTime = currentTime.format(formatter); - if(Integer.valueOf(nowTime.replace(":",""))<= Integer.valueOf(businessStartTime.replace(":","")) - ||Integer.valueOf(nowTime.replace(":","")) > Integer.valueOf(businessEndTime.replace(":",""))){ + try { + if(Integer.valueOf(nowTime.replace(":",""))<= Integer.valueOf(businessStartTime.replace(":","")) + ||Integer.valueOf(nowTime.replace(":","")) > Integer.valueOf(businessEndTime.replace(":",""))){ + return true; + } + }catch (Exception e){ return true; } return false; @@ -722,7 +747,7 @@ */ @Override public Boolean checkTemporaryStop(){ - if(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.IS_STOP_SERVE).getCode().equals(Constants.ONE)){ + if(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.IS_STOP_SERVE).getCode().equals(Constants.ONE.toString())){ String stopServeStartTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_STARTTIME).getCode(); String stopServeEndTime = systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.STOP_SERVE_ENDTIME).getCode(); //鏌ヨ褰撳墠鏃堕棿鏄惁鍦ㄥ仠姝腑 @@ -762,11 +787,14 @@ } @Override - public void goodsOrderSettlement(String orderId) { - if(StringUtils.isBlank(orderId)){ - throw new BusinessException(ResponseStatus.BAD_REQUEST ); + public void goodsOrderSettlement(String memberId) { + Goodsorder goodsorder = this.goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>() + .eq("member_id",memberId) + .eq("status",Constants.goodsorderStatus.pay) + .last(" limit 1 ")); + if(Objects.isNull(goodsorder)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犻獞琛岃鍗曡褰�"); } - Goodsorder goodsorder = goodsorderMapper.selectById(orderId); if(goodsorder == null ){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } -- Gitblit v1.9.3