From 7c220e1e14cb099ac6b7f08b911b037b79cf9da8 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期四, 22 八月 2024 17:39:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java |  292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 292 insertions(+), 0 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index b30e82f..b809d8f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -1,10 +1,32 @@
 package com.ruoyi.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserAddressClient;
+import com.ruoyi.account.api.model.TAppUserAddress;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.order.api.model.TExchangeOrder;
 import com.ruoyi.order.api.model.TShoppingOrder;
+import com.ruoyi.order.api.query.TActivityStatisticsQuery;
+import com.ruoyi.order.api.vo.TActivityStatisticslVO;
+import com.ruoyi.order.api.vo.TActivityVO;
+import com.ruoyi.order.dto.*;
 import com.ruoyi.order.mapper.TShoppingOrderMapper;
 import com.ruoyi.order.service.TShoppingOrderService;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
+import com.ruoyi.other.api.feignClient.CouponClient;
+import com.ruoyi.other.api.feignClient.GoodsClient;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -16,5 +38,275 @@
  */
 @Service
 public class TShoppingOrderServiceImpl extends ServiceImpl<TShoppingOrderMapper, TShoppingOrder> implements TShoppingOrderService {
+    
+    @Resource
+    private TokenService tokenService;
+    
+    @Resource
+    private GoodsClient goodsClient;
+    
+    @Resource
+    private CouponClient couponClient;
+    
+    @Resource
+    private AppUserAddressClient appUserAddressClient;
+    
+    
+    
 
+    @Override
+    public TActivityVO activityStatistics(TActivityStatisticsQuery dto) {
+        TActivityVO res = new TActivityVO();
+
+
+
+        PageInfo<TActivityStatisticslVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+        List<TActivityStatisticslVO> list = this.baseMapper.activityStatistics(pageInfo,dto);
+        list.sort((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()));
+        // 优惠券金额
+        BigDecimal coupon = new BigDecimal("0");
+        // 会员抵扣金额
+        BigDecimal discount = new BigDecimal("0");
+        // 会员活动金额
+        BigDecimal vipActivity = new BigDecimal("0");
+        // 赠送会员
+        BigDecimal grantVip = new BigDecimal("0");
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        for (TActivityStatisticslVO tActivityStatisticslVO : list) {
+            // 判断享有了哪些类型
+            switch (tActivityStatisticslVO.getOrderType()){
+                case 1:
+                    StringBuilder stringBuilder = new StringBuilder();
+
+                    // 充电订单 优惠券金额大于0
+                    if (tActivityStatisticslVO.getCouponDiscountAmount()!=null
+                            &&
+                        (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
+                        coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount());
+                        stringBuilder.append("优惠券抵扣").append("+");
+                }
+                    if (tActivityStatisticslVO.getVipDiscountAmount()!=null
+                            &&
+                            (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
+                        discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount());
+                        stringBuilder.append("会员抵扣").append("+");
+                    }
+                    stringBuilder.deleteCharAt(stringBuilder.length()-1);
+                    tActivityStatisticslVO.setType(stringBuilder.toString());
+                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
+                    break;
+                case 2:
+                    StringBuilder stringBuilder1 = new StringBuilder();
+
+                    // 购物订单 优惠券金额大于0
+                    if (tActivityStatisticslVO.getCouponDiscountAmount()!=null
+                            &&
+                            (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
+                        coupon = coupon.add(tActivityStatisticslVO.getCouponDiscountAmount());
+                        stringBuilder1.append("优惠券抵扣").append("+");
+                    }
+                    if (tActivityStatisticslVO.getVipDiscountAmount()!=null
+                            &&
+                            (tActivityStatisticslVO.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
+                        discount = discount.add(tActivityStatisticslVO.getVipDiscountAmount());
+                        stringBuilder1.append("会员抵扣").append("+");
+                    }
+                    stringBuilder1.deleteCharAt(stringBuilder1.length()-1);
+                    tActivityStatisticslVO.setType(stringBuilder1.toString());
+                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
+                    break;
+                case 3:
+                    // 会员订单 优惠金额大于0
+                    if (tActivityStatisticslVO.getVipDiscountAmount()!=null
+                            &&
+                            (tActivityStatisticslVO.getCouponDiscountAmount().compareTo(BigDecimal.ZERO)>0)){
+                        vipActivity = vipActivity.add(tActivityStatisticslVO.getVipDiscountAmount());
+                    }
+                    tActivityStatisticslVO.setType("会员活动");
+                    tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
+                    break;
+                case 4:
+                    // 赠送会员订单 如果支付金额为0 那么就是后台赠送的会员
+                    if (tActivityStatisticslVO.getPaymentAmount().compareTo(BigDecimal.ZERO)==0){
+                        grantVip = grantVip.add(tActivityStatisticslVO.getOrderAmount());
+                        tActivityStatisticslVO.setType("赠送会员");
+                        tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
+                    }else{
+                        // 赠送
+                        grantVip = grantVip.add(tActivityStatisticslVO.getVipDiscountAmount());
+                        tActivityStatisticslVO.setType("赠送会员");
+                        tActivityStatisticslVO.setTime(simpleDateFormat.format(tActivityStatisticslVO.getCreateTime()));
+                    }
+                    break;
+            }
+        }
+        pageInfo.setRecords(list);
+        res.setList(pageInfo);
+        res.setTotal(coupon.add(discount).add(vipActivity).add(grantVip));
+        res.setCoupon(coupon);
+        res.setDiscount(discount);
+        res.setVipActivity(vipActivity);
+        res.setGrantVip(grantVip);
+        return res;
+    }
+    
+    
+    /**
+     * 获取小程序商城购买订单列表
+     * @param query
+     * @return
+     */
+    @Override
+    public List<MyShoppingOrderList> getMyShoppingOrderList(GetMyShoppingOrderList query) {
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        LambdaQueryWrapper<TShoppingOrder> wrapper = new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
+                .eq(TShoppingOrder::getAppUserId, userId);
+        if(query.getStatus() != 0){
+            wrapper.eq(TShoppingOrder::getStatus, query.getStatus());
+        }
+        List<TShoppingOrder> list = this.list(wrapper.orderByDesc(TShoppingOrder::getCreateTime).last(" limit " + query.getPageCurr() + ", " + query.getPageSize()));
+        List<MyShoppingOrderList> pageList = new ArrayList<>();
+        for (TShoppingOrder tShoppingOrder : list) {
+            MyShoppingOrderList myShoppingOrderList = new MyShoppingOrderList();
+            myShoppingOrderList.setId(tShoppingOrder.getId().toString());
+            String name = "";
+            String imgUrl = "";
+            if(tShoppingOrder.getOrderType() == 1){
+                TGoods goods = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData();
+                name = goods.getName();
+                imgUrl = goods.getCoverPicture();
+            }else{
+                TCoupon coupon = couponClient.getCouponById1(tShoppingOrder.getGoodsId()).getData();
+                name = coupon.getName();
+                imgUrl = coupon.getCoverPicture();
+            }
+            myShoppingOrderList.setName(name);
+            myShoppingOrderList.setImgUrl(imgUrl);
+            myShoppingOrderList.setStatus(tShoppingOrder.getStatus());
+            BigDecimal unitPrice = tShoppingOrder.getPaymentAmount().divide(new BigDecimal(tShoppingOrder.getPurchaseQuantity())).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+            myShoppingOrderList.setUnitPrice(unitPrice);
+            myShoppingOrderList.setNumber(tShoppingOrder.getPurchaseQuantity());
+            myShoppingOrderList.setPaymentAmount(tShoppingOrder.getPaymentAmount());
+            pageList.add(myShoppingOrderList);
+        }
+        return pageList;
+    }
+    
+    
+    /**
+     * 获取购买订单详情
+     * @param id
+     * @return
+     */
+    @Override
+    public MyShoppingOrderInfo getMyShoppingOrderInfo(String id) {
+        TShoppingOrder shoppingOrder = this.getById(id);
+        MyShoppingOrderInfo info = new MyShoppingOrderInfo();
+        info.setId(id);
+        info.setStatus(shoppingOrder.getStatus());
+        TAppUserAddress userAddress = appUserAddressClient.getAppUserAddressById(shoppingOrder.getAppUserAddressId()).getData();
+        info.setConsignee(userAddress.getName());
+        info.setPhone(userAddress.getPhone());
+        info.setAddress(userAddress.getAddress());
+        info.setExpressCompany(shoppingOrder.getExpressCompany());
+        info.setExpressNumber(shoppingOrder.getExpressNumber());
+        String name = "";
+        String imgUrl = "";
+        if(shoppingOrder.getOrderType() == 1){
+            TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
+            name = goods.getName();
+            imgUrl = goods.getCoverPicture();
+        }else{
+            TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getGoodsId()).getData();
+            info.setCouponType(coupon.getType());
+            info.setDays(coupon.getDays());
+            info.setEndTime(coupon.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            name = coupon.getName();
+            imgUrl = coupon.getCoverPicture();
+        }
+        info.setName(name);
+        info.setImgUrl(imgUrl);
+        info.setNumber(shoppingOrder.getPurchaseQuantity());
+        BigDecimal unitPrice = shoppingOrder.getPaymentAmount().divide(new BigDecimal(shoppingOrder.getPurchaseQuantity())).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+        info.setUnitPrice(unitPrice);
+        info.setCode(shoppingOrder.getCode());
+        info.setCreateTime(shoppingOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        info.setPaymentAmount(shoppingOrder.getPaymentAmount());
+        info.setRemark(shoppingOrder.getRemark());
+        info.setDeliveryTime(shoppingOrder.getConsignerTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        info.setFinishTime(shoppingOrder.getReceivingTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        return info;
+    }
+    
+    
+    /**
+     * 取消订单
+     * @param id
+     * @return
+     */
+    @Override
+    public AjaxResult cancelOrder(String id) {
+        TShoppingOrder shoppingOrder = this.getById(id);
+        if(shoppingOrder.getStatus() == 2){
+            return AjaxResult.error("订单已发货,不能取消");
+        }
+        if(shoppingOrder.getStatus() == 3){
+            return AjaxResult.error("订单已完成,不能取消");
+        }
+        if(shoppingOrder.getStatus() == 4){
+            return AjaxResult.error("订单已取消,不能重复操作");
+        }
+        //先查询第三方订单状态订单是否退款
+        //支付方式(1=微信,2=支付宝) todo 待完善
+        Integer paymentType = shoppingOrder.getPaymentType();
+        if(1 == paymentType){
+        
+        }
+        if(2 == paymentType){
+        
+        }
+        //退款成功后需要判断商品库存类型后决定是否需要回退库存
+        //加redis锁处理高并发
+        
+        
+        return AjaxResult.success();
+    }
+    
+    
+    /**
+     * 获取未开票的订单列表
+     * @param query
+     * @return
+     */
+    @Override
+    public List<MyShoppingOrderList> getNoInvoicedOrder(GetNoInvoicedOrder query) {
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        List<TShoppingOrder> list = this.baseMapper.getNoInvoicedOrder(userId, query.getMonth(), query.getPageCurr(), query.getPageSize());
+        List<MyShoppingOrderList> pageList = new ArrayList<>();
+        for (TShoppingOrder tShoppingOrder : list) {
+            MyShoppingOrderList myShoppingOrderList = new MyShoppingOrderList();
+            myShoppingOrderList.setId(tShoppingOrder.getId().toString());
+            String name = "";
+            String imgUrl = "";
+            if(tShoppingOrder.getOrderType() == 1){
+                TGoods goods = goodsClient.getGoodsById(tShoppingOrder.getGoodsId()).getData();
+                name = goods.getName();
+                imgUrl = goods.getCoverPicture();
+            }else{
+                TCoupon coupon = couponClient.getCouponById1(tShoppingOrder.getGoodsId()).getData();
+                name = coupon.getName();
+                imgUrl = coupon.getCoverPicture();
+            }
+            myShoppingOrderList.setName(name);
+            myShoppingOrderList.setImgUrl(imgUrl);
+            myShoppingOrderList.setStatus(tShoppingOrder.getStatus());
+            BigDecimal unitPrice = tShoppingOrder.getPaymentAmount().divide(new BigDecimal(tShoppingOrder.getPurchaseQuantity())).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+            myShoppingOrderList.setUnitPrice(unitPrice);
+            myShoppingOrderList.setNumber(tShoppingOrder.getPurchaseQuantity());
+            myShoppingOrderList.setPaymentAmount(tShoppingOrder.getPaymentAmount());
+            pageList.add(myShoppingOrderList);
+        }
+        return pageList;
+    }
 }

--
Gitblit v1.7.1