From 70f25657a7f1c5b1bfb1189759b9fa6f33b6922e Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期一, 09 十月 2023 13:35:48 +0800 Subject: [PATCH] 集成mqtt --- server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 157 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 143 insertions(+), 14 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 888b31f..ca87427 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 @@ -9,6 +9,7 @@ import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; +import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.DateUtil; @@ -22,19 +23,18 @@ import com.doumee.dao.business.model.Goodsorder; import com.doumee.dao.business.model.Member; import com.doumee.dao.business.model.MemberRides; -import com.doumee.dao.business.web.response.HomeResponse; +import com.doumee.dao.business.web.response.*; import com.doumee.dao.business.join.MemberRidesJoinMapper; import com.doumee.dao.business.model.*; -import com.doumee.dao.business.web.response.GoodsorderDetailDTO; -import com.doumee.dao.business.web.response.MemberRidesResponse; -import com.doumee.dao.business.web.response.PayOrderDTO; import com.doumee.service.business.GoodsorderService; +import com.doumee.service.business.PricingRuleService; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +51,7 @@ import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; @Service public class GoodsorderServiceImpl implements GoodsorderService { @@ -74,14 +75,14 @@ @Autowired private BaseParamMapper baseParamMapper; - - - @Autowired private RefundMapper refundMapper; @Autowired private MemberRidesJoinMapper memberRidesJoinMapper; + + @Autowired + PricingRuleService pricingRuleService; @Override public String create(Goodsorder goodsorder) { @@ -221,8 +222,8 @@ } return homeResponse; } - - + @Autowired + private TransactionsMapper transactionsMapper; @Override @@ -237,7 +238,7 @@ PayOrderDTO payOrderDTO = new PayOrderDTO(); payOrderDTO.setOrderCode(goodsorder.getCode()); - payOrderDTO.setPayType(goodsorder.getPayWay()); + payOrderDTO.setPayWay(goodsorder.getPayWay()); payOrderDTO.setMoney(goodsorder.getMoney()); payOrderDTO.setPayDate(goodsorder.getPayDate()); payOrderDTOList.add(0,payOrderDTO); @@ -245,7 +246,8 @@ refunds.forEach(s->{ PayOrderDTO refundOrderDTO = new PayOrderDTO(); refundOrderDTO.setOrderCode(s.getCode()); - refundOrderDTO.setPayType(s.getPayWay()); + refundOrderDTO.setPayWay(s.getPayWay()); + refundOrderDTO.setRefundType(s.getType()); refundOrderDTO.setMoney(s.getMoney()); refundOrderDTO.setPayDate(s.getDoneDate()); payOrderDTOList.add(refundOrderDTO); @@ -262,15 +264,125 @@ } @Override - public Goodsorder closerGoodsorder(String id) { + public void closerGoodsorder(String id) { + + LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Goodsorder goodsorder = goodsorderMapper.selectById(id); + QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(MemberRides::getOrdreId,id); + List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); + if (!CollectionUtils.isEmpty(memberRides)){ + boolean exitUnBack = memberRides.stream().anyMatch(s -> !Constants.MEMBER_RIDES_STATUS.BACK_CYCLING.getKey().equals(s.getStatus())); + if (exitUnBack){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠璁㈠崟鏈夋湭瀹屾垚鐨勯獞琛岋紝鏃犳硶寮哄埗缁撶畻"); + } + + PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides); + RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); + List<MemberRidesResponse> collect = memberRides.stream().map(s -> { + MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); + memberRidesResponse.setRideStartTime(s.getRentDate()); + memberRidesResponse.setRideEndTime(s.getBackDate()); + memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime())); + memberRidesResponse.setDuration(s.getDuration()); + memberRidesResponse.setBikeType(s.getParamName()); + memberRidesResponse.setBikeCode(s.getBikeCode()); + memberRidesResponse.setBasePrice(s.getBasePrice()); + memberRidesResponse.setBaseTime(s.getBaseTime()); + memberRidesResponse.setUnitPrice(s.getUnitTime()); + memberRidesResponse.setUnitTime(s.getUnitTime()); + return memberRidesResponse; + }).collect(Collectors.toList()); + + Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum(); + if (durationSum > pricingRule.getMemberRides().getBaseTime()){ + BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice(); + BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice().multiply(new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime()))); + ridesDetailResponse.setAmount(basePrice.add(multiply)); + }else { + ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice()); + } + ridesDetailResponse.setBikeType(pricingRule.getBikeType()); + ridesDetailResponse.setDuration(durationSum); + ridesDetailResponse.setMemberRidesResponseList(collect); - - return null; + Refund refund = new Refund(); + refund.setCreateDate(new Date()); + refund.setCreator(principal.getId()); + refund.setEditDate(new Date()); + refund.setEditor(principal.getId()); + refund.setIsdeleted(Constants.ZERO); + refund.setInfo("绯荤粺缁撶畻鍚庤鍗曡嚜鍔ㄥ畬缁�"); +// refund.setCode(); + refund.setMemberId(goodsorder.getMemberId()); + refund.setMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount())); +// refund.setStatus(); +// refund.setPreOrderid(); +// refund.setOnlineOrderid(); + refund.setPayWay(goodsorder.getPayWay()); + refund.setDoneDate(new Date()); + refund.setType(Constants.ONE); + refund.setObjId(goodsorder.getId()); + refund.setReason("纭畾寮哄埗缁撶畻鍚楋紵缁撶畻鍚庤鍗曡嚜鍔ㄥ畬缁�"); + refundMapper.insert(refund); + Goodsorder update = new Goodsorder(); + update.setId(goodsorder.getId()); + update.setStatus(Constants.GOODSORDER_STATUS.CLOSE.getKey()); + update.setCloseMoney(goodsorder.getMoney().subtract(ridesDetailResponse.getAmount())); + update.setCloseId(refund.getId()); + update.setCloseDate(refund.getDoneDate()); + update.setCloseInfo(refund.getInfo()); + update.setCloseUserId(principal.getId()); + update.setCloseType(Constants.ONE); + goodsorderMapper.updateById(update); + } } + + @Override + public RidesDetailResponse getRidesDetailResponse(String id) { + + QueryWrapper<MemberRides> wrapper = new QueryWrapper<>(); + wrapper.lambda() + .eq(MemberRides::getOrdreId,id); + List<MemberRides> memberRides = memberRidesMapper.selectList(wrapper); + if (!CollectionUtils.isEmpty(memberRides)){ + PricingRuleDTO pricingRule = pricingRuleService.getPricingRule(memberRides); + RidesDetailResponse ridesDetailResponse = new RidesDetailResponse(); + List<MemberRidesResponse> collect = memberRides.stream().map(s -> { + MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); + memberRidesResponse.setRideStartTime(s.getRentDate()); + memberRidesResponse.setRideEndTime(s.getBackDate()); + memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(), memberRidesResponse.getRideEndTime())); + memberRidesResponse.setDuration(s.getDuration()); + memberRidesResponse.setBikeType(s.getParamName()); + memberRidesResponse.setBikeCode(s.getBikeCode()); + memberRidesResponse.setBasePrice(s.getBasePrice()); + memberRidesResponse.setBaseTime(s.getBaseTime()); + memberRidesResponse.setUnitPrice(s.getUnitTime()); + memberRidesResponse.setUnitTime(s.getUnitTime()); + return memberRidesResponse; + }).collect(Collectors.toList()); + + Integer durationSum = memberRides.stream().filter(s -> s.getDuration() > 0).mapToInt(s -> s.getDuration()).sum(); + if (durationSum > pricingRule.getMemberRides().getBaseTime()){ + BigDecimal basePrice = pricingRule.getMemberRides().getBasePrice(); + BigDecimal multiply = pricingRule.getMemberRides().getUnitPrice().multiply(new BigDecimal((durationSum - pricingRule.getMemberRides().getBaseTime()))); + ridesDetailResponse.setAmount(basePrice.add(multiply)); + }else { + ridesDetailResponse.setAmount(pricingRule.getMemberRides().getBasePrice()); + } + ridesDetailResponse.setBikeType(pricingRule.getBikeType()); + ridesDetailResponse.setDuration(durationSum); + ridesDetailResponse.setMemberRidesResponseList(collect); + return ridesDetailResponse; + } + + return new RidesDetailResponse(); + } @Override public Object createGoodsOrderPay(String memberId){ @@ -328,6 +440,23 @@ goodsorder.setPayDate(new Date()); goodsorder.setEditDate(new Date()); goodsorderMapper.updateById(goodsorder); + //瀛樺偍浜ゆ槗娴佹按琛� + Transactions transactions = new Transactions(); + transactions.setMemberId(goodsorder.getMemberId()); + transactions.setCreateDate(new Date()); + transactions.setIsdeleted(Constants.ZERO); + transactions.setOrderId(goodsorder.getId()); + transactions.setMoney(goodsorder.getMoney()); + transactions.setType(Constants.transactionsType.deposit); + transactions.setPreOrderid(goodsorder.getPreOrderid()); + transactions.setOnlineOrderid(goodsorder.getOnlineOrderid()); + transactions.setDoneDate(new Date()); + transactions.setTitle("鏀粯"); + transactions.setContent("鎶奸噾鏀粯"); + transactions.setBalance(goodsorder.getMoney()); + transactions.setObjId(goodsorder.getId()); + transactions.setObjType(Constants.ZERO); + transactionsMapper.insert(transactions); return WxPayNotifyResponse.success("澶勭悊鎴愬姛!"); } -- Gitblit v1.9.3