helixiao 1 vuosi sitten
vanhempi
commit
1bd3338c73

+ 33 - 3
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -15,6 +15,7 @@ import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -145,14 +146,43 @@ public class APPPartnerController extends BaseController {
         return HttpResult.ok(this.sysPartnerService.getCommissionInfo(commissionInfoDto));
     }
     /**
-     *  app新增人员统计
+     *  app工作室新增人员统计
      */
     @PostMapping("/getCountUser")
-    @ApiOperation(value = "app新增人员统计")
-    public HttpResult getCountUser(@RequestBody CountUserDto countUserDto) {
+    @ApiOperation(value = "app工作室新增人员统计")
+    public HttpResult<CountUserVo> getCountUser(@RequestBody CountUserDto countUserDto) {
 
         return HttpResult.ok(this.sysPartnerService.getCountUser(countUserDto));
     }
+    /**
+     *  app合伙人新增人员统计
+     */
+    @PostMapping("/getPartnerCount")
+    @ApiOperation(value = "app合伙人新增人员统计")
+    public HttpResult<PartnerCountVo> getPartnerCount(@RequestBody PartnerCountDto partnerCountDto) {
+
+        return HttpResult.ok(this.sysPartnerService.getPartnerCount(partnerCountDto));
+    }
+    /**
+     * 新增人员占比分析
+     */
+    @PostMapping("/getPartnerProportion")
+    @ApiOperation(value = "新增人员占比分析")
+    public HttpResult<PartnerProportionVo> getPartnerProportion(@RequestBody PartnerCountDto partnerCountDto) {
+
+        return HttpResult.ok(this.sysPartnerService.getPartnerProportion(partnerCountDto));
+    }
+
+    /**
+     * 排行榜
+     */
+    @GetMapping("/getLevelPartner")
+    @ApiOperation(value = "排行榜")
+    public HttpResult<List<LevelPartnerVo>> getLevelPartner(@RequestParam("type") @ApiParam("等级:1、2、3") Integer type) {
+
+        return HttpResult.ok(this.sysPartnerService.getLevelPartner(type));
+    }
+
 
 
 }

+ 9 - 4
src/main/java/com/ydtech/modules/admin/dao/SysPartnerMapper.java

@@ -3,10 +3,9 @@ package com.ydtech.modules.admin.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysPartner;
 import com.ydtech.modules.admin.model.dto.CountUserDto;
-import com.ydtech.modules.admin.model.dto.DeptBalanceDto;
+import com.ydtech.modules.admin.model.dto.PartnerCountDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerConsoleDto;
 import com.ydtech.modules.admin.model.vo.CountUserNumVo;
 import com.ydtech.modules.admin.model.vo.DeptBalanceVo;
@@ -39,10 +38,16 @@ public interface SysPartnerMapper extends BaseMapper<SysPartner> {
 
     List<SysPartner> queryByLoginId(@Param("userId") String userId);
 
-    List<CountUserNumVo> queryDeptByTime(@Param("userId") String userId, @Param("dto") CountUserDto countUserDto);
-    List<CountUserNumVo> queryDeptByTimes(@Param("userId") String userId, @Param("dto") CountUserDto countUserDto);
+    List<CountUserNumVo> queryDeptByTime(@Param("deptIds") List<String> deptIds, @Param("dto") CountUserDto countUserDto);
+    List<CountUserNumVo> queryDeptByTimes(@Param("deptIds") List<String> deptIds, @Param("dto") CountUserDto countUserDto);
 
     List<CountUserNumVo> queryUserByTimes(@Param("deptIds") List<String> deptIds,@Param("dto") CountUserDto countUserDto);
     List<CountUserNumVo> queryUserByTime(@Param("deptIds") List<String> deptIds,@Param("dto") CountUserDto countUserDto);
+
+    List<SysPartner> queryPartnerById(@Param("userId")String userId,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryPartnerByTimes(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
+
+    List<CountUserNumVo> queryPartnerByTime(@Param("userId") String userId,@Param("dto") PartnerCountDto partnerCountDto);
 }
 

+ 19 - 0
src/main/java/com/ydtech/modules/admin/model/dto/PartnerCountDto.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.admin.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PartnerCountDto {
+
+    @ApiModelProperty(value = "开始时间")
+    private String beginTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+    @ApiModelProperty(value = "合伙人等级类型:1,2,3,4,5")
+    private int type;
+
+
+}

+ 2 - 2
src/main/java/com/ydtech/modules/admin/model/vo/CountUserVo.java

@@ -12,8 +12,8 @@ public class CountUserVo {
     private Integer countSum;
     @ApiModelProperty(value = "团队数")
     private Integer deptSum;
-    @ApiModelProperty(value = "团队长数")
-    private Integer deptLeaderSum;
+    @ApiModelProperty(value = "代理人数")
+    private Integer deptManSum;
 
     private List<CountUserNumVo> countUserNumVoList;
 

+ 17 - 0
src/main/java/com/ydtech/modules/admin/model/vo/LevelPartnerVo.java

@@ -0,0 +1,17 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class LevelPartnerVo {
+
+    @ApiModelProperty(value = "id")
+    private Integer id;
+
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+
+    @ApiModelProperty(value = "人数")
+    private int deptManNum;
+}

+ 34 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerCountVo.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PartnerCountVo {
+
+    @ApiModelProperty(value = "一级合伙人数")
+    private Integer onePartnerNum;
+
+    @ApiModelProperty(value = "二级合伙人数")
+    private Integer twoPartnerNum;
+
+    @ApiModelProperty(value = "三级合伙人数")
+    private Integer threePartnerNum;
+
+    @ApiModelProperty(value = "四级合伙人数")
+    private Integer fourPartnerNum;
+
+    @ApiModelProperty(value = "团队数")
+    private Integer workSum;
+
+    @ApiModelProperty(value = "团队数")
+    private Integer deptSum;
+
+    @ApiModelProperty(value = "团队人数")
+    private Integer deptManSum;
+
+    private List<CountUserNumVo> countUserNumVoList;
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/admin/model/vo/PartnerProportionVo.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PartnerProportionVo {
+    @ApiModelProperty(value = "新增占比")
+    private Double newProportion;
+
+    @ApiModelProperty(value = "新增数量")
+    private int newNum;
+
+    @ApiModelProperty(value = "历史占比")
+    private Double oldProportion;
+
+    @ApiModelProperty(value = "历史数量")
+    private int oldNum;
+
+    @ApiModelProperty(value = "总数量")
+    private int number;
+
+}

+ 6 - 0
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -63,4 +63,10 @@ public interface SysPartnerService extends IService<SysPartner> {
     List<SysPartnerVo> getRelationInfo(String userId);
 
     CountUserVo getCountUser(CountUserDto countUserDto);
+
+    PartnerCountVo getPartnerCount(PartnerCountDto partnerCountDto);
+
+    PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto);
+
+    List<LevelPartnerVo> getLevelPartner(Integer type);
 }

+ 83 - 10
src/main/resources/mapper/modules/admin/SysPartnerMapper.xml

@@ -76,17 +76,37 @@
         where srp.type = 0 and srp.suggest_id = #{userId}
     </select>
 
+    <select id="queryPartnerById" resultType="com.ydtech.modules.admin.model.SysPartner">
+        select sal.*
+        from sys_partner sal
+        left join sys_relation_person srp on srp.agency_leader_id=sal.user_id
+        <where>
+            srp.type = 0
+            <if test="userId != null and userId != '' ">
+                and srp.suggest_id = #{userId}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(sal.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
+            </if>
+
+        </where>
+
+    </select>
+
 
     <select id="queryDeptByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
         select spa.time, COUNT(spa.id) as countNum
         from(
         SELECT
             s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
-        FROM sys_user  s
+        FROM sys_dept  s
         <where>
-            s.type = 3 and s.status in (1, 4, 5, 6, 7)
-            <if test="userId != null ">
-                and s.referrer_id = #{userId}
+            s.del_flag = 0
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
             </if>
             <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
                 and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
@@ -104,14 +124,17 @@
         from(
         SELECT
             s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
-        FROM sys_user  s
+        FROM sys_dept  s
         <where>
-            s.type = 3 and s.status in (1, 4, 5, 6, 7)
-            <if test="userId != null ">
-                and s.referrer_id = #{userId}
+            s.del_flag = 0
+            <if test="deptIds != null and deptIds != '' and deptIds.size() > 0">
+                AND s.id  in
+                <foreach collection="deptIds" item="deptId" open="(" separator="," close=")">
+                    #{deptId}
+                </foreach>
             </if>
             <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
-                and (DATE_FORMAT(s.create_time, '%Y-%m-%d') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d'))
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
             </if>
         </where>
         ) as spa
@@ -162,7 +185,7 @@
                 </foreach>
             </if>
             <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
-                and (DATE_FORMAT(s.create_time, '%Y-%m-%d') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d'))
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
             </if>
         </where>
         ) as spa
@@ -172,6 +195,56 @@
         spa.time ASC
 
     </select>
+    <select id="queryPartnerByTimes" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d %H' ) as time
+        FROM sys_partner s
+        left join sys_relation_person srp on srp.agency_leader_id = s.user_id
+        <where>
+            s.del_flag = 1 and srp.type = 0
+            <if test="userId != null and userId != '' ">
+                and srp.suggest_id = #{userId}
+            </if>
+            <if test="dto.type != null and dto.type != 0 ">
+                and s.type = #{dto.type}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d' ) like CONCAT( DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d' ), '%' ))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
+    <select id="queryPartnerByTime" resultType="com.ydtech.modules.admin.model.vo.CountUserNumVo">
+        select spa.time, COUNT(spa.id) as countNum
+        from(
+        SELECT
+        s.id,DATE_FORMAT(s.create_time, '%Y-%m-%d' ) as time
+        FROM sys_partner s
+        left join sys_relation_person srp on srp.agency_leader_id = s.user_id
+        <where>
+            s.del_flag = 1 and srp.type = 0
+            <if test="userId != null and userId != '' ">
+                and srp.suggest_id = #{userId}
+            </if>
+            <if test="dto.type != null and dto.type != 0 ">
+                and s.type = #{dto.type}
+            </if>
+            <if test="dto.beginTime != null and dto.beginTime != '' and dto.endTime != null and dto.endTime != ''">
+                and (DATE_FORMAT(s.create_time, '%Y-%m-%d %H:%i:%s') between DATE_FORMAT( #{dto.beginTime}, '%Y-%m-%d %H:%i:%s') and DATE_FORMAT( #{dto.endTime}, '%Y-%m-%d %H:%i:%s'))
+            </if>
+        </where>
+        ) as spa
+        GROUP BY
+        spa.time
+        ORDER BY
+        spa.time ASC
+    </select>
 
 
 </mapper>