Browse Source

新后台权限

zhijiezhao 2 years ago
parent
commit
076cc536cd

+ 50 - 3
src/main/java/com/caimei365/order/mapper/ReceiptMapper.java

@@ -20,84 +20,105 @@ public interface ReceiptMapper {
      * 保存收款记录
      */
     void insertReceipt(ReceiptPo receiptPo);
+
     /**
      * 更新收款记录
      */
     void updateReceipt(ReceiptPo receiptPo);
+
     /**
      * 根据openid获取收款用户
      */
     ReceiptUserVo getReceiptUserByOpenid(String openId);
+
     /**
      * 根据收款用户Id获取姓名
      */
     String getReceiptUserNameById(Integer id);
+
     /**
      * 根据mobile获取收款用户
      */
     ReceiptUserVo getReceiptUserByMobile(String mobile);
+
     /**
      * 根据mobile更新openid
      */
     void updateOpenidByMobile(String openid, String unionId, String mobile);
+
     /**
      * 获取用户权限: 1录入收款,2收款列表操作,3关联订单款,4关联返佣款,5口头返佣,6关联供应商退款,7审核订单款,8收款详情分享,
      * 9非订单款查看(全部),10订单款查看(全部),11返佣款查看(全部),12供应商退款查看(全部),13订单款查看(协销自己机构),14返佣款查看(协销自己机构),15供应商退款查看(协销自己机构)
      */
     List<Integer> getPermissionsByUserId(Integer userId);
+
     /**
      * 获取收款类型列表
      */
     List<ReceiptTypeVo> getReceiptType();
+
     /**
      * 获取收款类型
      */
     ReceiptTypeVo getReceiptTypeById(Integer id);
+
     String getReceiptTypeStrById(Integer id);
+
     /**
      * 短信内容Md5加密串 获取收款记录
      */
     List<ReceiptVo> getReceiptBySmsMd5Code(String smsMd5Code);
+
     /**
      * 获取收款类型
      */
     Integer getReceivablesTypeId(String type);
+
     /**
      * 获取订单已支付金额(待审核状态的收款也算)
      */
     Double getPaidAmountByOrderId(Integer orderId);
+
     /**
      * 获取订单待审核金额
      */
     Double getUncheckAmount(Integer orderId);
+
     /**
      * 获取订单已退金额
      */
     Double getReturnedAmount(Integer orderId);
+
     /**
      * 获取主订单下面的所有的确认收货商品数量
      */
     Integer getReceiptNumByOrderId(Integer orderId);
+
     /**
      * 获取该主订单下面所有已完成状态退货退款商品数量
      */
     Integer getReturnAndCancelNum(Integer orderId);
+
     /**
      * 获取协销Id
      */
     Integer getServiceProviderId(String unionId);
+
     /**
      * 获取协销下的机构userIds
      */
     List<Integer> getClubUserIdBySpId(Integer spId);
+
     /**
      * 获取收款列表
      */
     List<ReceiptVo> getReceiptList(ReceiptParamsBo receiptParamsBo);
+
     /**
      * 获取收款详情
      */
     ReceiptVo getReceiptDetail(Integer id);
+
     /**
      * 获取收款关联订单
      */
@@ -106,101 +127,127 @@ public interface ReceiptMapper {
     List<OrderVo> getReceiptOrderlist(Integer receiptId);
 
     List<OrderVo> getReceiptOrderlists(Integer receiptId);
+
     /**
      * 获取收款商品订单列表
      */
     List<OrderVo> getOrderListByParams(ReceiptParamsBo receiptParamsBo);
+
     List<OrderVo> getOrderListByOrderIds(@Param("orderIdS") String[] orderIdS);
+
     /**
      * 存在退款中的记录
      */
     Integer countHaveReturning(Integer orderId);
+
     /**
      * 存在收款中的记录
      */
     Integer countHaveReceipting(Integer orderId);
+
     /**
      * 线上支付收款Id
      */
     Integer getOnlineReceiptId(Integer orderId);
+
     /**
      * 获取已退款金额
      */
     List<ReturnedPurchaseVo> getRefundFeeByOrderId(Integer orderId);
+
     /**
      * 已关联子订单
      */
     List<ShopOrderVo> getShopOrderListByReceiptId(Integer receiptId);
+
     /**
      * 搜索子订单进行关联
      */
     List<ShopOrderVo> getRefundShopOrders(Integer confirmedType, String shopName, String userName, Integer orderId);
+
     /**
      * 返佣款-子订单列表
      */
     List<ShopOrderVo> getRebateShopOrders(String shopName);
+
     /**
      * 获取子订单信息
      */
     ShopOrderVo getShopOrderById(Integer shopOrderId);
+
     /**
      * 返佣订单付款总金额
      */
     double countAllPayAssociateAmount(Integer orderId);
+
     /**
      * 需要支付金额
      */
     double countNeedPayAmount(Integer orderId);
+
     /**
      * 删除之前与这个收款所有的关系
      */
     void deleteReceiptRelation(Integer receiptId);
+
     /**
      * 子订单付款类型列表
      */
     List<Integer> getRebatePayTypeList(Integer shopOrderId);
+
     /**
      * 根据用户类型获取用户openid列表(微信公众号openid,非收款小程序)
      */
     List<String> getOpenidListByPermission(List<Integer> permissions);
+
     /**
      * 统计收款金额
      */
     double countAssociateAmountById(Integer receiptId);
+
     /**
      * 总退款金额
      */
     double getRefundShopAmount(Integer shopOrderId);
+
     /**
      * 保存供应商退款
      */
     void insertRefundShop(RefundShopPo refundShopPo);
+
     /**
      * 保存供应商退款记录
      */
     void insertRefundShopRecord(RefundShopRecordPo refundShopRecord);
+
     /**
      * 供应商Id
      */
     Integer getShopIdByShopOrderId(Integer shopOrderId);
+
     /**
      * 查询这个子订单的主订单下面的所有子订单ID
      */
     List<Integer> getSubShopOrderList(Integer shopOrderId);
+
     /**
      * 查询当前子订单列表中已经返佣了的子订单
      */
     List<Integer> getSubShopOrderRebate(@Param("shopOrderIdList") List<Integer> shopOrderIdList);
+
     /**
      * 修改(付款供应商)付款状态
+     *
      * @param shopOrderId 子订单Id
-     * @param payStatus 付款状态
+     * @param payStatus   付款状态
      */
     void updateShopOrderPayStatus(Integer shopOrderId, Integer payStatus);
+
     /**
      * 收款项和订单关系
      */
     List<OrderReceiptRelationPo> getOrderReceiptRelationList(Integer receiptId);
+
     /**
      * 查询待审核数量
      */
@@ -216,11 +263,11 @@ public interface ReceiptMapper {
      */
     void updateShopRebateAmount(Integer shopId, Double amount);
 
-    List<ShopOrderVo>ReceiptDetailVo(String keyWord);
+    List<ShopOrderVo> ReceiptDetailVo(String keyWord);
 
     List<ShopOrderVo> ReceiptDetail(String keyWord);
 
     List<ShopOrderVo> ReceiptDetails(String keyWord);
 
-
+    List<Integer> getTeamClubUserIdBySpId(Integer spId);
 }

+ 35 - 5
src/main/java/com/caimei365/order/service/impl/ReceiptServiceImpl.java

@@ -546,8 +546,8 @@ public class ReceiptServiceImpl implements ReceiptService {
         ReceiptUserVo receiptUser = null;
         // 订单款
         if (1 == receiptType) {
-            // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构)
-            receiptUser = checkPermissions(Arrays.asList(10, 13), headers);
+            // 检查收款用户权限:10订单款查看(全部),13订单款查看(协销自己机构),16订单款查看(协销小组机构)
+            receiptUser = checkPermissions(Arrays.asList(10, 13,16), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
             }
@@ -558,6 +558,11 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if(!permissions.contains(10) && permissions.contains(16)){
+                //获取该协销小组下所有的userId
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
         // 非订单款
         else if (2 == receiptType) {
@@ -569,7 +574,7 @@ public class ReceiptServiceImpl implements ReceiptService {
         }
         // 返佣款
         else if (3 == receiptType) {
-            // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构)
+            // 检查收款用户权限:11返佣款查看(全部),14返佣款查看(协销自己机构),17返佣款查看(协销小组机构)
             receiptUser = checkPermissions(Arrays.asList(11, 14), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
@@ -581,10 +586,14 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if(!permissions.contains(11) && permissions.contains(17)){
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
         // 供应商退款
         else if (5 == receiptType) {
-            // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构)
+            // 检查收款用户权限: 12供应商退款查看(全部),15供应商退款查看(协销自己机构),18,供应商退款查看(协销小组机构)
             receiptUser = checkPermissions(Arrays.asList(12, 15), headers);
             if (null == receiptUser) {
                 return ResponseJson.error("无权限操作!", null);
@@ -596,6 +605,11 @@ public class ReceiptServiceImpl implements ReceiptService {
                 List<Integer> clubUserIds = getClubUserIds(receiptUser);
                 paramsBo.setUserIds(clubUserIds);
             }
+            if(!permissions.contains(12) && permissions.contains(18)){
+                // 获取该协销收款用户下的机构userIds
+                List<Integer> clubUserIds = getTeamClubUserIds(receiptUser);
+                paramsBo.setUserIds(clubUserIds);
+            }
         }
 
         if (StringUtils.isNotBlank(smsContent)) {
@@ -619,6 +633,20 @@ public class ReceiptServiceImpl implements ReceiptService {
         return ResponseJson.success(pageInfo);
     }
 
+    private List<Integer> getTeamClubUserIds(ReceiptUserVo receiptUser) {
+        List<Integer> clubUserIds = null;
+        if(1==receiptUser.getUserType()){
+            // 获取该协销收款用户下的机构userIds
+            Integer spId = receiptMapper.getServiceProviderId(receiptUser.getUnionId());
+            clubUserIds = receiptMapper.getTeamClubUserIdBySpId(spId);
+            if(null == clubUserIds || CollectionUtils.isEmpty(clubUserIds)){
+                clubUserIds = new ArrayList<>();
+                clubUserIds.add(0);
+            }
+        }
+        return clubUserIds;
+    }
+
     /**
      * 设置协销用户下的机构userIds
      */
@@ -644,7 +672,9 @@ public class ReceiptServiceImpl implements ReceiptService {
     @Override
     public ResponseJson<ReceiptVo> getReceiptDetail(Integer id, HttpHeaders headers) {
         // 检查收款用户权限:9非订单款查看(全部),10订单款查看(全部),13订单款查看(协销自己机构)
-        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(9, 10, 13), headers);
+//        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(9, 10, 13), headers);
+        //改为独立权限,有详情查看权限才能看     19,款项详情查看
+        ReceiptUserVo receiptUser = checkPermissions(Arrays.asList(19), headers);
         if (null == receiptUser) {
             return ResponseJson.error("无权限操作!", null);
         }

+ 68 - 59
src/main/resources/mapper/ReceiptMapper.xml

@@ -283,7 +283,8 @@
                         IFNULL((
                                    SELECT SUM(b.associateAmount)
                                    FROM cm_receipt_order_relation b
-                                   WHERE b.receiptID = cdr.id AND b.delFlag = '0'
+                                   WHERE b.receiptID = cdr.id
+                                     AND b.delFlag = '0'
                                ), 0) AS associateAmount
         FROM cm_discern_receipt cdr
                  LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
@@ -339,9 +340,9 @@
         <if test="endDate != null  and endDate != ''">
             AND cdr.receiptDate <![CDATA[  <  ]]> #{endDate}
         </if>
-          <if test="newReceiptType !=null and newReceiptType !=''">
-             and cdr.newReceiptType=#{newReceiptType}
-          </if>
+        <if test="newReceiptType !=null and newReceiptType !=''">
+            and cdr.newReceiptType=#{newReceiptType}
+        </if>
         <if test="receiptStatusArr != null">
             AND cdr.receiptStatus in
             <foreach collection="receiptStatusArr" open="(" close=")" separator="," item="val">
@@ -382,30 +383,31 @@
                         cdr.cancelReason,
                         cdr.confirmType,
                         cdr.reviewReason,
-                        IFNULL(cdr.newReceiptType,2) AS newReceiptType,
+                        IFNULL(cdr.newReceiptType, 2) AS newReceiptType,
                         cdr.shopName,
-                        receiptUserPermissionID AS receiptUserPermissionId,
-                        confirmUserPermissionID AS confirmUserPermissionId,
-                        reviewUserPermissionID  AS reviewUserPermissionId,
-                        cancelUserPermissionID  AS cancelUserPermissionId,
+                        receiptUserPermissionID       AS receiptUserPermissionId,
+                        confirmUserPermissionID       AS confirmUserPermissionId,
+                        reviewUserPermissionID        AS reviewUserPermissionId,
+                        cancelUserPermissionID        AS cancelUserPermissionId,
                         CASE
                             WHEN cror.relationType = 2 THEN co.organizeID
                             WHEN cror.relationType = 1 THEN cso.organizeID
-                            ELSE '' END         AS organizeId,
+                            ELSE '' END               AS organizeId,
                         CASE
                             WHEN cror.relationType = 2 THEN co.userID
                             WHEN cror.relationType = 1 THEN cso.userID
-                            ELSE '' END         AS userId,
+                            ELSE '' END               AS userId,
                         IFNULL((
                                    SELECT SUM(b.associateAmount)
                                    FROM cm_receipt_order_relation b
-                                   WHERE b.receiptID = cdr.id AND b.delFlag = '0'
-                               ), 0)            AS associateAmount
+                                   WHERE b.receiptID = cdr.id
+                                     AND b.delFlag = '0'
+                               ), 0)                  AS associateAmount
         FROM cm_discern_receipt cdr
                  LEFT JOIN cm_receipt_order_relation cror ON (cror.receiptID = cdr.id AND cror.delFlag = '0')
                  LEFT JOIN cm_order co ON (cror.orderID = co.orderID AND cror.relationType = 2)
                  LEFT JOIN cm_shop_order cso ON (cror.orderID = cso.shopOrderID AND cror.relationType = 1)
-                 -- AND cror.relationType = 1
+             -- AND cror.relationType = 1
 
 
         WHERE cdr.delFlag = '0'
@@ -529,7 +531,7 @@
                  INNER JOIN cm_order o ON cms.orderID = o.orderID
                  INNER JOIN cm_discern_receipt cdr ON cms.shopOrderID = cdr.shopOrderID
                  LEFT JOIN USER u ON o.userID = u.userID
-                 LEFT JOIN shop s ON s.shopID=cms.shopID
+                 LEFT JOIN shop s ON s.shopID = cms.shopID
         WHERE cdr.id = #{receiptId}
           AND o.delFlag = '0'
           AND cms.delFlag = '0'
@@ -538,11 +540,10 @@
     </select>
 
     <select id="getReceiptOrderlists" resultType="com.caimei365.order.model.vo.OrderVo">
-        SELECT
-               cdr.newReceiptType,
+        SELECT cdr.newReceiptType,
                cdr.shopName
         FROM cm_discern_receipt cdr
-                 LEFT JOIN shop s ON s.shopID=cdr.shopID
+                 LEFT JOIN shop s ON s.shopID = cdr.shopID
         WHERE cdr.id = #{receiptId}
           AND cdr.delFlag = '0'
     </select>
@@ -745,15 +746,15 @@
           AND STATUS = '2'
     </select>
     <select id="getShopOrderListByReceiptId" resultType="com.caimei365.order.model.vo.ShopOrderVo">
-        SELECT DISTINCT cso.shopOrderId                                                  AS shopOrderId,
+        SELECT DISTINCT cso.shopOrderId                   AS shopOrderId,
                         cso.shopOrderNo,
-                        cso.orderID                                                      AS orderId,
+                        cso.orderID                       AS orderId,
                         cso.orderNo,
-                        cso.shopID                                                       AS shopId,
+                        cso.shopID                        AS shopId,
                         cso.note,
-                        cso.userID                                                       AS userId,
-                        cso.clubID                                                       AS clubId,
-                        cso.spID                                                         AS spId,
+                        cso.userID                        AS userId,
+                        cso.clubID                        AS clubId,
+                        cso.spID                          AS spId,
                         cso.orderPromotionsId,
                         cso.promotionFullReduction,
                         cso.brokerage,
@@ -773,15 +774,16 @@
                         cso.sendOutStatus,
                         cso.splitFlag,
                         cso.shopOtherFee,
-                        s.name                                                           AS shopName,
-                        ifnull(co.secondHandOrderFlag,0) as secondHandOrderFlag,
+                        s.name                            AS shopName,
+                        ifnull(co.secondHandOrderFlag, 0) as secondHandOrderFlag,
                         IFNULL((SELECT SUM(refundAmount)
-        FROM cm_refund_shop_record
-        WHERE shopOrderID = cso.shopOrderID AND delFlag = 0), 0) AS shopRefundAmount
+                                FROM cm_refund_shop_record
+                                WHERE shopOrderID = cso.shopOrderID
+                                  AND delFlag = 0), 0)    AS shopRefundAmount
         FROM cm_receipt_order_relation cror
-        LEFT JOIN cm_shop_order cso ON cso.shopOrderID = cror.orderID
-        LEFT JOIN shop s ON s.shopID = cso.shopID
-        LEFT JOIN cm_order co on co.orderID = cso.orderID
+                 LEFT JOIN cm_shop_order cso ON cso.shopOrderID = cror.orderID
+                 LEFT JOIN shop s ON s.shopID = cso.shopID
+                 LEFT JOIN cm_order co on co.orderID = cso.orderID
         WHERE cror.delFlag = '0'
           AND cror.relationType = '1'
           AND cror.receiptID = #{receiptId}
@@ -1068,35 +1070,35 @@
     </select>
     <select id="ReceiptDetail" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT DISTINCT
-               cms.orderID,
-               cms.shopOrderID,
-               cms.shopOrderNo,
-               s.name AS shopName,
-               cms.productAmount,
-               cmo.orderNo,
-               u.userName,
-               cmo.confirmTime,
-               cms.receiptAmount,
-               cms.needPayAmount,
-               cms.payedShopAmount,
-               cmo.rebateFee
+        cms.orderID,
+        cms.shopOrderID,
+        cms.shopOrderNo,
+        s.name AS shopName,
+        cms.productAmount,
+        cmo.orderNo,
+        u.userName,
+        cmo.confirmTime,
+        cms.receiptAmount,
+        cms.needPayAmount,
+        cms.payedShopAmount,
+        cmo.rebateFee
         FROM cm_shop_order cms
-                 LEFT JOIN shop s ON s.shopID = cms.shopID
-                 LEFT JOIN cm_order cmo ON cmo.orderID = cms.orderID
-                 LEFT JOIN `user` u ON u.userID = cms.userID
-                 LEFT JOIN cm_discern_receipt csp ON csp.shopOrderID = cms.shopOrderID
-                 <where>
-                     <if test="keyWord !=null and keyWord !=''">
-                         AND (s.name LIKE concat('%',#{keyWord},'%') or cmo.orderId=#{keyWord})
-                     </if>
-                     AND cms.payStatus=3
-                     AND cmo.receiptStatus = 3
-                     AND cmo.confirmTime >= '2021-09-01 00:01:00'
-                     AND cmo.rebateFlag != 1
-                     AND cms.shopId != 998
-                     AND csp.newReceiptType is null
-                     ORDER BY orderId DESC
-                </where>
+        LEFT JOIN shop s ON s.shopID = cms.shopID
+        LEFT JOIN cm_order cmo ON cmo.orderID = cms.orderID
+        LEFT JOIN `user` u ON u.userID = cms.userID
+        LEFT JOIN cm_discern_receipt csp ON csp.shopOrderID = cms.shopOrderID
+        <where>
+            <if test="keyWord !=null and keyWord !=''">
+                AND (s.name LIKE concat('%',#{keyWord},'%') or cmo.orderId=#{keyWord})
+            </if>
+            AND cms.payStatus=3
+            AND cmo.receiptStatus = 3
+            AND cmo.confirmTime >= '2021-09-01 00:01:00'
+            AND cmo.rebateFlag != 1
+            AND cms.shopId != 998
+            AND csp.newReceiptType is null
+            ORDER BY orderId DESC
+        </where>
     </select>
 
     <select id="ReceiptDetails" resultType="com.caimei365.order.model.vo.ShopOrderVo">
@@ -1112,6 +1114,13 @@
 
 
     </select>
+    <select id="getTeamClubUserIdBySpId" resultType="java.lang.Integer">
+        SELECT userID
+        FROM club
+        WHERE spID IN (SELECT serviceId
+                       FROM cm_serviceteam_group
+                       WHERE teamId = (SELECT teamId FROM cm_serviceteam_group WHERE serviceId = #{spId}))
+    </select>
 
 
 </mapper>