From b97afc77d2ec07865aa98ccd203149fa5e0cd5d0 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 22 八月 2024 10:27:32 +0800
Subject: [PATCH] 代码提交
---
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