From ab4ea7b8f10c9b66aed9c2ea161a08b25c3851a7 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 30 四月 2024 19:11:37 +0800
Subject: [PATCH] 2024.04新增内容

---
 meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallOrderController.java |   42 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallOrderController.java b/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallOrderController.java
index 95bfb7b..e6b50bc 100644
--- a/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallOrderController.java
+++ b/meiya-admin/src/main/java/com/sinata/modular/mall/controller/MallOrderController.java
@@ -10,6 +10,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.toolkit.CollectionUtils;
 import com.google.common.collect.Lists;
 import com.sinata.common.enums.EnumCityRole;
 import com.sinata.common.enums.EnumMemberGrade;
@@ -32,9 +33,14 @@
 import com.sinata.modular.member.model.MemUserRelation;
 import com.sinata.modular.member.service.IMemUserRelationService;
 import com.sinata.modular.member.service.IMemUserService;
+import com.sinata.modular.system.model.Role;
 import com.sinata.modular.system.service.IMyCouponService;
+import com.sinata.modular.system.service.IRoleService;
+import java.util.Map;
+import java.util.Set;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -88,7 +94,10 @@
 
     @Resource
     private IMallOrderDetailGroupSpecService mallOrderDetailGroupSpecService;
-
+    @Resource
+    private IRoleService roleService;
+    @Resource
+    private IMallGoodsSkuService mallGoodsSkuService;
 
     private MallOrder selectById(String orderNo) {
         return this.mallOrderService.selectOne(new EntityWrapper<MallOrder>()
@@ -377,12 +386,18 @@
         try {
             // 【城市管理员】数据查询
             ShiroUser shiroUser = ShiroKit.getUser();
-            if (shiroUser.getRoleList().contains(EnumCityRole.PROVINCE_ROLE.index)) {
-                // 省级城市管理员
-                wrapper.like("o.city_code", shiroUser.getCityCode().substring(0, 2), SqlLike.RIGHT);
-            } else if (shiroUser.getRoleList().contains(EnumCityRole.CITY_ROLE.index)) {
+            List<Integer> roleList = shiroUser.getRoleList();
+            List<Integer> cityRoleList = roleService.selectList(
+                            new EntityWrapper<Role>().in("id", roleList)).stream().map(Role::getCityRole)
+                    .collect(
+                            Collectors.toList());
+            if (cityRoleList.contains(EnumCityRole.CITY_ROLE.index)) {
                 // 市级城市管理员
                 wrapper.like("o.city_code", shiroUser.getCityCode().substring(0, 4), SqlLike.RIGHT);
+            }
+            else if (cityRoleList.contains(EnumCityRole.PROVINCE_ROLE.index)) {
+                // 省级城市管理员
+                wrapper.like("o.city_code", shiroUser.getCityCode().substring(0, 2), SqlLike.RIGHT);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -484,6 +499,7 @@
      */
     @ResponseBody
     @RequestMapping(value = "/orderShip")
+    @Transactional(rollbackFor = Exception.class)
     public Object orderShip(String orderNo, Integer expressCompany) {
         MallOrder order = this.mallOrderService.selectOne(
                 new EntityWrapper<MallOrder>()
@@ -514,7 +530,21 @@
         }
 
         this.mallOrderService.updateById(order);
-
+        //退回库存
+        List<MallOrderDetail> orderDetailList = this.mallOrderDetailService.selectList(new EntityWrapper<MallOrderDetail>().eq("order_no", orderNo));
+        if (CollectionUtils.isNotEmpty(orderDetailList)) {
+            Map<Integer, MallOrderDetail> orderDetailMap = orderDetailList.stream()
+                    .collect(Collectors.toMap(MallOrderDetail::getSkuId, e -> e));
+            Set<Integer> skuIdList = orderDetailList.stream().map(MallOrderDetail::getSkuId)
+                    .collect(Collectors.toSet());
+            List<MallGoodsSku> skuList = mallGoodsSkuService.selectList(
+                    new EntityWrapper<MallGoodsSku>().in("id", skuIdList));
+            for (MallGoodsSku mallGoodsSku : skuList) {
+                MallOrderDetail mallOrderDetail = orderDetailMap.get(mallGoodsSku.getId());
+                mallGoodsSku.setStock(mallGoodsSku.getStock() + mallOrderDetail.getGoodsNum());
+                mallGoodsSkuService.updateById(mallGoodsSku);
+            }
+        }
         return SUCCESS_TIP;
     }
 }

--
Gitblit v1.7.1