From 1b0cf0db5c82ea8308d2f338973a91555787c34d Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 18 三月 2025 11:17:23 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 141 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 110 insertions(+), 31 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 99b728c..f31398b 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 @@ -20,6 +20,7 @@ import com.doumee.dao.business.*; import com.doumee.dao.business.MemberRidesMapper; import com.doumee.dao.business.join.GoodsorderJoinMapper; +import com.doumee.dao.business.join.RefundJoinMapper; import com.doumee.dao.business.model.Bikes; import com.doumee.dao.business.model.Goodsorder; import com.doumee.dao.business.model.Member; @@ -86,6 +87,8 @@ @Autowired private RefundMapper refundMapper; + @Autowired + private RefundJoinMapper refundJoinMapper; @Autowired private MemberRidesJoinMapper memberRidesJoinMapper; @@ -170,8 +173,59 @@ public PageData<GoodsorderExportVO> findAccountDetailPage(PageWrap<Goodsorder> pageWrap) { IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); pageWrap.getModel().setPayStatus(Constants.ONE); //鍙煡璇㈡敮浠樻垚鍔熺殑 - MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel()); - IPage<GoodsorderExportVO> goodsorderExportVOIPage = goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper); + Goodsorder model = pageWrap.getModel(); + Utils.MP.blankToNull(model); + IPage<GoodsorderExportVO> goodsorderExportVOIPage = null; + if (Constants.formatIntegerNum(model.getType())==Constants.ZERO){ + MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAll(Goodsorder.class); + queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid); + queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId); + queryWrapper.select("(select max(r.done_date) from refund r where r.obj_id=t.id and r.status=2 ) as refund_date"); + queryWrapper.select("(select sum(r.money) from refund r where r.obj_id=t.id and r.status=2) as refund_money"); + //鏃堕棿娈电瓫閫� + if (Objects.nonNull(model.getStartDate())){ + queryWrapper.ge(Goodsorder::getPayDate, Utils.Date.getStart(model.getStartDate())); + } + if (Objects.nonNull(model.getEndDate())){ + queryWrapper.le( Goodsorder::getPayDate, Utils.Date.getEnd(model.getEndDate())); + } + +// queryWrapper.eq(model.getPayStatus() !=null,Goodsorder::getPayStatus,model.getPayStatus()); +// queryWrapper.like(model.getCode() !=null,Goodsorder::getCode,model.getCode()); +// queryWrapper.like(model.getId() !=null,Goodsorder::getId,model.getId()); +// queryWrapper.eq(model.getStatus() !=null,Goodsorder::getStatus,model.getStatus()); +// queryWrapper.like(model.getOnlineOrderid() !=null,Goodsorder::getOnlineOrderid,model.getOnlineOrderid()); +// queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid()); + queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); + queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE); + queryWrapper.orderByAsc(Goodsorder::getPayDate); + goodsorderExportVOIPage = goodsorderJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper); + }else{ + MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAs(Refund::getMoney,GoodsorderExportVO::getRefundMoney); + queryWrapper.selectAs(Refund::getDoneDate,GoodsorderExportVO::getRefundDate); + queryWrapper.selectAs(Goodsorder::getCloseMoney,GoodsorderExportVO::getCloseMoney); + queryWrapper.selectAs(Goodsorder::getMoney,GoodsorderExportVO::getMoney); + queryWrapper.selectAs(Goodsorder::getId,GoodsorderExportVO::getId); + queryWrapper.selectAs(Goodsorder::getCode,GoodsorderExportVO::getCode); + queryWrapper.selectAs(Goodsorder::getPayDate,GoodsorderExportVO::getPayDate); + queryWrapper.selectAs(Member::getOpenid, GoodsorderExportVO::getOpenid); + queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId ,Refund::getObjId); + queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId ,Refund::getObjId); + queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId); + //鏃堕棿娈电瓫閫� + if (Objects.nonNull(model.getStartDate())){ + queryWrapper.ge(Refund::getDoneDate, Utils.Date.getStart(model.getStartDate())); + } + if (Objects.nonNull(model.getEndDate())){ + queryWrapper.le( Refund::getDoneDate, Utils.Date.getEnd(model.getEndDate())); + } + queryWrapper.eq(Refund::getStatus,Constants.TWO);//閫�娆惧畬鎴� + queryWrapper.orderByAsc(Refund::getDoneDate); + goodsorderExportVOIPage = refundJoinMapper.selectJoinPage(page, GoodsorderExportVO.class, queryWrapper); + } + if (!CollectionUtils.isEmpty(goodsorderExportVOIPage.getRecords())){ goodsorderExportVOIPage.getRecords().forEach(s->{ s.setMoney(Constants.translateMoney(s.getMoney())); @@ -184,8 +238,36 @@ @Override public List<GoodsorderExportVO> findExportAccountDetailPage(Goodsorder model){ model.setPayStatus(Constants.ONE); //鍙煡璇㈡敮浠樻垚鍔熺殑 - MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(model); - List<GoodsorderExportVO> goodsorderList = goodsorderJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper); + List<GoodsorderExportVO> goodsorderList = null; + if(Constants.formatIntegerNum(model.getType())==Constants.ZERO){ + MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(model); + queryWrapper.orderByAsc(Goodsorder::getPayDate); + goodsorderList = goodsorderJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper); + + }else{ + MPJLambdaWrapper<Refund> queryWrapper = new MPJLambdaWrapper<>(); + queryWrapper.selectAs(Refund::getMoney,GoodsorderExportVO::getRefundMoney); + queryWrapper.selectAs(Refund::getDoneDate,GoodsorderExportVO::getRefundDate); + queryWrapper.selectAs(Goodsorder::getCode,GoodsorderExportVO::getCode); + queryWrapper.selectAs(Goodsorder::getId,GoodsorderExportVO::getId); + queryWrapper.selectAs(Goodsorder::getPayDate,GoodsorderExportVO::getPayDate); + queryWrapper.selectAs(Goodsorder::getCloseMoney,GoodsorderExportVO::getCloseMoney); + queryWrapper.selectAs(Goodsorder::getMoney,GoodsorderExportVO::getMoney); + queryWrapper.selectAs(Member::getOpenid, GoodsorderExportVO::getOpenid); + queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId ,Refund::getObjId); + queryWrapper.leftJoin(Goodsorder.class, Goodsorder::getId ,Refund::getObjId); + queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId); + //鏃堕棿娈电瓫閫� + if (Objects.nonNull(model.getStartDate())){ + queryWrapper.ge(Refund::getDoneDate, Utils.Date.getStart(model.getStartDate())); + } + if (Objects.nonNull(model.getEndDate())){ + queryWrapper.le( Refund::getDoneDate, Utils.Date.getEnd(model.getEndDate())); + } + queryWrapper.eq(Refund::getStatus,Constants.TWO);//閫�娆惧畬鎴� + queryWrapper.orderByAsc(Refund::getDoneDate);; + goodsorderList = refundJoinMapper.selectJoinList(GoodsorderExportVO.class,queryWrapper); + } if (!CollectionUtils.isEmpty(goodsorderList)){ goodsorderList.forEach(s->{ s.setMoney(Constants.translateMoney(s.getMoney())); @@ -193,27 +275,11 @@ s.setRefundMoney(Constants.translateMoney(s.getRefundMoney())); }); } - /* List<GoodsorderExportVO> list = new ArrayList<>(); - if(goodsorderList!=null){ - for(Goodsorder order : goodsorderList){ - GoodsorderExportVO vo = new GoodsorderExportVO(); - vo.setId(order.getId()); - vo.setCode(order.getCode()); - vo.setOpenid(order.getMemberOpenid()); - vo.setPayDate(order.getPayDate()); - vo.setCloseDate(order.getCloseDate()); - vo.setMoney(Constants.translateMoney(order.getMoney())); - vo.setCloseMoney(Constants.translateMoney(order.getCloseMoney())); - vo.setRefundDate(order.getRefundDate()); - vo.setRefundMoney(Constants.translateMoney(order.getRefundMoney())); - list.add(vo); - } - }*/ return goodsorderList; } private MPJLambdaWrapper<Goodsorder> initQueryParamByModel(Goodsorder model) { - MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(model); + MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(Goodsorder.class); queryWrapper.selectAs(Member::getOpenid, Goodsorder::getOpenid); queryWrapper.leftJoin(Member.class, Member::getId ,Goodsorder::getMemberId); @@ -235,7 +301,7 @@ queryWrapper.like(model.getOpenid() !=null,Member::getOpenid,model.getOpenid()); queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); queryWrapper.eq(Goodsorder::getPayStatus,Constants.ONE); - queryWrapper.orderByDesc(Goodsorder::getPayDate); + return queryWrapper; } @@ -244,6 +310,7 @@ public PageData<Goodsorder> findPage(PageWrap<Goodsorder> pageWrap) { IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper<Goodsorder> queryWrapper = initQueryParamByModel(pageWrap.getModel()); + queryWrapper.orderByDesc(Goodsorder::getPayDate); queryWrapper.select("(select er.status from member_rides er where er.ordre_id=t.id order by er.create_date desc limit 1) as memberRidesStatus"); if(Objects.nonNull(pageWrap.getModel().getCloseStatus()) && pageWrap.getModel().getCloseStatus().equals(Constants.ZERO)){ queryWrapper.ne(Goodsorder::getStatus,Constants.GOODSORDER_STATUS.CLOSE.getKey()); @@ -290,7 +357,7 @@ homeResponse.setAdList(adMapper.selectList(new QueryWrapper<Ad>() .eq("isdeleted",Constants.ZERO) .eq("status",Constants.ZERO) - .orderByDesc("create_date") + .orderByAsc("sortnum") ));; if(!Objects.isNull(homeResponse.getAdList())&&homeResponse.getAdList().size()>Constants.ZERO){ homeResponse.getAdList().forEach(i->{ @@ -412,13 +479,12 @@ @Override public void closeGoodsorder( Goodsorder goodsorder ,int type ) { -// List<MemberRides> memberRides = getMemberRidesForClose(goodsorder.getId()); //榛樿缁撶畻涓烘娂閲戦噾棰� BigDecimal closeMoney = new BigDecimal(0.00); if (!CollectionUtils.isEmpty(memberRides)){ //楠戣鎬绘椂闀� - closeMoney = getCloseMoneyByRides(memberRides,true).getAmount(); + closeMoney = getCloseMoneyByRides(memberRides,true,goodsorder.getMoney()).getAmount(); //瀹為檯缁撶畻浠锋牸锛岃褰曞湪鏈�楂樿溅鍨嬭褰曚笂 memberRides.get(0).setActualPrice(closeMoney); for(MemberRides model :memberRides){ @@ -487,18 +553,22 @@ goodsorderMapper.updateById(update); } - private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose) { + private RidesDetailResponse getCloseMoneyByRides(List<MemberRides> memberRides,boolean isClose,BigDecimal yjMoney) { RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); BigDecimal closeMoney = new BigDecimal(0.00); int durationSum = 0; + MemberRides topRides =memberRides.get(0); //鍙栨渶楂樿溅鍨嬭绠楁柟妗堢粨绠楄鍗� for(MemberRides rides : memberRides){ if ( isClose && Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()!=(Constants.formatIntegerNum(rides.getStatus()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻"); } durationSum += Constants.formatIntegerNum(rides.getDuration());//绱楠戣锛堣璐癸級鏃堕暱 + if(Constants.formatIntegerNum(topRides.getSortnum())<Constants.formatIntegerNum(rides.getSortnum())){ + topRides = rides; + } } - MemberRides topRides =memberRides.get(0); +// MemberRides topRides =memberRides.get(0); if(durationSum > 0 && topRides != null){ int baseTime =Constants.formatIntegerNum(topRides.getBaseTime()); closeMoney = Constants.formatDecimalNum(topRides.getBasePrice()); @@ -512,6 +582,10 @@ } } } + //濡傛灉璁㈠崟浠锋牸灏侀《浜嗭紝鍙栬鍗� 浠锋牸 + if(Constants.compareBigdecimal(closeMoney, yjMoney) ==1){ + closeMoney = yjMoney; + } ridesDetailResponse.setDuration(durationSum); ridesDetailResponse.setAmount(closeMoney); ridesDetailResponse.setBikeType(topRides.getParamName()); @@ -523,7 +597,9 @@ MPJLambdaWrapper<MemberRides> wrapper = new MPJLambdaWrapper<>(); wrapper.eq(MemberRides::getOrdreId,id); wrapper.ne(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.LOCKING_DEFEAT.getKey()); - wrapper.selectAll(MemberRides.class).selectAs(BaseParam::getName, MemberRides::getParamName); + wrapper.selectAll(MemberRides.class) + .selectAs(BaseParam::getSortnum, MemberRides::getSortnum) + .selectAs(BaseParam::getName, MemberRides::getParamName); wrapper.leftJoin(BaseParam.class, BaseParam::getId, MemberRides::getParamId); wrapper.orderByDesc(BaseParam::getSortnum); //鍙栨渶楂樿溅鍨嬩綔涓鸿浠锋柟妗� @@ -623,7 +699,8 @@ if(Constants.formatIntegerNum(goodsorder.getStatus()) == Constants.GOODSORDER_STATUS.CLOSE.getKey()){ //宸茬粨绠� model.setClosedNum(model.getClosedNum()+goodsorder.getCountNum()); - model.setClosedMoney(model.getClosedMoney().add(Constants.translateMoney(goodsorder.getCloseMoney()))); + //淇敼bug 缁撶畻鏀跺叆 = 鏀粯閲戦-閫�娆�-鏈粨绠� +// model.setClosedMoney(model.getClosedMoney().add(Constants.translateMoney(goodsorder.getCloseMoney()))); model.setPayNum(model.getPayNum()+goodsorder.getCountNum()); model.setPayMoney(model.getPayMoney().add(Constants.translateMoney(goodsorder.getMoney()))); @@ -652,6 +729,7 @@ model.setRefundNum(Constants.formatIntegerNum(refund.getCountNum())); model.setRefundMoney(Constants.translateMoney(Constants.formatDecimalNum(refund.getMoney()))); } + model.setClosedMoney(model.getPayMoney().subtract(model.getRefundMoney()).subtract(model.getUnClosedMoney())); return model; } @Override @@ -664,6 +742,7 @@ List<MemberRides> memberRides = memberRidesJoinMapper.selectJoinList(MemberRides.class,new MPJLambdaWrapper<MemberRides>() .selectAll(MemberRides.class) .selectAs(BaseParam::getName,MemberRides::getParamName) + .selectAs(BaseParam::getSortnum,MemberRides::getSortnum) .leftJoin(BaseParam.class,BaseParam::getId,MemberRides::getParamId) .eq(MemberRides::getOrdreId,id) .in(MemberRides::getStatus,Constants.MEMBER_RIDES_STATUS.RIDES_RUNNING.getKey(),Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey()) @@ -702,7 +781,7 @@ return memberRidesResponse; }).collect(Collectors.toList()); //绱鍜岄绠楃粨绠楅噾棰� - RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false);; + RidesDetailResponse ridesDetailResponse = getCloseMoneyByRides(memberRides,false,goodsorder.getMoney()); if(Constants.formatIntegerNum(goodsorder.getStatus())!= Constants.goodsorderStatus.pay){ //濡傛灉闈炲凡鏀粯浣嗘湭缁撶畻锛屼娇鐢ㄨ鍗曢噾棰� ridesDetailResponse.setAmount(goodsorder.getCloseMoney()); @@ -751,7 +830,7 @@ try { Object response = null; WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); - request.setBody("鏀粯鎶奸噾"); + request.setBody("楠戣鎶奸噾"); request.setAttach("createGoodsOrder"); request.setOutTradeNo(goodsorder.getId()); request.setTotalFee(goodsorder.getMoney().intValue()); -- Gitblit v1.9.3