Browse Source

订单机构不可见权限控制

zhijiezhao 3 years ago
parent
commit
53c9e4ca7d

+ 9 - 0
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -108,6 +108,15 @@ public interface OrderClubMapper {
      * @param orderState 1:待确认,2:待付款,3:待发货,4:已发货,5:退货款
      */
     Integer getOrderCount(Integer userId, Integer orderState);
+
+    /**
+     * 过滤不可见订单
+     * @param userId
+     * @param orderState
+     * @return
+     */
+    Integer getOrderSeenCount(Integer userId, Integer orderState);
+
     /**
      * 机构订单列表
      * @param userId     用户Id

+ 36 - 0
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -68,27 +68,53 @@ public class OrderClubServiceImpl implements OrderClubService {
     @Override
     public ResponseJson<Map<String, Object>> getOrderCount(Integer userId) {
         Map<String, Object> map = new HashMap<>();
+        Integer identity = baseMapper.getIdentityByUserId(userId);
         //全部数量
         Integer totalCount = orderClubMapper.getOrderCount(userId, 0);
+        //非协销剔除不可见订单
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 0);
+            totalCount -= orderSeenCount;
+        }
         map.put("totalCount", totalCount);
         //待确认数量
         Integer confirmedCount = orderClubMapper.getOrderCount(userId, 1);
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 1);
+            confirmedCount -= orderSeenCount;
+        }
         map.put("confirmedCount", confirmedCount);
         //待付款数量
         Integer paymentCount = orderClubMapper.getOrderCount(userId, 2);
         paymentCount = paymentCount == null ? 0 : paymentCount;
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 2);
+            paymentCount -= orderSeenCount;
+        }
         map.put("paymentCount", paymentCount);
         //待发货数量
         Integer waitShipmentsCount = orderClubMapper.getOrderCount(userId, 3);
         waitShipmentsCount = waitShipmentsCount == null ? 0 : waitShipmentsCount;
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 3);
+            waitShipmentsCount -= orderSeenCount;
+        }
         map.put("waitShipmentsCount", waitShipmentsCount);
         //已发货数量
         Integer shipmentsCount = orderClubMapper.getOrderCount(userId, 4);
         shipmentsCount = shipmentsCount == null ? 0 : shipmentsCount;
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 4);
+            shipmentsCount -= orderSeenCount;
+        }
         map.put("shipmentsCount", shipmentsCount);
         //退货款数量
         Integer salesReturnCount = orderClubMapper.getOrderCount(userId, 5);
         salesReturnCount = salesReturnCount == null ? 0 : salesReturnCount;
+        if (identity != 1) {
+            Integer orderSeenCount = orderClubMapper.getOrderSeenCount(userId, 5);
+            salesReturnCount -= orderSeenCount;
+        }
         map.put("salesReturnCount", salesReturnCount);
         return ResponseJson.success(map);
     }
@@ -117,6 +143,7 @@ public class OrderClubServiceImpl implements OrderClubService {
             // 设置付款金额
             orderCommonService.getDiscernReceiptAndSetOrder(order);
         });
+        orderList.removeIf(o -> o.getOrderSeen().equals(2));
         PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
         return ResponseJson.success(pageInfo);
     }
@@ -131,6 +158,7 @@ public class OrderClubServiceImpl implements OrderClubService {
      */
     @Override
     public ResponseJson<PageInfo<OrderVo>> getOrderListByKeyword(Integer userId, String searchWord, int pageNum, int pageSize) {
+        Integer identity = baseMapper.getIdentityByUserId(userId);
         // 设置搜索关键词历史记录
         orderCommonService.setHistoryRecord(userId, searchWord);
         PageHelper.startPage(pageNum, pageSize);
@@ -144,6 +172,10 @@ public class OrderClubServiceImpl implements OrderClubService {
             // 设置付款金额
             orderCommonService.getDiscernReceiptAndSetOrder(order);
         });
+        //不是协销,订单不可见屏蔽
+        if (identity != 1) {
+            orderList.removeIf(o -> o.getOrderSeen().equals(2));
+        }
         PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
         return ResponseJson.success(pageInfo);
     }
@@ -256,6 +288,10 @@ public class OrderClubServiceImpl implements OrderClubService {
         // 机构最新订单Id
         Integer orderId = orderClubMapper.getLatestOrderId(userId);
         OrderPo orderPo = orderClubMapper.getMainOrderByOrderId(orderId);
+        //机构不可见置为空
+        if (orderPo.getOrderSeen() == 2) {
+            orderPo = null;
+        }
         if (null == orderPo) {
             return ResponseJson.error("该订单不存在!", null);
         }

+ 1 - 1
src/main/resources/mapper/BaseMapper.xml

@@ -57,7 +57,7 @@
         LIMIT 1
     </select>
     <select id="getIdentityByUserId" resultType="java.lang.Integer">
-        select userIdentity
+        select ifnull(userIdentity,0)
         from user
         where userID = #{userId}
         LIMIT 1

+ 23 - 4
src/main/resources/mapper/OrderClubMapper.xml

@@ -124,7 +124,7 @@
     </select>
     <select id="getMainOrderByOrderId" resultType="com.caimei365.order.model.po.OrderPo">
         SELECT
-            orderSeen,
+            ifnull(orderSeen,0) AS orderSeen,
             orderID AS orderId,
             shopOrderIds,
             orderSource,
@@ -260,8 +260,29 @@
             AND refundType IN(1,2)
         </if>
     </select>
+    <select id="getOrderSeenCount" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM cm_order
+        WHERE delFlag = 0 AND userID = #{userId}
+        <if test="orderState == 1 ">
+            AND status = '0'
+        </if>
+        <if test="orderState == 2 ">
+            AND status IN(11,12,13,21,22,23)
+        </if>
+        <if test="orderState == 3 ">
+            AND status IN(11,12,21,22,31,32)
+        </if>
+        <if test="orderState == 4 ">
+            AND status IN(12,13,22,23,32,33)
+        </if>
+        <if test="orderState == 5 ">
+            AND refundType IN(1,2)
+        </if>
+            AND orderSeen = 2
+    </select>
     <select id="getOrderList" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
+            ifnull(orderSeen,0) AS orderSeen,
             orderID AS orderId,
             shopOrderIds,
             orderSource,
@@ -333,12 +354,11 @@
         <if test="endTime != null and endTime != '' ">
             AND orderTime <![CDATA[<=]]> #{endTime}
         </if>
-            AND orderSeen != 2 OR orderSeen IS NULL
         ORDER BY orderTime DESC
-
     </select>
     <select id="getOrderListByKeyword" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT DISTINCT
+        ifnull(co.orderSeen,0) AS orderSeen,
         co.orderID AS orderId,
         shopOrderIds,
         co.orderSource,
@@ -388,7 +408,6 @@
         LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
         WHERE co.delFlag = 0 AND co.userID = #{userId}
         AND cop.name LIKE CONCAT('%',#{searchWord},'%')
-        AND orderSeen != 2 OR orderSeen IS NULL
         GROUP BY co.orderID, co.orderTime
         ORDER BY co.orderTime DESC
     </select>