Просмотр исходного кода

Merge remote-tracking branch 'origin/developer' into developerD

huangzhiguo 2 лет назад
Родитель
Сommit
9e529dd239

+ 9 - 7
src/main/java/com/caimei365/order/controller/OrderSellerApi.java

@@ -23,7 +23,7 @@ import java.util.Map;
  * @author : Charles
  * @date : 2021/7/19
  */
-@Api(tags="协销订单API")
+@Api(tags = "协销订单API")
 @RestController
 @RequiredArgsConstructor
 @RequestMapping("/order/seller")
@@ -36,7 +36,7 @@ public class OrderSellerApi {
     @ApiOperation("获取协销各状态订单数量")
     @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
     @GetMapping("/count")
-    public  ResponseJson<Map<String, Object>> getOrderCount(Integer serviceProviderId) {
+    public ResponseJson<Map<String, Object>> getOrderCount(Integer serviceProviderId) {
         if (null == serviceProviderId) {
             return ResponseJson.error("协销Id不能为空!", null);
         }
@@ -51,18 +51,20 @@ public class OrderSellerApi {
             @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "listType", value = "1:待确认,2:待付款,3:待发货,4:已发货,5:退货款"),
             @ApiImplicitParam(required = false, name = "orderNo", value = "订单编号"),
-            @ApiImplicitParam(required = false, name = "orderSubmitType", value = "1:自主订单, 2:协销或后台订单"),
+            @ApiImplicitParam(required = false, name = "orderSubmitType", value = "1:自主订单, 2:协销或后台订单,3:组员订单"),
+            @ApiImplicitParam(required = false, name = "groupServiceId", value = "组员协销id"),
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/list")
-    public ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType, String orderNo,
+    public ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType,
+                                                        String orderNo, Integer groupServiceId,
                                                         @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                         @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error("协销Id不能为空!", null);
         }
-        return orderSellerService.getOrderList(serviceProviderId, listType, orderSubmitType, orderNo, pageNum, pageSize);
+        return orderSellerService.getOrderList(serviceProviderId, listType, orderSubmitType, orderNo, groupServiceId, pageNum, pageSize);
     }
 
     /**
@@ -79,8 +81,8 @@ public class OrderSellerApi {
     })
     @GetMapping("/list/club")
     public ResponseJson<PageInfo<OrderVo>> getOrderListClub(Integer serviceProviderId, Integer clubId, Integer listType, Integer orderSubmitType,
-                                                        @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                        @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+                                                            @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                            @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error("协销Id不能为空!", null);
         }

+ 6 - 0
src/main/java/com/caimei365/order/mapper/OrderSellerMapper.java

@@ -81,4 +81,10 @@ public interface OrderSellerMapper {
      * 订单未查看数量
      */
     Integer getUncheckedOrderCount(Integer userId, Date lastCheckOrderDate);
+
+    List<Integer> getClubUserIdsByRole(Integer serviceProviderId);
+
+    Integer findLeaderId(Integer spId);
+
+    Integer findManagerId();
 }

+ 4 - 0
src/main/java/com/caimei365/order/model/po/OrderPo.java

@@ -222,4 +222,8 @@ public class OrderPo implements Serializable {
      * 优惠券金额(面值)
      */
     private Double couponAmount;
+    /**
+     * 协销名称
+     */
+    private String serviceName;
 }

+ 6 - 3
src/main/java/com/caimei365/order/model/vo/OrderVo.java

@@ -333,9 +333,12 @@ public class OrderVo implements Serializable {
      */
     private Integer proCount;
     /**
-     *   下单人电话
+     * 下单人电话
      */
-  private String mobile;
-
+    private String mobile;
+    /**
+     * 协销姓名
+     */
+    private String serviceName;
 
 }

+ 1 - 1
src/main/java/com/caimei365/order/service/OrderSellerService.java

@@ -22,7 +22,7 @@ public interface OrderSellerService {
      * @param pageNum    页码
      * @param pageSize   每页数量
      */
-    ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType, String orderNo, int pageNum, int pageSize);
+    ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType, String orderNo,Integer groupServiceId, int pageNum, int pageSize);
 
     /**
      * 协销下机构总订单列表

+ 37 - 17
src/main/java/com/caimei365/order/service/impl/OrderSellerServiceImpl.java

@@ -12,10 +12,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Description
@@ -38,23 +35,39 @@ public class OrderSellerServiceImpl implements OrderSellerService {
      *
      * @param serviceProviderId 协销Id
      * @param listType          1:待确认,2:待付款,3:待发货,4:已发货,5:退货款
-     * @param orderSubmitType   1:自主订单, 2:协销或后台订单
+     * @param orderSubmitType   1:自主订单, 2:协销或后台订单 ,3:组员订单
      * @param orderNo           订单编号
      * @param pageNum           页码
      * @param pageSize          每页数量
      */
     @Override
-    public ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType, String orderNo, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<OrderVo>> getOrderList(Integer serviceProviderId, Integer listType, Integer orderSubmitType, String orderNo, Integer groupServiceId, int pageNum, int pageSize) {
         // 获取该协销下的机构用户Id
-        List<Integer> clubUserIds = orderSellerMapper.getClubUserIds(serviceProviderId);
-        // 分页请求数据
-        PageHelper.startPage(pageNum, pageSize);
+        List<Integer> clubUserIds = new ArrayList<>();
+        if (null != orderSubmitType && 3 == orderSubmitType) {
+            if (null != groupServiceId && groupServiceId > 0) {
+                //组员协销id不为空的时候,查某个组员名下的单
+                clubUserIds = orderSellerMapper.getClubUserIds(groupServiceId);
+            } else {
+                //查组员订单的时候查该协销是组长还是总管理员,组长查自己名下所有组员机构的订单,管理员查所有其他组员
+                clubUserIds = orderSellerMapper.getClubUserIdsByRole(serviceProviderId);
+            }
+        } else {
+            clubUserIds = orderSellerMapper.getClubUserIds(serviceProviderId);
+        }
+        List<OrderVo> orderList = new ArrayList<OrderVo>();
         // 获取订单列表
-        List<OrderVo> orderList = orderSellerMapper.getOrderList(clubUserIds, listType, orderSubmitType, orderNo);
-        //设置主订单数据
-        orderList.forEach(this::setSellerOrder);
-        PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
-        return ResponseJson.success(pageInfo);
+        if (null != clubUserIds && clubUserIds.size() > 0) {
+            // 分页请求数据
+            PageHelper.startPage(pageNum, pageSize);
+            orderList = orderSellerMapper.getOrderList(clubUserIds, listType, orderSubmitType, orderNo);
+            //设置主订单数据
+            orderList.forEach(this::setSellerOrder);
+            PageInfo<OrderVo> pageInfo = new PageInfo(orderList);
+            return ResponseJson.success(pageInfo);
+        } else {
+            return ResponseJson.success(new PageInfo<OrderVo>(orderList));
+        }
     }
 
     /**
@@ -89,10 +102,17 @@ public class OrderSellerServiceImpl implements OrderSellerService {
      */
     @Override
     public ResponseJson<PageInfo<OrderVo>> getOrderListClub(Integer serviceProviderId, Integer clubId, Integer listType, Integer orderSubmitType, int pageNum, int pageSize) {
-        // 判断该机构是不是该协销下的
+        // 判断该机构是不是该协销下的 1342采美默认协销经理(官方账号)协销id1342为默认,不受限制
         Integer spId = orderSellerMapper.getSpIdByClubId(clubId);
-        if (!serviceProviderId.equals(spId)) {
-            return ResponseJson.error("该机构不是该协销下的机构!", null);
+        // 协销组长和总管理员也可以看
+        Integer leaderId = orderSellerMapper.findLeaderId(spId);
+        Integer managerId = orderSellerMapper.findManagerId();
+        boolean role = serviceProviderId.equals(leaderId) || serviceProviderId.equals(managerId);
+        if (!role && !serviceProviderId.equals(spId)) {
+            if (1342 != spId) {
+                //不是总管理员或组长,看是不是本人
+                return ResponseJson.error("该机构不是该协销下的机构!", null);
+            }
         }
         // 分页请求数据
         PageHelper.startPage(pageNum, pageSize);

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

@@ -196,7 +196,10 @@
                payTime,
                rebateFlag,
                clauseID             AS clauseId,
-               clauseName
+               clauseName,
+               (select case status when 91 then '采美默认协销经理(官方账号)' else linkMan end
+               from serviceprovider
+               where serviceProviderID = (SELECT spId FROM club WHERE clubId=cm_order.clubID)) AS serviceName
         FROM cm_order
         WHERE orderID = #{orderId}
     </select>

+ 116 - 63
src/main/resources/mapper/OrderSellerMapper.xml

@@ -2,92 +2,105 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.order.mapper.OrderSellerMapper">
     <update id="updateClubLastCheckOrderDate">
-        UPDATE club SET lastCheckOrderDate = #{date} WHERE clubID = #{clubId}
+        UPDATE club
+        SET lastCheckOrderDate = #{date}
+        WHERE clubID = #{clubId}
     </update>
     <select id="getClubUserIds" resultType="java.lang.Integer">
-        SELECT userID FROM club WHERE spID = #{serviceProviderId}
+        SELECT userID
+        FROM club
+        WHERE spID = #{serviceProviderId}
     </select>
     <select id="getOrderList" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
-        orderSeen,
-        orderID AS orderId,
-        shopOrderIds,
-        orderSource,
-        orderNo,
-        userID AS userId,
-        clubID AS clubId,
-        buyUserID AS buyUserId,
-        orderTime,
-        updateDate,
-        delFlag,
-        userBeans,
-        orderType,
-        orderSubmitType,
-        confirmFlag,
-        onlinePayFlag,
-        splitFlag,
-        payFlag,
-        receiptStatus,
-        payStatus,
-        zeroCostFlag,
-        sendOutStatus,
-        refundType,
-        affirmPaymentFlag,
-        productCount,
-        presentCount,
-        promotionalGiftsCount,
-        hasActProduct,
-        promotionFullReduction,
-        secondHandOrderFlag,
-        invoiceFlag,
-        freePostFlag AS postageFlag,
-        freight AS postage,
-        productTotalFee,
-        orderTotalFee,
-        payTotalFee,
-        payableAmount,
-        balancePayFee,
-        discountFee,
-        couponAmount,
-        status,
-        confirmTime,
-        payTime,
-        rebateFlag,
-        clauseID AS clauseId,
-        clauseName
-        FROM cm_order
-        WHERE delFlag = 0 AND userID IN
+        co.orderSeen,
+        co.orderID AS orderId,
+        co.shopOrderIds,
+        co.orderSource,
+        co.orderNo,
+        co.userID AS userId,
+        co.clubID AS clubId,
+        co.buyUserID AS buyUserId,
+        co.orderTime,
+        co.updateDate,
+        co.delFlag,
+        co.userBeans,
+        co.orderType,
+        co.orderSubmitType,
+        co.confirmFlag,
+        co.onlinePayFlag,
+        co.splitFlag,
+        co.payFlag,
+        co.receiptStatus,
+        co.payStatus,
+        co.zeroCostFlag,
+        co.sendOutStatus,
+        co.refundType,
+        co.affirmPaymentFlag,
+        co.productCount,
+        co.presentCount,
+        co.promotionalGiftsCount,
+        co.hasActProduct,
+        co.promotionFullReduction,
+        co.secondHandOrderFlag,
+        co.invoiceFlag,
+        co.freePostFlag AS postageFlag,
+        co.freight AS postage,
+        co.productTotalFee,
+        co.orderTotalFee,
+        co.payTotalFee,
+        co.payableAmount,
+        co.balancePayFee,
+        co.discountFee,
+        co.couponAmount,
+        co.status,
+        co.confirmTime,
+        co.payTime,
+        co.rebateFlag,
+        co.clauseID AS clauseId,
+        co.clauseName
+        <if test="orderSubmitType == 3">
+            ,s.linkMan as serviceName
+        </if>
+        FROM cm_order co
+        <if test="orderSubmitType == 3">
+            LEFT JOIN club c ON co.userId=c.userId
+            LEFT JOIN serviceprovider s ON c.spId=s.serviceProviderID
+        </if>
+        WHERE co.delFlag = 0 AND co.userID IN
         <foreach item="userId" index="index" collection="userIds" open="(" separator="," close=")">
             #{userId}
         </foreach>
         <if test="listType == 1 ">
-            AND status = '0'
+            AND co.status = '0'
         </if>
         <if test="listType == 2 ">
-            AND status IN(11,12,13,21,22,23)
+            AND co.status IN(11,12,13,21,22,23)
         </if>
         <if test="listType == 3 ">
-            AND status IN(11,12,21,22,31,32)
+            AND co.status IN(11,12,21,22,31,32)
         </if>
         <if test="listType == 4 ">
-            AND status IN(12,13,22,23,32,33)
+            AND co.status IN(12,13,22,23,32,33)
         </if>
         <if test="listType == 5 ">
-            AND refundType IN(1,2)
+            AND co.refundType IN(1,2)
         </if>
         <if test="orderSubmitType == 1">
-            AND orderSubmitType IN (0,1,2)
+            AND co.orderSubmitType IN (0,1,2)
         </if>
         <if test="orderSubmitType == 2">
-            AND orderSubmitType IN (3,4)
+            AND co.orderSubmitType IN (3,4)
         </if>
         <if test="orderNo != null and orderNo != '' ">
-            AND orderNo = #{orderNo}
+            AND co.orderNo = #{orderNo}
         </if>
-        ORDER BY orderTime DESC
+        ORDER BY co.orderTime DESC
     </select>
     <select id="getSpIdByClubId" resultType="java.lang.Integer">
-        SELECT spID FROM club WHERE clubID = #{clubId}
+        SELECT spID
+        FROM club
+        WHERE clubID = #{clubId}
     </select>
     <select id="getOrderListClub" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT
@@ -162,7 +175,9 @@
         ORDER BY orderTime DESC
     </select>
     <select id="getUserIdBySpId" resultType="java.lang.Integer">
-        SELECT userID FROM serviceprovider WHERE serviceProviderID = #{serviceProviderId}
+        SELECT userID
+        FROM serviceprovider
+        WHERE serviceProviderID = #{serviceProviderId}
     </select>
     <select id="getOrderListByKeyword" resultType="com.caimei365.order.model.vo.OrderVo">
         SELECT DISTINCT
@@ -222,7 +237,9 @@
         ORDER BY co.orderTime DESC
     </select>
     <select id="getClubIdsBySellerId" resultType="java.lang.Integer">
-        select userID from club where spID = #{serviceProviderId}
+        select userID
+        from club
+        where spID = #{serviceProviderId}
     </select>
     <select id="getSellerOrderCount" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM cm_order
@@ -247,7 +264,10 @@
         </if>
     </select>
     <select id="getLastCheckOrderDate" resultType="java.util.Date">
-        SELECT lastCheckOrderDate FROM club WHERE userID = #{userId} LIMIT 1
+        SELECT lastCheckOrderDate
+        FROM club
+        WHERE userID = #{userId}
+        LIMIT 1
     </select>
     <select id="getUncheckedOrderCount" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM cm_order
@@ -257,4 +277,37 @@
             AND orderTime > #{lastCheckOrderDate}
         </if>
     </select>
+    <select id="getClubUserIdsByRole" resultType="java.lang.Integer">
+        SELECT DISTINCT userId FROM club
+        WHERE
+            (SELECT serviceProviderId
+             FROM cm_serviceteam_manager
+             WHERE serviceProviderId=#{serviceProviderId}) IS NOT NULL
+            AND spID IN
+            (SELECT serviceId
+            FROM cm_serviceteam_group
+            WHERE serviceId!=#{serviceProviderId})
+        UNION
+        SELECT userId FROM club
+        WHERE
+            (SELECT serviceProviderId
+             FROM cm_serviceteam_manager
+             WHERE serviceProviderId=#{serviceProviderId}) IS NULL
+          AND spID IN
+              (SELECT serviceId
+               FROM cm_serviceteam_group csg
+               LEFT JOIN cm_serviceteam_role csr ON csg.teamId=csr.id
+               WHERE csr.leaderId=#{serviceProviderId}
+                 AND csg.serviceId!=#{serviceProviderId})
+    </select>
+    <select id="findLeaderId" resultType="java.lang.Integer">
+        SELECT csr.leaderId
+        FROM cm_serviceteam_role csr
+        LEFT JOIN cm_serviceteam_group csg ON csg.teamId = csr.id
+        WHERE csg.serviceId = #{spId}
+    </select>
+    <select id="findManagerId" resultType="java.lang.Integer">
+        select serviceProviderId
+        from cm_serviceteam_manager
+    </select>
 </mapper>