From fbb35a6b9ed181fa7e5d7bc1fb0c3318a1d18db1 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期二, 14 一月 2025 13:50:33 +0800 Subject: [PATCH] 12.18 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 106 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 88 insertions(+), 18 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index 51132ee..ac038fe 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -8,11 +8,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient; +import com.ruoyi.account.api.feignClient.UserCouponClient; import com.ruoyi.account.api.feignClient.UserPointClient; import com.ruoyi.account.api.model.*; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.utils.uuid.QRCodeGenerator; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.enums.OrderStatus; @@ -27,6 +29,7 @@ import com.ruoyi.order.util.payment.PaymentUtil; import com.ruoyi.order.util.payment.model.RefundCallbackResult; import com.ruoyi.order.util.payment.model.RefundResult; +import com.ruoyi.order.util.vo.MapTrackKD100Vo; import com.ruoyi.order.util.vo.QueryKD100Vo; import com.ruoyi.order.vo.*; import com.ruoyi.other.api.domain.*; @@ -34,13 +37,16 @@ import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -99,9 +105,15 @@ private TechnicianSubscribeClient technicianSubscribeClient; @Resource private ShopBalanceStatementClient shopBalanceStatementClient; + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private SystemConfigClient systemConfigClient; @Resource - private OrderGoodService orderGoodService; + private UserCouponClient userCouponClient; @@ -147,9 +159,8 @@ // 收货地址 String addressJson = order.getAddressJson(); UserAddress userAddress = new UserAddress(); - if (StringUtils.isNotEmpty(addressJson)){ + if (2 == order.getDistributionMode()){ userAddress = JSONObject.parseObject(addressJson, UserAddress.class); - } // 优惠券 String couponJson = order.getCouponJson(); @@ -165,13 +176,7 @@ orderActivityInfo = JSONObject.parseObject(activityJson, OrderActivityInfo.class); } OrderDetailVO orderDetailVO = new OrderDetailVO(); - - if (CollectionUtil.isNotEmpty(orderGoods)){ - String goodJson = orderGoods.get(0).getGoodJson(); - Goods goods = JSONObject.parseObject(goodJson, Goods.class); - orderDetailVO.setDistributionMode(goods.getDistributionMode()); - } - + orderDetailVO.setDistributionMode(order.getDistributionMode()); Technician technician = new Technician(); if (order.getTechnicianId() != null){ R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId()); @@ -187,6 +192,7 @@ orderDetailVO.setAddressId(userAddress.getId()); orderDetailVO.setRecieveName(userAddress.getRecieveName()); orderDetailVO.setRecievePhone(userAddress.getRecievePhone()); + userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress()); orderDetailVO.setRecieveAddress(userAddress.getRecieveAddress()); orderDetailVO.setOrderNumber(order.getOrderNumber()); orderDetailVO.setCreateTime(order.getCreateTime()); @@ -204,6 +210,22 @@ orderDetailVO.setLatitude(shop.getLatitude()); orderDetailVO.setShopId(shop.getId()); orderDetailVO.setTechnicianName(technician.getName()); + orderDetailVO.setTechnicianId(technician.getId()); + if(order.getOrderType() == 1){ + List<TechnicianSubscribe> data = technicianSubscribeClient.getTechnicianSubscribeList(order.getId()).getData(); + if(data.size() > 0){ + Long id = data.get(0).getId(); + orderDetailVO.setTechnicianSubscribeId(id.toString()); + } + } + // 生成核销码BASE64 + try { + String base64 = QRCodeGenerator.generateQRCodeBase64(order.getOrderNumber(), 124, 124); + orderDetailVO.setWriteOffCode(base64); + } catch (Exception e) { + e.printStackTrace(); + throw new ServiceException("生成核销码失败"); + } return orderDetailVO; } @@ -438,6 +460,7 @@ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); + balanceChangeRecord.setVipId(appUser.getVipId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); balanceChangeRecord.setChangeAmount(paymentAmount); @@ -484,6 +507,12 @@ userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); + //回退优惠券状态 + if(null != order.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData(); + userCoupon.setUseTime(null); + userCouponClient.editReturnUse(userCoupon); + } } if(3 == payMethod){ //开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款 @@ -512,6 +541,7 @@ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); + balanceChangeRecord.setVipId(appUser.getVipId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); balanceChangeRecord.setChangeAmount(expressAmount); @@ -608,6 +638,13 @@ userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); + + //回退优惠券状态 + if(null != order.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData(); + userCoupon.setUseTime(null); + userCouponClient.editReturnUse(userCoupon); + } return R.ok(); } @@ -733,17 +770,13 @@ orderInfo.setExpressAmount(order.getExpressAmount()); orderInfo.setPaymentAmount(order.getPaymentAmount()); orderInfo.setGetPoint(order.getGetPoint()); - if(StringUtils.isNotEmpty(order.getAddressJson())){ + if(2 == order.getDistributionMode()){ UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone()); + userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress()); orderInfo.setAddress(userAddress.getRecieveAddress()); - } - if(StringUtils.isNotEmpty(order.getExpressJson())){ - JSONObject jsonObject = JSON.parseObject(order.getExpressJson()); - String com = jsonObject.getString("com"); - String num = jsonObject.getString("num"); - QueryKD100Vo queryKD100Vo = ExpressDeliveryUtil.kd100QueryTrack(com, num); - orderInfo.setExpress(queryKD100Vo); + MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(order.getExpressResult(), MapTrackKD100Vo.class); + orderInfo.setExpress(mapTrackKD100Vo); } List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0)); int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum(); @@ -807,4 +840,41 @@ public Integer getShopSaleNum(Integer shopId, Integer type) { return this.baseMapper.getShopSaleNum(shopId, type); } + + + /** + * 定时查询快递信息 + */ + @Override + public void taskExpress() { + Set<Long> order_express = redisTemplate.opsForZSet().rangeByScore("order_express", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)); + if(order_express.size() > 0){ + for (Long id : order_express) { + Order order = this.getById(id); + if(order.getOrderStatus() != 2){ + redisTemplate.opsForZSet().remove("order_express", id); + continue; + } + String expressJson = order.getExpressJson(); + if(StringUtils.isEmpty(expressJson)){ + redisTemplate.opsForZSet().remove("order_express", id); + continue; + } + //{"com":"jd","num":"JDV016336234367"} + JSONObject jsonObject = JSON.parseObject(expressJson); + String com = jsonObject.getString("com"); + String num = jsonObject.getString("num"); + UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); + MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack(com, num, order.getDeliverProvince() + order.getDeliverCity(), + userAddress.getProvince() + userAddress.getCity()); + order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); + this.updateById(order); + //延长时间x小时 + SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); + JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); + Integer waitTime = jsonObject1.getInteger("waitTime"); + redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); + } + } + } } -- Gitblit v1.7.1