From a8d2cb07f6440dc54dc4005b0b06d5a47cb1517d Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期一, 16 十二月 2024 13:34:03 +0800 Subject: [PATCH] 12.16 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 123 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 110 insertions(+), 13 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 d67a708..433629f 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 @@ -1,27 +1,39 @@ package com.ruoyi.order.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.AppUserShop; import com.ruoyi.account.api.model.UserAddress; +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.security.service.TokenService; +import com.ruoyi.order.enums.OrderStatus; import com.ruoyi.order.mapper.OrderGoodMapper; import com.ruoyi.order.mapper.OrderMapper; +import com.ruoyi.order.model.Order; +import com.ruoyi.order.model.OrderGood; +import com.ruoyi.order.service.CommissionService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.vo.OrderDetailVO; import com.ruoyi.order.vo.OrderGoodsVO; import com.ruoyi.order.vo.OrderVO; -import com.ruoyi.other.api.domain.CouponInfo; -import com.ruoyi.other.api.domain.Goods; -import com.ruoyi.other.api.domain.OrderActivityInfo; -import model.Order; -import model.OrderGood; +import com.ruoyi.other.api.domain.*; +import com.ruoyi.other.api.feignClient.BaseSettingClient; +import com.ruoyi.other.api.feignClient.ShopClient; +import com.ruoyi.other.api.feignClient.TechnicianClient; +import com.ruoyi.system.api.model.LoginUser; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -35,7 +47,21 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { @Resource private OrderMapper orderMapper; + @Resource private OrderGoodMapper orderGoodMapper; + @Resource + private AppUserClient appUserClient; + @Resource + private TokenService tokenService; + @Resource + private TechnicianClient technicianClient; + @Resource + private ShopClient shopClient; + @Resource + private CommissionService commissionService; + @Resource + private BaseSettingClient baseSettingClient; + @Override public List<OrderVO> selectOrderListByUserId(Integer status, Long userId) { @@ -51,6 +77,11 @@ if (order == null){ throw new ServiceException("订单不存在"); } + R<Shop> shopR = shopClient.getShopById(order.getShopId()); + if (!R.isSuccess(shopR)){ + throw new ServiceException("获取门店信息失败"); + } + // 商品 List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>() .eq(OrderGood::getOrderId, orderId)); @@ -59,17 +90,17 @@ for (OrderGood orderGood : orderGoods) { String goodJson = orderGood.getGoodJson(); Goods goods = JSONObject.parseObject(goodJson, Goods.class); - OrderGoodsVO orderGoodsVO = new OrderGoodsVO(); orderGoodsVO.setGoodsId(orderGood.getGoodsId()); + orderGoodsVO.setNum(orderGood.getNum()); orderGoodsVO.setGoodsName(goods.getName()); orderGoodsVO.setType(goods.getType()); - orderGoodsVO.setNum(orderGood.getNum()); orderGoodsVO.setGoodsPic(goods.getHomePagePicture()); orderGoodsVO.setSellingPrice(goods.getSellingPrice()); orderGoodsVO.setOriginalPrice(goods.getOriginalPrice()); goodsList.add(orderGoodsVO); } + // 收货地址 @@ -95,7 +126,24 @@ } 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()); + } + + Technician technician = new Technician(); + if (order.getTechnicianId() != null){ + R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId()); + if (shopdetail.getCode() != R.SUCCESS){ + throw new ServiceException("获取技师信息失败"); + } + technician = shopdetail.getData(); + } + Shop shop = shopR.getData(); orderDetailVO.setId(order.getId()); + orderDetailVO.setOrderStatus(order.getOrderStatus()); orderDetailVO.setPoint(order.getPoint()); orderDetailVO.setAddressId(userAddress.getId()); orderDetailVO.setRecieveName(userAddress.getRecieveName()); @@ -111,19 +159,68 @@ orderDetailVO.setPointAmount(order.getGetPoint()); orderDetailVO.setPaymentAmount(order.getPaymentAmount()); orderDetailVO.setGoodsList(goodsList); + orderDetailVO.setShopName(shop.getName()); + orderDetailVO.setShopAddress(shop.getAddress()); + orderDetailVO.setLongitude(shop.getLongitude()); + orderDetailVO.setLatitude(shop.getLatitude()); + orderDetailVO.setShopId(shop.getId()); + orderDetailVO.setTechnicianName(technician.getName()); return orderDetailVO; } @Override - public boolean check(String orderNumber, Long shopId) { - Order order = getOne(new LambdaQueryWrapper<Order>() - .eq(Order::getOrderNumber, orderNumber) - .eq(Order::getShopId, shopId)); - return order != null; + public boolean check(Order order, Integer shopId, Long userId) { + R<List<AppUserShop>> r = appUserClient.getAppUserShop(userId); + if (r.getCode() != R.SUCCESS){ + throw new ServiceException("获取用户门店信息失败"); + } + List<AppUserShop> appUserShopList = r.getData(); + if (appUserShopList == null || appUserShopList.isEmpty()){ + return false; + } + + // 判断用户是否拥有该门店 + List<AppUserShop> userShopList = appUserShopList.stream() + .filter(appUserShop -> appUserShop.getShopId().equals(shopId)) + .collect(Collectors.toList()); + if (userShopList.isEmpty()){ + return false; + } + + // 判断订单是否属于该门店 + if (order == null){ + throw new ServiceException("订单不存在"); + } + + return order.getShopId().equals(shopId); } @Override - public void writeOff(String code) { + @Transactional(rollbackFor = Exception.class) + public void writeOff(String code,Integer shopId) { + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + Order order = orderMapper.selectOne(new LambdaQueryWrapper<Order>() + .eq(Order::getId, code)); + boolean check = check(order, shopId, loginUserApplet.getUserid()); + if (!check){ + throw new ServiceException("订单不存在"); + } + order.setOrderStatus(OrderStatus.COMPLETED.getCode()); + orderMapper.updateById(order); + Integer orderType = order.getOrderType(); + // 售后设置 + R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5); + if (R.isError(baseSettingR)) { + throw new ServiceException("售后设置获取失败"); + } + BaseSetting baseSetting = baseSettingR.getData(); + if (baseSetting == null) { + throw new ServiceException("售后设置获取失败"); + } + String content = baseSetting.getContent(); + JSONObject jsonObject = JSONObject.parseObject(content); + Long days = jsonObject.getLong("days"); + commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days)); } } -- Gitblit v1.7.1