From 2bb6d396b9e9a8d58ba47504591b71e48d6d6bfb Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 19 Aug 2024 14:30:32 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/dao/AgentUserMapper.java                  |    3 +
 src/main/resources/mapper/UserPositionMapper.xml               |   41 +++++++++++---------
 src/main/java/com/nq/dao/UserPositionMapper.java               |    2 
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |   37 +++++++++++++++++-
 4 files changed, 60 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/nq/dao/AgentUserMapper.java b/src/main/java/com/nq/dao/AgentUserMapper.java
index cf0dda2..a149762 100644
--- a/src/main/java/com/nq/dao/AgentUserMapper.java
+++ b/src/main/java/com/nq/dao/AgentUserMapper.java
@@ -2,11 +2,12 @@
 
 
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.nq.pojo.AgentUser;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
-public interface AgentUserMapper {
+public interface AgentUserMapper extends BaseMapper<AgentUser> {
   int deleteByPrimaryKey(Integer paramInteger);
   
   int insert(AgentUser paramAgentUser);
diff --git a/src/main/java/com/nq/dao/UserPositionMapper.java b/src/main/java/com/nq/dao/UserPositionMapper.java
index cc4f68e..d76a1f6 100644
--- a/src/main/java/com/nq/dao/UserPositionMapper.java
+++ b/src/main/java/com/nq/dao/UserPositionMapper.java
@@ -35,7 +35,7 @@
   List listByAgent(@Param("positionType") Integer paramInteger1,
                    @Param("state") Integer paramInteger2,
                    @Param("userId") Integer paramInteger3,
-                   @Param("searchId") Integer paramInteger4, @Param("positionSn")
+                   @Param("ids") List<Integer> ids, @Param("positionSn")
                    String paramString, @Param("beginTime") Date paramDate1, @Param("endTime") Date paramDate2,
                   @Param("phone") String phone
   );
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 9eb87e6..ece4db7 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -686,8 +686,14 @@
         PageHelper.startPage(pageNum, pageSize);
 
 
+        List<Integer> ids = new ArrayList<>();
+        if(null != agentId){
+            ids = getSubordinates(searchId);
+            ids.add(agentId);
+        }
+
         List<UserPosition> userPositions = this.userPositionMapper.listByAgent(positionType, state,
-                userId, searchId, positionSn, begin_time, end_time,null);
+                userId, ids, positionSn, begin_time, end_time,null);
 
         List<AgentPositionVO> agentPositionVOS = Lists.newArrayList();
         for (UserPosition position : userPositions) {
@@ -716,8 +722,14 @@
         }
 
 
+        List<Integer> ids = new ArrayList<>();
+        if(null != agentId){
+            ids = getSubordinates(agentId);
+            ids.add(agentId);
+        }
+
         List<UserPosition> userPositions = this.userPositionMapper.listByAgent(positionType, Integer.valueOf(1),
-                null, agentId, null, begin_time, end_time,null);
+                null, ids, null, begin_time, end_time,null);
 
 
         BigDecimal order_fee_amt = new BigDecimal("0");
@@ -749,7 +761,14 @@
         if (StringUtils.isNotBlank(endTime)) {
             end_time = DateTimeUtil.searchStrToTimestamp(endTime);
         }
-        List<UserPosition> userPositions = this.userPositionMapper.listByAgent(positionType, state, userId, agentId, positionSn, begin_time, end_time,phone);
+        List<Integer> ids = new ArrayList<>();
+        if(null != agentId){
+            ids = getSubordinates(agentId);
+            ids.add(agentId);
+        }
+
+
+        List<UserPosition> userPositions = this.userPositionMapper.listByAgent(positionType, state, userId, ids, positionSn, begin_time, end_time,phone);
         List<AdminPositionVO> adminPositionVOS = Lists.newArrayList();
         for (UserPosition position : userPositions) {
             AdminPositionVO adminPositionVO = assembleAdminPositionVO(position);
@@ -760,6 +779,18 @@
         return ServerResponse.createBySuccess(pageInfo);
     }
 
+    public List<Integer> getSubordinates(Integer id) {
+        List<AgentUser> agentUsers = agentUserMapper.selectList(new LambdaQueryWrapper<AgentUser>());
+        List<Integer> subordinates = new ArrayList<>();
+        for (AgentUser user : agentUsers) {
+            if (id.equals(user.getParentId())) {
+                subordinates.add(user.getId());
+                subordinates.addAll(getSubordinates(user.getId()));
+            }
+        }
+        return subordinates;
+    }
+
     public int CountPositionNum(Integer state, Integer accountType) {
         return this.userPositionMapper.CountPositionNum(state, accountType);
     }
diff --git a/src/main/resources/mapper/UserPositionMapper.xml b/src/main/resources/mapper/UserPositionMapper.xml
index 1edb775..297730d 100644
--- a/src/main/resources/mapper/UserPositionMapper.xml
+++ b/src/main/resources/mapper/UserPositionMapper.xml
@@ -485,36 +485,41 @@
     <include refid="Base_Column_List"/>
     FROM user_position
     <where>
-      <if test="searchId != null  and searchId != '' ">
-        and agent_id = #{searchId}
+      1=1
+      <if test="ids != null and ids.size > 0">
+        AND agent_id IN
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+          #{id}
+        </foreach>
       </if>
-      <if test="state != null  ">
-        <if test="state == 0">
-          and sell_order_id is null
-        </if>
-        <if test="state == 1">
-          and sell_order_id is not null
-        </if>
+      <if test="state != null">
+        <choose>
+          <when test="state == 0">
+            AND sell_order_id IS NULL
+          </when>
+          <when test="state == 1">
+            AND sell_order_id IS NOT NULL
+          </when>
+        </choose>
       </if>
-      <if test="userId != null and userId != '' ">
-        and user_id = #{userId}
+      <if test="userId != null and userId != ''">
+        AND user_id = #{userId}
       </if>
-      <if test="positionSn != null and positionSn != '' ">
-        and position_sn like CONCAT('%','${positionSn}','%')
+      <if test="positionSn != null and positionSn != ''">
+        AND position_sn LIKE CONCAT('%', #{positionSn}, '%')
       </if>
       <if test="positionType != null and positionType != ''">
-        and position_type = #{positionType}
+        AND position_type = #{positionType}
       </if>
       <if test="beginTime != null and beginTime != ''">
-        and sell_order_time <![CDATA[>=]]> #{beginTime}
+        AND sell_order_time <![CDATA[>=]]> #{beginTime}
       </if>
       <if test="endTime != null and endTime != ''">
-        and sell_order_time <![CDATA[<=]]> #{endTime}
+        AND sell_order_time <![CDATA[<=]]> #{endTime}
       </if>
       <if test="phone != null and phone != ''">
-        and user_id  = (select id from  user where phone =  #{phone})
+        AND user_id = (SELECT id FROM user WHERE phone = #{phone})
       </if>
-
     </where>
     ORDER BY id DESC
   </select>

--
Gitblit v1.9.3