From 1f9b64476716a6a1de3bcb886bf4e64b123f7523 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期四, 06 七月 2023 18:28:31 +0800
Subject: [PATCH] 管理台bug和用户端活动商品购买

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  266 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 263 insertions(+), 3 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index c2de81f..bde96b6 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -83,6 +83,8 @@
     @Resource
     private RemoteCouponService remoteCouponService;
 
+    @Resource
+    private RemoteActivityService remoteActivityService;
 
     /**
      * @description: buyGoods
@@ -135,7 +137,6 @@
             //商品图片
             goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
             appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
-            buyNum = appBuyGoodsDto.getBuyNum();
             appSureOrderGoodsVo.setBuyNum(buyNum);
             goodsPrice = goods.getSalesPrice();
             //商户定制价格
@@ -209,6 +210,84 @@
     }
 
     /**
+     * @description  抢购商品
+     * @author  jqs
+     * @date    2023/7/6 11:45
+     * @param appPanicBuyDto
+     * @return  AppSureOrderVo
+     */
+    @Override
+    public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto){
+        Long userId = appPanicBuyDto.getUserId();
+        AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
+        String activityId = appPanicBuyDto.getActivityId();
+        String goodsId = appPanicBuyDto.getGoodsId();
+        Integer buyNum = appPanicBuyDto.getBuyNum();
+        BigDecimal buyNumBig;
+        BigDecimal goodsPrice;
+        BigDecimal goodsTotalPrice;
+        BigDecimal goodsRealPrice;
+        BigDecimal goodsDeposit;
+        BigDecimal goodsActivityPrice;
+        GoodsFile goodsFile;
+        BigDecimal orderGoodsMoney = new BigDecimal("0.00");
+        BigDecimal orderPayDeposit = new BigDecimal("0.00");
+        BigDecimal orderPayMoney = new BigDecimal("0.00");
+        ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
+        activityGoodsGetDto.setActivityId(activityId);
+        activityGoodsGetDto.setGoodsId(goodsId);
+        activityGoodsGetDto.setUserId(userId);
+        ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
+        if(activityGoodsGetVo.getActivityStatus()==0){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
+        }
+        if(activityGoodsGetVo.getActivityStatus()==2){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_END);
+        }
+        if(activityGoodsGetVo.getAvailableBuyNum()<1){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        }
+        Goods goods = remoteGoodsService.getGoods(goodsId).getData();
+        appPanicBuyVo.setGoodsId(goodsId);
+        appPanicBuyVo.setGoodsName(goods.getGoodsName());
+        appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
+        appPanicBuyVo.setGoodsType(goods.getGoodsType());
+        //商品图片
+        goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
+        appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
+        appPanicBuyVo.setBuyNum(buyNum);
+        goodsPrice = goods.getSalesPrice();
+        //商户定制价格
+        AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto();
+        appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
+        appShopGoodsGetDto.setShopId(appPanicBuyDto.getShopId());
+        ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+        if (shopGoods != null) {
+            goodsPrice = shopGoods.getSalesPrice();
+        }
+        appPanicBuyVo.setGoodsPrice(goodsPrice);
+        buyNumBig = BigDecimal.valueOf(buyNum);
+        goodsActivityPrice = activityGoodsGetVo.getActivityPrice();
+        goodsTotalPrice = goodsActivityPrice.multiply(buyNumBig);
+        goodsRealPrice = goodsTotalPrice;
+        appPanicBuyVo.setActivityPrice(goodsActivityPrice);
+        appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
+        appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
+        goodsDeposit = activityGoodsGetVo.getActivitySubscription();
+        if (goodsDeposit == null) {
+            goodsDeposit = new BigDecimal("0.00");
+        }
+        appPanicBuyVo.setGoodsDeposit(goodsDeposit);
+        orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
+        orderPayDeposit = orderPayDeposit.add(goodsDeposit);
+        orderPayMoney = orderPayMoney.add(goodsRealPrice);
+        appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney);
+        appPanicBuyVo.setOrderPayDeposit(orderPayDeposit);
+        appPanicBuyVo.setOrderPayMoney(orderPayMoney);
+        return appPanicBuyVo;
+    }
+
+    /**
      * 创建订单
      *
      * @param appPlaceOrderDto
@@ -228,6 +307,7 @@
         Integer goodsNum = 0;
         String memberCouponId;
         Goods goods;
+        GoodsFile goodsFile;
         BigDecimal goodsPrice;
         BigDecimal goodsTotalPrice;
         BigDecimal goodsRealPrice;
@@ -239,7 +319,6 @@
         BigDecimal discountMoney = new BigDecimal("0.00");
         BigDecimal discountPercent;
         BigDecimal goodsDeposit;
-        GoodsFile goodsFile;
         Integer useCoupon;
         BigDecimal orderGoodsMoney = new BigDecimal("0.00");
         BigDecimal couponDiscount = new BigDecimal("0.00");
@@ -334,6 +413,8 @@
             orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
+            orderGoods.setGoodsName(goods.getGoodsName());
+            orderGoods.setGoodsPicture(goodsFile.getFileUrl());
             orderGoodsService.save(orderGoods);
             //清空购物车
             AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto();
@@ -398,6 +479,174 @@
 
         return appPlaceOrderVo;
     }
+
+    /**
+     * @description  创建活动订单
+     * @author  jqs
+     * @date    2023/7/6 17:59
+     * @param appPlaceActivityDto
+     * @return  AppPlaceOrderVo
+     */
+    @Override
+    public AppPlaceOrderVo placeActivityOrder( AppPlaceActivityDto appPlaceActivityDto){
+        Long userId = appPlaceActivityDto.getUserId();
+        AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+        AppSureOrderGoodsVo appSureOrderGoodsVo;
+        String activityId = appPlaceActivityDto.getActivityId();
+        String goodsId = appPlaceActivityDto.getGoodsId();
+        Integer buyNum = appPlaceActivityDto.getBuyNum();
+        BigDecimal buyNumBig;
+        Integer serviceNum;
+        Integer goodsNum = 0;
+        Goods goods;
+        GoodsFile goodsFile;
+        BigDecimal goodsPrice;
+        BigDecimal goodsTotalPrice;
+        BigDecimal goodsRealPrice;
+        BigDecimal discountMoney = new BigDecimal("0.00");
+        BigDecimal discountPercent;
+        BigDecimal goodsDeposit;
+        Integer useCoupon;
+        BigDecimal orderGoodsMoney = new BigDecimal("0.00");
+        BigDecimal couponDiscount = new BigDecimal("0.00");
+        BigDecimal orderPayDeposit = new BigDecimal("0.00");
+        BigDecimal orderPayMoney = new BigDecimal("0.00");
+        ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
+        activityGoodsGetDto.setActivityId(activityId);
+        activityGoodsGetDto.setGoodsId(goodsId);
+        activityGoodsGetDto.setUserId(userId);
+        ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
+        if(activityGoodsGetVo.getActivityStatus()==0){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
+        }
+        if(activityGoodsGetVo.getActivityStatus()==2){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_END);
+        }
+        if(activityGoodsGetVo.getAvailableBuyNum()<1){
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        }
+        String orderId = IdUtils.simpleUUID();
+        String orderNo = CodeFactoryUtil.getShopOrderNo();
+        OrderGoods orderGoods;
+        String orderGoodsId;
+        HashSet<String> goodsTypeSet = new HashSet<>();
+        appSureOrderGoodsVo = new AppSureOrderGoodsVo();
+        useCoupon = 0;
+        goodsId = appPlaceActivityDto.getGoodsId();
+        goods = remoteGoodsService.getGoods(goodsId).getData();
+        appSureOrderGoodsVo.setGoodsId(goodsId);
+        appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
+        appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
+        appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
+        //商品图片
+        goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
+        appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
+        buyNum = appPlaceActivityDto.getBuyNum();
+        appSureOrderGoodsVo.setBuyNum(buyNum);
+        goodsPrice = goods.getSalesPrice();
+        serviceNum = goods.getServiceNum();
+        //活动价格
+        goodsPrice = activityGoodsGetVo.getActivityPrice();
+        appSureOrderGoodsVo.setGoodsPrice(goodsPrice);
+        buyNumBig = BigDecimal.valueOf(buyNum);
+        goodsTotalPrice = goodsPrice.multiply(buyNumBig);
+        goodsRealPrice = goodsTotalPrice;
+        appSureOrderGoodsVo.setUseCoupon(useCoupon);
+        appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
+        appSureOrderGoodsVo.setCouponDiscount(discountMoney);
+        appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
+        goodsDeposit = goods.getSubscription();
+        if (goodsDeposit == null) {
+            goodsDeposit = new BigDecimal("0.00");
+        }
+        appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
+        goodsNum = goodsNum + buyNum;
+        orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
+        couponDiscount = couponDiscount.add(discountMoney);
+        orderPayDeposit = orderPayDeposit.add(goodsDeposit);
+        orderPayMoney = orderPayMoney.add(goodsRealPrice);
+        //创建OrderGoods
+        orderGoods = new OrderGoods();
+        orderGoodsId = IdUtils.simpleUUID();
+        orderGoods.setOrderGoodsId(orderGoodsId);
+        orderGoods.setDelFlag(0);
+        orderGoods.setOrderId(orderId);
+        orderGoods.setGoodsId(goodsId);
+        orderGoods.setBuyNum(buyNum);
+        orderGoods.setGoodsPrice(goodsPrice);
+        orderGoods.setGoodsTotalMoney(orderGoodsMoney);
+        orderGoods.setGoodsReceivableMoney(goodsRealPrice);
+        orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
+        orderGoods.setServiceNum(serviceNum);
+        orderGoods.setGoodsType(goods.getGoodsType());
+        orderGoods.setGoodsName(goods.getGoodsName());
+        orderGoods.setGoodsPicture(goodsFile.getFileUrl());
+        orderGoodsService.save(orderGoods);
+        //清空购物车
+        AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto();
+        appShoppingCartDelDto.setGoodsId(goodsId);
+        appShoppingCartDelDto.setUserId(userId);
+        remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto);
+        if (goods.getGoodsType() == 1) {
+            goodsTypeSet.add("周期");
+        } else if (goods.getGoodsType() == 2) {
+            goodsTypeSet.add("服务");
+        } else if (goods.getGoodsType() == 3) {
+            goodsTypeSet.add("体验");
+        } else if (goods.getGoodsType() == 4) {
+            goodsTypeSet.add("单品");
+        }
+
+        Order order = new Order();
+        order.setOrderId(orderId);
+        order.setDelFlag(0);
+        //为对接支付 直接付款成功
+        order.setOrderStatus(1);
+        order.setOrderNo(orderNo);
+        order.setOrderFrom(1);
+        order.setShopId(appPlaceActivityDto.getShopId());
+        order.setUserId(userId);
+        order.setOrderMoney(orderGoodsMoney);
+        order.setCouponMoney(couponDiscount);
+        order.setDiscountMoney(couponDiscount);
+        order.setReceivableMoney(orderPayMoney);
+        order.setReceivableDeposit(orderPayDeposit);
+        order.setChangeReceivableMoney(orderPayMoney);
+        order.setPayType(appPlaceActivityDto.getPayType());
+        if (order.getPayType() == 1) {
+            order.setPayMoney(orderPayMoney);
+            order.setOnlinePayMoney(orderPayMoney);
+            appPlaceOrderVo.setPayMoney(orderPayMoney);
+            appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setCloseFlag(1);
+        } else if (order.getPayType() == 2) {
+            order.setPayMoney(orderPayDeposit);
+            order.setOnlinePayMoney(orderPayDeposit);
+            appPlaceOrderVo.setPayMoney(orderPayDeposit);
+            appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setCloseFlag(0);
+        }
+        order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
+        order.setGoodsNum(goodsNum);
+        order.setCreateTime(new Date());
+        this.save(order);
+        //更新用户商品类型
+        if (goodsTypeSet != null && goodsTypeSet.size() > 0) {
+            AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
+            appMemberGoodsTypeDto.setUserId(userId);
+            appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
+            remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
+        }
+        appPlaceOrderVo.setOrderId(orderId);
+        appPlaceOrderVo.setOrderNo(orderNo);
+
+        //调用支付
+
+
+        return appPlaceOrderVo;
+    }
+
+
 
     /**
      * 分页获取用户订单
@@ -878,6 +1127,7 @@
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
+        GoodsFile goodsFile;
         BigDecimal cycleMoney = new BigDecimal("0.00");
         BigDecimal experienceMoney = new BigDecimal("0.00");
         BigDecimal serviceMoney = new BigDecimal("0.00");
@@ -886,6 +1136,7 @@
             goodsId = appBuyGoodsDto.getGoodsId();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
             goods = remoteGoodsService.getGoods(goodsId).getData();
+            goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
             buyNum = appBuyGoodsDto.getBuyNum();
             goodsPrice = goods.getSalesPrice();
             serviceNum = goods.getServiceNum();
@@ -949,6 +1200,8 @@
             orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
             orderGoods.setServiceNum(serviceNum);
             orderGoods.setGoodsType(goods.getGoodsType());
+            orderGoods.setGoodsName(goods.getGoodsName());
+            orderGoods.setGoodsPicture(goodsFile.getFileUrl());
             orderGoodsService.save(orderGoods);
             switch(orderGoods.getGoodsType()){
                 case 1:
@@ -2306,10 +2559,17 @@
                         .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             }
             // 遍历列表,设置店铺名称、用户名称和未支付金额
+            String userInfo;
+            String mobile;
             for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
                 if (userMap != null && !userMap.isEmpty()) {
                     if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
-                        mgtShopOrderPageVo.setUserInfo(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()+"("+userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile()+")");
+                        userInfo = userMap.get(mgtShopOrderPageVo.getUserId()).getNickName();
+                        mobile = userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile();
+                        if(StringUtils.isNotBlank(mobile)){
+                            userInfo = userInfo + "(" + mobile + ")";
+                        }
+                        mgtShopOrderPageVo.setUserInfo(userInfo);
                     }
                 }
             }

--
Gitblit v1.7.1