yumeng 1 năm trước cách đây
mục cha
commit
6c28662cba

+ 2 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/JYKuaishouPromoter.java

@@ -199,6 +199,8 @@ public class JYKuaishouPromoter {
     private Long ruleId;
     @Transient
     private String ruleName;
+    @Transient
+    private Integer authStatus;
 
 
     private Long expertMentorId;

+ 1 - 1
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/controller/JiaoYangCallbackController.java

@@ -55,6 +55,6 @@ public class JiaoYangCallbackController {
             return "授权失败,请联系技术解决";
         }
 
-        return "绑定成功";
+        return "授权成功";
     }
 }

+ 178 - 56
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/controller/JiaoYangDingPanController.java

@@ -60,15 +60,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -132,15 +127,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -202,15 +192,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -274,15 +259,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -394,15 +374,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -498,15 +473,10 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
-                }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
-                }
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -541,7 +511,6 @@ public class JiaoYangDingPanController extends BaseController {
     }
 
 
-
     @GetMapping("/getDingPanItemList")
     @ApiOperation(value = "切片盯盘")
     public JSONObject getItemList(Long userId, String startDate, String endDate) {
@@ -569,15 +538,75 @@ public class JiaoYangDingPanController extends BaseController {
                     userIds.add(userId);
                 }
                 promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
-            } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-                if ("jy_expert_business".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
+            }
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
+                if (Check.isNull(promoterIds)) {
+                    throw new Exception("该用户下未查询到绑定达人");
                 }
-                if ("jy_expert_mentor".equals(roleId)) {
-                    promoterIds = jiaoYangDingPanService.getPromoterIdsByMentorId(userId);
+            }
+            if (!Check.isNull(promoterIds)) {
+                requestMap.put("promoterIds", promoterIds);
+            }
+            Long start = DateUtils.strDateToInt(startDate);
+            Long end = DateUtils.strDateToInt(endDate);
+            requestMap.put("start", start);
+            requestMap.put("end", end);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(startDate), simpleDateFormat.parse(endDate));
+            String lastEndStr = DateUtils.getAnotherDay("yyyy-MM-dd", startDate, -1); // 上一时段结束日期
+            String lastStartStr = DateUtils.getAnotherDay("yyyy-MM-dd", lastEndStr, -differDay); // 上一时段开始日期
+            requestMap.put("lastEnd", DateUtils.strDateToInt(lastEndStr));
+            requestMap.put("lastStart", DateUtils.strDateToInt(lastStartStr));
+            Long nowDate = Long.valueOf(DateUtils.getNowDate("yyyyMMdd"));
+            if (start.equals(nowDate) && end.equals(nowDate)) {
+                Integer nowHour = DateUtils.getNowHour();
+                requestMap.put("nowHour", nowHour);
+            }
+            List<JSONObject> data = jiaoYangDingPanService.getItemList(requestMap);
+            returnJson.put("code", 200);
+            returnJson.put("data", data);
+            returnJson.put("success", true);
+        } catch (Exception e) {
+            returnJson.put("code", 500);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
+    @GetMapping("/getDingPanTuiGuangUserList")
+    @ApiOperation(value = "切片盯盘")
+    public JSONObject getDingPanTuiGuangUserList(Long userId, String startDate, String endDate) {
+        Map<String, Object> requestMap = new HashMap<>();
+        JSONObject returnJson = new JSONObject();
+        try {
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入用户id");
+            }
+            if (Check.isNull(startDate)) {
+                throw new Exception("请传入开始日期");
+            }
+            if (Check.isNull(endDate)) {
+                throw new Exception("请传入结束日期");
+            }
+            String roleId = sysRoleService.getRoleBYUserId(userId);
+            // 剪手经理,渠道经理 查询部门下所有成员数据
+            List<Long> promoterIds = new ArrayList<>();
+            if ("jy_bd".equals(roleId) || "jy_bd_manage".equals(roleId) || "jy_scissors_manage".equals(roleId) || "jy_scissors".equals(roleId) || "jy_out_operation_manager".equals(roleId) || "jy_out_operation".equals(roleId)) {
+                List<Long> userIds = new ArrayList<>();
+                if ("jy_bd_manage".equals(roleId) || "jy_scissors_manage".equals(roleId) || "jy_out_operation_manager".equals(roleId)) {
+                    Long deptId = sysDeptService.getDeptIdByUserId(userId);
+                    userIds = sysDeptService.getDeptUserListByDeptId(deptId);
+                } else {
+                    userIds.add(userId);
                 }
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByUserIds(userIds);
+            } else if ("jy_expert_business".equals(roleId)) {
+                promoterIds = jiaoYangDingPanService.getPromoterIdsByBusinessId(userId);
             }
-            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId)) {
+            if (!"admin".equals(roleId) && !"jy_admnin".equals(roleId) && !"jy_expert_mentor".equals(roleId)) {
                 if (Check.isNull(promoterIds)) {
                     throw new Exception("该用户下未查询到绑定达人");
                 }
@@ -600,7 +629,100 @@ public class JiaoYangDingPanController extends BaseController {
                 Integer nowHour = DateUtils.getNowHour();
                 requestMap.put("nowHour", nowHour);
             }
-            List<JSONObject> data = jiaoYangDingPanService.getItemList(requestMap);
+            List<JSONObject> data = jiaoYangDingPanService.getDingPanTuiGuangUserList(requestMap);
+            returnJson.put("code", 200);
+            returnJson.put("data", data);
+            returnJson.put("success", true);
+        } catch (Exception e) {
+            returnJson.put("code", 500);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
+    @GetMapping("/getDingPanMentorBusinessList")
+    @ApiOperation(value = "切片盯盘")
+    public JSONObject getDingPanMentorBusinessList(Long userId, String startDate, String endDate) {
+        Map<String, Object> requestMap = new HashMap<>();
+        JSONObject returnJson = new JSONObject();
+        try {
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入用户id");
+            }
+            if (Check.isNull(startDate)) {
+                throw new Exception("请传入开始日期");
+            }
+            if (Check.isNull(endDate)) {
+                throw new Exception("请传入结束日期");
+            }
+            String roleId = sysRoleService.getRoleBYUserId(userId);
+            // 剪手经理,渠道经理 查询部门下所有成员数据
+            if (!roleId.equals("admin") && !roleId.equals("jy_admin")) {
+                returnJson.put("code", 200);
+                returnJson.put("data", null);
+                return returnJson;
+            }
+
+            Long start = DateUtils.strDateToInt(startDate);
+            Long end = DateUtils.strDateToInt(endDate);
+            requestMap.put("start", start);
+            requestMap.put("end", end);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(startDate), simpleDateFormat.parse(endDate));
+            String lastEndStr = DateUtils.getAnotherDay("yyyy-MM-dd", startDate, -1); // 上一时段结束日期
+            String lastStartStr = DateUtils.getAnotherDay("yyyy-MM-dd", lastEndStr, -differDay); // 上一时段开始日期
+            requestMap.put("lastEnd", DateUtils.strDateToInt(lastEndStr));
+            requestMap.put("lastStart", DateUtils.strDateToInt(lastStartStr));
+            Long nowDate = Long.valueOf(DateUtils.getNowDate("yyyyMMdd"));
+            if (start.equals(nowDate) && end.equals(nowDate)) {
+                Integer nowHour = DateUtils.getNowHour();
+                requestMap.put("nowHour", nowHour);
+            }
+            List<JSONObject> data = jiaoYangDingPanService.getDingPanMentorBusinessList(requestMap);
+            returnJson.put("code", 200);
+            returnJson.put("data", data);
+            returnJson.put("success", true);
+        } catch (Exception e) {
+            returnJson.put("code", 500);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+    @GetMapping("/getTeamDetail")
+    @ApiOperation(value = "切片盯盘")
+    public JSONObject getTeamDetail(Long deptId, String startDate, String endDate) {
+        Map<String, Object> requestMap = new HashMap<>();
+        JSONObject returnJson = new JSONObject();
+        try {
+            if (Check.isNull(deptId)) {
+                throw new Exception("请传入部门id");
+            }
+            if (Check.isNull(startDate)) {
+                throw new Exception("请传入开始日期");
+            }
+            if (Check.isNull(endDate)) {
+                throw new Exception("请传入结束日期");
+            }
+
+            requestMap.put("deptId", deptId);
+            Long start = DateUtils.strDateToInt(startDate);
+            Long end = DateUtils.strDateToInt(endDate);
+            requestMap.put("start", start);
+            requestMap.put("end", end);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(startDate), simpleDateFormat.parse(endDate));
+            String lastEndStr = DateUtils.getAnotherDay("yyyy-MM-dd", startDate, -1); // 上一时段结束日期
+            String lastStartStr = DateUtils.getAnotherDay("yyyy-MM-dd", lastEndStr, -differDay); // 上一时段开始日期
+            requestMap.put("lastEnd", DateUtils.strDateToInt(lastEndStr));
+            requestMap.put("lastStart", DateUtils.strDateToInt(lastStartStr));
+            Long nowDate = Long.valueOf(DateUtils.getNowDate("yyyyMMdd"));
+            if (start.equals(nowDate) && end.equals(nowDate)) {
+                Integer nowHour = DateUtils.getNowHour();
+                requestMap.put("nowHour", nowHour);
+            }
+            List<JSONObject> data = jiaoYangDingPanService.getDingPanMentorBusinessList(requestMap);
             returnJson.put("code", 200);
             returnJson.put("data", data);
             returnJson.put("success", true);

+ 2 - 7
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/controller/JiaoYangReportController.java

@@ -482,13 +482,8 @@ public class JiaoYangReportController extends BaseController {
                 return getDataTable(new ArrayList<JSONObject>());
             }
             requestMap.put("promoterIds", promoterIds);
-        } else if ("jy_expert_business".equals(roleId) || "jy_expert_mentor".equals(roleId)) {
-            if ("jy_expert_business".equals(roleId)) {
-                promoterIds = jiaoYangReportService.getPromoterIdsByBusinessId(userId);
-            }
-            if ("jy_expert_mentor".equals(roleId)) {
-                promoterIds = jiaoYangReportService.getPromoterIdsByMentorId(userId);
-            }
+        } else if ("jy_expert_business".equals(roleId)) {
+            promoterIds = jiaoYangReportService.getPromoterIdsByBusinessId(userId);
             if (Check.isNull(promoterIds)) {
                 return getDataTable(new ArrayList<JSONObject>());
             }

+ 4 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/mapper/IJiaoYangDingMapper.java

@@ -31,4 +31,8 @@ public interface IJiaoYangDingMapper {
     List<JSONObject> getPromoterList(Map<String, Object> requestMap);
 
     List<JSONObject> getItemList(Map<String, Object> requestMap);
+
+    List<JSONObject> getDingPanTuiGuangUserList(Map<String, Object> requestMap);
+
+    List<JSONObject> getDingPanMentorBusinessList(Map<String, Object> requestMap);
 }

+ 4 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/IJiaoYangDingPanService.java

@@ -31,4 +31,8 @@ public interface IJiaoYangDingPanService {
     List<JSONObject> getPromoterList(Map<String, Object> requestMap);
 
     List<JSONObject> getItemList(Map<String, Object> requestMap);
+
+    List<JSONObject> getDingPanTuiGuangUserList(Map<String, Object> requestMap);
+
+    List<JSONObject> getDingPanMentorBusinessList(Map<String, Object> requestMap);
 }

+ 10 - 0
ruixuan-live/src/main/java/com/ruixuan/jiaoyang/service/impl/JiaoYangDingPanServiceImpl.java

@@ -78,4 +78,14 @@ public class JiaoYangDingPanServiceImpl implements IJiaoYangDingPanService {
     public List<JSONObject> getItemList(Map<String, Object> requestMap) {
         return jiaoYangDingMapper.getItemList(requestMap);
     }
+
+    @Override
+    public List<JSONObject> getDingPanTuiGuangUserList(Map<String, Object> requestMap) {
+        return jiaoYangDingMapper.getDingPanTuiGuangUserList(requestMap);
+    }
+
+    @Override
+    public List<JSONObject> getDingPanMentorBusinessList(Map<String, Object> requestMap) {
+        return jiaoYangDingMapper.getDingPanMentorBusinessList(requestMap);
+    }
 }

+ 8 - 0
ruixuan-live/src/main/resources/mapper/isc/KuaishouPromoterMapper.xml

@@ -170,6 +170,12 @@
         t1.aweme_avg_digg_count_30,
         t1.aweme_digg_follower_ration,
         t1.live_average_user_30,
+        (
+        CASE when t5.promoter_id is not null
+        then 1
+        else 2
+        end
+        ) as 'authStatus',
         case
         WHEN t3.total_sale like '%万%'
         then SUBSTRING_INDEX(t3.total_sale,'-',-1)+0
@@ -189,6 +195,8 @@
         LEFT JOIN promoter_oerder_amount t2 on t1.promoter_id = t2.promoter_id
         LEFT JOIN promoter_sales_info t3 ON t1.promoter_id = t3.promoter_id
         left join promoter_bind_rule t4 on t1.promoter_id = t4.promoter_id
+        left join jy_promoter_access_token t5 on t1.promoter_id = t5.promoter_id
+
         <where>
             <if test="userList != null and userList.size() > 0  ">
                 and t1.user_id in

+ 165 - 14
ruixuan-live/src/main/resources/mapper/jiaoyang/JiaoYangDingPanMapper.xml

@@ -208,7 +208,6 @@
         )
         and user.status = 0
         limit 1) as 'leaderName',
-
         (select count(user.user_id)
         from sys_user user
         left join sys_user_role userRole on user.user_id = userRole.user_id
@@ -225,26 +224,26 @@
         t4.dept_name as 'deptName',
         count(t1.oid) as 'orderNum',
         round(sum(case when t1.order_status != 80 then 1 else 0 end) / count(t1.oid) * 100,
-        2) as 'validRadio', -- 有效率
+        2) as 'validRadio',
 
-        round(sum(pay_amount) / 100, 2) as 'payAmount', -- gmv
+        round(sum(pay_amount) / 100, 2) as 'payAmount',
         round(sum(case when order_status != 80 then pay_amount else 0 end) / 100,
-        2) as 'validPayAmount', -- 有效gmv
+        2) as 'validPayAmount',
         round(sum(case when t1.order_status != 80 then pay_amount else 0 end) / sum(pay_amount) * 100,
-        2) as 'validPayAmountRadio', -- gmv有效率
-        sum(case when t1.send_status = 0 and t1.order_status != 80 then 1 else 0 end) as 'notDeliveryNum', -- 未发货数
+        2) as 'validPayAmountRadio',
+        sum(case when t1.send_status = 0 and t1.order_status != 80 then 1 else 0 end) as 'notDeliveryNum',
         round(sum(case when t1.send_status = 1 and t1.order_status != 80 then 1 else 0 end) / sum(case
         when order_status != 80
         then 1
         else 0 end) *
         100,
-        2) as 'deliveryRadio', -- 发货率
-        count(distinct t1.clip_user_id) as 'promoterCount', -- 达人数
+        2) as 'deliveryRadio',
+        count(distinct t1.clip_user_id) as 'promoterCount',
         count(
         distinct t5.promoter_id
-        ) as 'addPromoterCount', -- 新增达人数
-        count(distinct t1.item_id) as 'itemCount', -- 商品数
-        count(distinct t6.item_id) as 'addItemCount' -- 新增商品数
+        ) as 'addPromoterCount',
+        count(distinct t1.item_id) as 'itemCount',
+        count(distinct t6.item_id) as 'addItemCount'
         from jy_order_list t1
         left join jy_kuaishou_promoter t2
         on t1.clip_user_id = t2.promoter_id
@@ -272,7 +271,7 @@
             </foreach>
         </if>
         group by t4.dept_id) t
-        join (select t4.dept_id as 'deptId',
+        left join (select t4.dept_id as 'deptId',
         count(t1.oid) as 'orderNum',
         round(sum(pay_amount) / 100, 2) as 'payAmount'
         from jy_order_list t1
@@ -293,6 +292,7 @@
             </foreach>
         </if>
         group by t4.dept_id) tt on t.deptId = tt.deptId
+        where t.deptId is not null
         order by t.orderNum desc
 
     </select>
@@ -474,7 +474,7 @@
         where photo_create_time &gt;= #{start}
         and photo_create_time &lt;= #{end}
         group by promoter_id) t3 on t1.clipUserId = t3.promoterId
-        join (select clip_user_id as 'clipUserId',
+        left join (select clip_user_id as 'clipUserId',
         count(oid) as 'orderNum',
         round(sum(pay_amount) / 100, 2) as 'payAmount'
         from jy_order_list
@@ -531,7 +531,7 @@
             </foreach>
         </if>
         group by item_id) t1
-         join (select item_id as 'itemId',
+        left  join (select item_id as 'itemId',
         image_url as 'imageUrl',
         count(oid) as 'orderNum',
         round(sum(pay_amount) / 100, 2) as 'payAmount'
@@ -552,4 +552,155 @@
         ) t2 on t1.itemId = t2.itemId
         order by t1.orderNum desc
     </select>
+    <select id="getDingPanTuiGuangUserList" resultType="com.alibaba.fastjson.JSONObject">
+        select t1.*,
+        round((t1.orderNum - t2.orderNum) / t2.orderNum * 100, 2) as 'orderNumRate',
+        round((t1.payAmount - t2.payAmount) / t2.payAmount * 100, 2) as 'payAmountRate'
+        from (select promotion_id as 'promotionId',
+        promotion_nick_name as 'promotionNickName',
+        count(oid) as 'orderNum',
+        round(sum(case when order_status != 80 then 1 else 0 end) / count(oid) * 100,
+        2) as 'validRadio',
+
+        round(sum(pay_amount) / 100, 2) as 'payAmount',
+        round(sum(case when order_status != 80 then pay_amount else 0 end) / 100,
+        2) as 'validPayAmount',
+        round(sum(case when order_status != 80 then pay_amount else 0 end) / sum(pay_amount) * 100,
+        2) as 'validPayAmountRadio',
+        sum(case when send_status = 0 and order_status != 80 then 1 else 0 end) as 'notDeliveryNum',
+        round(sum(case when send_status = 1 and order_status != 80 then 1 else 0 end) / sum(case
+        when order_status != 80
+        then 1
+        else 0 end) *
+        100,
+        2) as 'deliveryRadio',
+        count(distinct item_id) as 'itemCount',
+        count(distinct clip_user_id) as 'promoterCount'
+        from jy_order_list
+        where stat_date &gt;= #{start}
+        and stat_date &lt;= #{end}
+        <if test='nowHour != null and nowHour != ""'>
+            and stat_hour &lt;= #{nowHour}
+        </if>
+
+        group by promotion_id) t1
+       left join (select promotion_id as 'promotionId',
+        count(oid) as 'orderNum',
+        round(sum(pay_amount) / 100, 2) as 'payAmount'
+        from ruixuan.jy_order_list
+        where stat_date &gt;= #{lastStart}
+        and stat_date &lt;= #{lastEnd}
+        <if test='nowHour != null and nowHour != ""'>
+            and stat_hour &lt;= #{nowHour}
+        </if>
+
+        group by promotion_id) t2 on t1.promotionId = t2.promotionId
+    </select>
+    <select id="getDingPanMentorBusinessList" resultType="com.alibaba.fastjson.JSONObject">
+        select * from (
+        select t.*,
+        round((t.orderNum - tt.orderNum) / tt.orderNum * 100, 2) as 'orderNumRate',
+        round((t.payAmount - tt.payAmount) / tt.payAmount * 100, 2) as 'payAmountRate'
+        from (select '导师' as 'type',
+        t1.expert_mentor_id as 'userId',
+        t1.expert_mentor_name as 'userName',
+        count(t2.oid) as 'orderNum',
+        round(sum(case when t2.order_status != 80 then 1 else 0 end) / count(t2.oid) * 100,
+        2) as 'validRadio',
+        round(sum(t2.pay_amount) / 100, 2) as 'payAmount',
+        round(sum(case when t2.order_status != 80 then t2.pay_amount else 0 end) / 100,
+        2) as 'validPayAmount',
+        round(sum(case when t2.order_status != 80 then t2.pay_amount else 0 end) / sum(t2.pay_amount) * 100,
+        2) as 'validPayAmountRadio',
+        sum(case when t2.send_status = 0 and t2.order_status != 80 then 1 else 0 end) as 'notDeliveryNum',
+        round(sum(case when t2.send_status = 1 and t2.order_status != 80 then 1 else 0 end) / sum(case
+        when t2.order_status != 80
+        then 1
+        else 0 end) *
+        100,
+        2) as 'deliveryRadio',
+        count(distinct t2.clip_user_id) as 'promoterCount',
+        count(distinct t2.item_id) as 'itemCount'
+        from jy_kuaishou_promoter t1
+        left join jy_order_list t2
+        on t1.promoter_id = t2.clip_user_id
+        where 1 = 1
+        and t1.expert_mentor_id is not null
+        and t2.stat_date &gt;= #{start}
+        and t2.stat_date &lt;= #{end}
+        <if test='nowHour != null and nowHour != ""'>
+            and t2.stat_hour &lt;= #{nowHour}
+        </if>
+        group by t1.expert_mentor_id) t
+        left join (select t1.expert_mentor_id as 'userId',
+        count(t2.oid) as 'orderNum',
+        round(sum(t2.pay_amount) / 100, 2) as 'payAmount'
+        from jy_kuaishou_promoter t1
+        left join jy_order_list t2
+        on t1.promoter_id = t2.clip_user_id
+        where 1 = 1
+        and t1.expert_mentor_id is not null
+        and t2.stat_date &gt;= #{lastStart}
+        and t2.stat_date &lt;= #{lastEnd}
+        <if test='nowHour != null and nowHour != ""'>
+            and t2.stat_hour &lt;= #{nowHour}
+        </if>
+        group by t1.expert_mentor_id) tt on t.userId = tt.userId
+
+        union all
+
+        select t.*,
+        round((t.orderNum - tt.orderNum) / tt.orderNum * 100, 2) as 'orderNumRate',
+        round((t.payAmount - tt.payAmount) / tt.payAmount * 100, 2) as 'payAmountRate'
+        from (select '商务' as 'type',
+        t1.expert_business_id as 'userId',
+        t1.expert_business_name as 'userName',
+        count(t2.oid) as 'orderNum',
+        round(sum(case when t2.order_status != 80 then 1 else 0 end) / count(t2.oid) * 100,
+        2) as 'validRadio',
+
+        round(sum(t2.pay_amount) / 100, 2) as 'payAmount',
+        round(sum(case when t2.order_status != 80 then t2.pay_amount else 0 end) / 100,
+        2) as 'validPayAmount',
+        round(sum(case when t2.order_status != 80 then t2.pay_amount else 0 end) / sum(t2.pay_amount) * 100,
+        2) as 'validPayAmountRadio',
+        sum(case when t2.send_status = 0 and t2.order_status != 80 then 1 else 0 end) as 'notDeliveryNum',
+        round(sum(case when t2.send_status = 1 and t2.order_status != 80 then 1 else 0 end) / sum(case
+        when t2.order_status != 80
+        then 1
+        else 0 end) *
+        100,
+        2) as 'deliveryRadio',
+        count(distinct t2.clip_user_id) as 'promoterCount',
+        count(distinct t2.item_id) as 'itemCount'
+        from jy_kuaishou_promoter t1
+        left join jy_order_list t2
+        on t1.promoter_id = t2.clip_user_id
+        where 1 = 1
+        and t1.expert_business_id is not null
+        and t2.stat_date &gt;= #{start}
+        and t2.stat_date &lt;= #{end}
+        <if test='nowHour != null and nowHour != ""'>
+            and t2.stat_hour &lt;= #{nowHour}
+        </if>
+        group by t1.expert_business_id) t
+        left join (select t1.expert_business_id as 'userid',
+        count(t2.oid) as 'orderNum',
+        round(sum(t2.pay_amount) / 100, 2) as 'payAmount'
+        from jy_kuaishou_promoter t1
+        left join jy_order_list t2
+        on t1.promoter_id = t2.clip_user_id
+        where 1 = 1
+        and t1.expert_business_id is not null
+
+        and t2.stat_date &gt;= #{lastStart}
+        and t2.stat_date &lt;= #{lastEnd}
+        <if test='nowHour != null and nowHour != ""'>
+            and t2.stat_hour &lt;= #{nowHour}
+        </if>
+        group by t1.expert_business_id) tt
+        on t.userId = tt.userid) tlist
+        order by tlist.`type` asc ,tlist.`orderNum` desc
+
+    </select>
 </mapper>