| | |
| | | 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.enums.OrderType; |
| | | 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.OrderService; |
| | | import model.Order; |
| | | import com.ruoyi.order.vo.OrderDetailVO; |
| | | import com.ruoyi.order.vo.OrderGoodsVO; |
| | | import com.ruoyi.order.vo.OrderVO; |
| | | import com.ruoyi.other.api.domain.*; |
| | | import com.ruoyi.other.api.feignClient.GoodsClient; |
| | | 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.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | @Service |
| | | 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; |
| | | |
| | | |
| | | @Override |
| | | public boolean check(Integer orderId, Integer shopId) { |
| | | return false; |
| | | public List<OrderVO> selectOrderListByUserId(Integer status, Long userId) { |
| | | return orderMapper.selectOrderListByUserId(status, userId); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public OrderDetailVO getOrderDetail(Long orderId) { |
| | | Order order = orderMapper.selectById(orderId); |
| | | 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)); |
| | | |
| | | List<OrderGoodsVO> goodsList = new ArrayList<>(); |
| | | 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.setGoodsPic(goods.getHomePagePicture()); |
| | | orderGoodsVO.setSellingPrice(goods.getSellingPrice()); |
| | | orderGoodsVO.setOriginalPrice(goods.getOriginalPrice()); |
| | | goodsList.add(orderGoodsVO); |
| | | } |
| | | |
| | | |
| | | |
| | | // 收货地址 |
| | | String addressJson = order.getAddressJson(); |
| | | UserAddress userAddress = new UserAddress(); |
| | | if (StringUtils.isNotEmpty(addressJson)){ |
| | | userAddress = JSONObject.parseObject(addressJson, UserAddress.class); |
| | | |
| | | } |
| | | |
| | | // 优惠券 |
| | | String couponJson = order.getCouponJson(); |
| | | CouponInfo couponInfo = new CouponInfo(); |
| | | if (StringUtils.isNotEmpty(couponJson)){ |
| | | couponInfo = JSONObject.parseObject(couponJson, CouponInfo.class); |
| | | } |
| | | |
| | | // 参与活动 |
| | | String activityJson = order.getActivityJson(); |
| | | OrderActivityInfo orderActivityInfo = new OrderActivityInfo(); |
| | | if (StringUtils.isNotEmpty(activityJson)){ |
| | | 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()); |
| | | } |
| | | |
| | | Shop shop = shopR.getData(); |
| | | |
| | | |
| | | orderDetailVO.setId(order.getId()); |
| | | orderDetailVO.setOrderStatus(order.getOrderStatus()); |
| | | orderDetailVO.setPoint(order.getPoint()); |
| | | orderDetailVO.setAddressId(userAddress.getId()); |
| | | orderDetailVO.setRecieveName(userAddress.getRecieveName()); |
| | | orderDetailVO.setRecievePhone(userAddress.getRecievePhone()); |
| | | orderDetailVO.setRecieveAddress(userAddress.getRecieveAddress()); |
| | | orderDetailVO.setOrderNumber(order.getOrderNumber()); |
| | | orderDetailVO.setCreateTime(order.getCreateTime()); |
| | | orderDetailVO.setTotalAmount(order.getTotalAmount()); |
| | | orderDetailVO.setCouponName(couponInfo.getCouponName()); |
| | | orderDetailVO.setActivityName(orderActivityInfo.getActivityName()); |
| | | orderDetailVO.setCouponAmount(order.getDiscountTotalAmount()); |
| | | orderDetailVO.setExpressAmount(order.getExpressAmount()); |
| | | 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()); |
| | | return orderDetailVO; |
| | | } |
| | | |
| | | @Override |
| | | 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 |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void writeOff(String code,Integer shopId) { |
| | | LoginUser loginUserApplet = tokenService.getLoginUserApplet(); |
| | | Order order = orderMapper.selectOne(new LambdaQueryWrapper<Order>() |
| | | .eq(Order::getOrderNumber, 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(); |
| | | if (orderType.equals(OrderType.SERVICE.getCode())){ |
| | | R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId()); |
| | | if (shopdetail.getCode() != R.SUCCESS){ |
| | | throw new ServiceException("获取技师信息失败"); |
| | | } |
| | | Technician technician = shopdetail.getData(); |
| | | R<Void> r = technicianClient.updateStatus(2, technician.getId()); |
| | | if (r.getCode() != R.SUCCESS){ |
| | | throw new ServiceException("修改技师状态失败"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void commission(Long orderId) { |
| | | |
| | | } |
| | | } |