Răsfoiți Sursa

查询区域绑定人的逻辑错误修正

hxl13994548489 2 ani în urmă
părinte
comite
059a1227f4

+ 10 - 1
src/main/java/com/ydtech/modules/admin/dao/SysUserLinkAreaMapper.java

@@ -48,5 +48,14 @@ public interface SysUserLinkAreaMapper extends BaseMapper<SysUserLinkArea> {
      *  @Date: 2024/4/26 18:28
      *  @Description: 通过用户id查询绑定的代理人集合
      */
-    List<String> findAreaIdsByAgentUserId(@Param("userId") String userId);
+    List<String> findAreaIdsByAgentUserId(@Param("userId") String userId,@Param("areaCodes") List<String> areaCodes);
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/4/29 9:53
+     *  @Description:查询当前登录人绑定的区域数据
+     */
+    List<String> findAreaCodeByUserId(@Param("userId") String userId);
 }

+ 6 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserLinkAreaServiceImpl.java

@@ -161,11 +161,14 @@ public class SysUserLinkAreaServiceImpl extends ServiceImpl<SysUserLinkAreaMappe
      *  @version
      *  @author: hxl
      *  @Date: 2024/4/27 9:45
-     *  @Description:  获取当前用户绑定区域的代理人ids 或者  代理人机构信息
-     *  1 为用户ids   2 为机构ids
+     *  @Description:  获取当前用户绑定区域的代理人ids
      */
     @Override
     public List<String> findUserIdsByLoginUserId(String  userId) {
-       return  sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId);
+        List<String> areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(userId);
+        if(areaCodes!=null && areaCodes.size()>0){
+            return  sysUserLinkAreaMapper.findAreaIdsByAgentUserId(userId,areaCodes);
+        }
+        return  null;
     }
 }

+ 4 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -852,7 +852,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             //查询所有的代理人
             //agentUserIds = sysUserMapper.getAgentUserIds();
             //查询绑定的区域的代理人信息
-            agentUserIds =sysUserLinkAreaMapper.findAreaIdsByAgentUserId(orderQueryVo.getUserId());
+            List<String> areaCodes = sysUserLinkAreaMapper.findAreaCodeByUserId(orderQueryVo.getUserId());
+            if(areaCodes!=null && areaCodes.size()>0){
+                agentUserIds =sysUserLinkAreaMapper.findAreaIdsByAgentUserId(orderQueryVo.getUserId(),areaCodes);
+            }
         } else if (type == 3) {
             //查询用户关联的协议
             List<SysUserLinkPtlAgreementDto> ptlAgreementListByUserIds =

+ 18 - 13
src/main/resources/mapper/modules/admin/SysUserLinkAreaMapper.xml

@@ -80,19 +80,24 @@
                 AND sd.del_flag = '0'
         WHERE
             t3.role_id = 20
-          AND sd.management_source = 2
-          AND
-            (CONCAT( SUBSTRING(RPAD(su.dept_id, 8, '0'), 3, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 5, 2), SUBSTRING(RPAD(su.dept_id, 8, '0'), 7, 2) ) ) IN
+           AND sd.management_source = 2
+            <if test="areaCodes != null and areaCodes.size>0" >
+                AND (
+                <foreach collection="areaCodes" item="item" open=" instr( " separator="||" close=") ">
+                   su.dept_id, TRIM( TRAILING '0' FROM #{item} )
+                </foreach>
+                ) > 0
+            </if>
+    </select>
 
-            (
-                SELECT
-                    DISTINCT link.area_code
-                FROM
-                    sys_user_link_area link
-                WHERE
-                    link.user_id = #{userId}
-                ORDER BY
-                    link.area_code
-            )
+    <select id="findAreaCodeByUserId"  resultType="String">
+        SELECT
+            DISTINCT link.area_code
+        FROM
+            sys_user_link_area link
+        WHERE
+            link.user_id = #{userId}
+        ORDER BY
+            link.area_code
     </select>
 </mapper>