Sfoglia il codice sorgente

1、调整详情用户接口限制

yys 2 giorni fa
parent
commit
b88d4ec0af

+ 6 - 1
fs-service/src/main/java/com/fs/his/param/FindUserByParam.java

@@ -9,6 +9,11 @@ public class FindUserByParam implements Serializable {
     private Integer pageNum;
     private Integer pageSize;
     private String keywords;
-    /** 是否仅查询销售:客户搜索时为 true,销售/其他用户不受影响 */
+    /** 是否仅查询销售/医生:客户搜索时为 true,销售/其他用户不受影响 */
     private Boolean onlySales;
+    /**
+     * 客户搜索前缀:C=销售,D=医生。
+     * 仅 onlySales=true 时生效,由服务端根据 keywords 解析设置
+     */
+    private String searchPrefix;
 }

+ 51 - 13
fs-service/src/main/resources/mapper/his/FsUserMapper.xml

@@ -2391,7 +2391,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         limit 10
     </select>
     <select id="findUsersByParam" resultType="com.fs.his.dto.FindUsersByDTO">
-        <!-- 客户搜索时 onlySales=true,仅返回销售信息,不查客户 -->
+        <!-- 销售/其他用户:可查客户+销售(原逻辑) -->
         <if test="onlySales == null or onlySales == false">
             SELECT user_id as id, 0 as type,
             CONCAT(user_id, '_', IFNULL(nick_name, '')) as name
@@ -2412,23 +2412,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 WHERE phone = #{keywords}
                 UNION
             </if>
+            <!-- company_user相关查询(销售) -->
+            SELECT user_id as id, 1 as type,
+            IFNULL(nick_name, '') as name
+            FROM company_user
+            WHERE user_id = #{keywords}
+            UNION
+            SELECT user_id as id, 1 as type,
+            IFNULL(nick_name, '') as name
+            FROM company_user
+            WHERE nick_name LIKE CONCAT(#{keywords}, '%')
+            <if test="keywords.matches('\\d+')">
+                UNION
+                SELECT user_id as id, 1 as type,
+                IFNULL(nick_name, '') as name
+                FROM company_user
+                WHERE phonenumber = #{keywords}
+            </if>
         </if>
-        <!-- company_user相关查询(销售) -->
-        SELECT user_id as id, 1 as type,
-        IFNULL(nick_name, '') as name
-        FROM company_user
-        WHERE user_id = #{keywords}
-        UNION
-        SELECT user_id as id, 1 as type,
-        IFNULL(nick_name, '') as name
-        FROM company_user
-        WHERE nick_name LIKE CONCAT(#{keywords}, '%')
-        <if test="keywords.matches('\\d+')">
+        <!-- 客户搜索:keywords 以 C 开头,仅查销售 -->
+        <if test="onlySales != null and onlySales == true and searchPrefix != null and searchPrefix == 'C'">
+            SELECT user_id as id, 1 as type,
+            IFNULL(nick_name, '') as name
+            FROM company_user
+            WHERE user_id = #{keywords}
             UNION
             SELECT user_id as id, 1 as type,
             IFNULL(nick_name, '') as name
             FROM company_user
-            WHERE phonenumber = #{keywords}
+            WHERE nick_name LIKE CONCAT(#{keywords}, '%')
+            <if test="keywords.matches('\\d+')">
+                UNION
+                SELECT user_id as id, 1 as type,
+                IFNULL(nick_name, '') as name
+                FROM company_user
+                WHERE phonenumber = #{keywords}
+            </if>
+        </if>
+        <!-- 客户搜索:keywords 以 D 开头,仅查医生 -->
+        <if test="onlySales != null and onlySales == true and searchPrefix != null and searchPrefix == 'D'">
+            SELECT doctor_id as id, 2 as type,
+            IFNULL(doctor_name, '') as name
+            FROM fs_doctor
+            WHERE doctor_id = #{keywords}
+            UNION
+            SELECT doctor_id as id, 2 as type,
+            IFNULL(doctor_name, '') as name
+            FROM fs_doctor
+            WHERE doctor_name LIKE CONCAT(#{keywords}, '%')
+            <if test="keywords.matches('\\d+')">
+                UNION
+                SELECT doctor_id as id, 2 as type,
+                IFNULL(doctor_name, '') as name
+                FROM fs_doctor
+                WHERE mobile = #{keywords}
+            </if>
         </if>
     </select>
 

+ 13 - 1
fs-user-app/src/main/java/com/fs/app/controller/AppBaseController.java

@@ -43,9 +43,21 @@ public class AppBaseController {
 		}
 		return null;
 	}
+	/**
+	 * 获取销售用户ID;未携带/无效 companyUserToken 时返回 null(不抛异常,用于身份判断)
+	 */
+	public Long getCompanyUserIdOrNull()
+	{
+		String companyUserToken = ServletUtils.getRequest().getHeader("companyUserToken");
+		if (StringUtils.isEmpty(companyUserToken)) {
+			return null;
+		}
+		return redisCache.getCacheObject("company-user-token:" + companyUserToken);
+	}
+
 	public Long getCompanyUserId( )
 	{
-		Long companyUesrId=redisCache.getCacheObject("company-user-token:"+ ServletUtils.getRequest().getHeader("companyUserToken"));
+		Long companyUesrId = getCompanyUserIdOrNull();
 		if(companyUesrId== null){
 			throw  new CustomException("未登录",403);
 		}

+ 2 - 2
fs-user-app/src/main/java/com/fs/app/controller/AppLoginController.java

@@ -488,9 +488,9 @@ public class AppLoginController extends AppBaseController{
                 update.setUserId(user.getUserId());
                 userService.updateFsUser(update);
             }
-            /*if (user.getStatus()==0){
+            if (user.getStatus()==0){
                 return R.error("登录失败,账户被禁用");
-            }*/
+            }
             int isFirstLogin = userNewTaskService.performTaskOne(user.getUserId());
             String token = jwtUtils.generateToken(user.getUserId());
             redisCache.setCacheObject("userToken:" + user.getUserId(), token, 604800, TimeUnit.SECONDS);

+ 13 - 6
fs-user-app/src/main/java/com/fs/app/controller/UserController.java

@@ -102,13 +102,20 @@ public class UserController extends  AppBaseController {
             return R.ok().put("data",new ArrayList<>());
         }
 
-        // 客户只能搜销售;销售可搜客户+销售。仅限制客户,不影响其他用户
-        String userId = getUserId();
-        if (StringUtils.isNotEmpty(userId)) {
-            int isSales = companyUserService.countCompanyUserByUserId(Long.parseLong(userId));
-            if (isSales <= 0) {
-                param.setOnlySales(true);
+        // 有销售身份(companyUserToken)可搜全部;否则按客户限制,仅允许 C/D 前缀
+        if (getCompanyUserIdOrNull() == null) {
+            String keywords = param.getKeywords().trim();
+            if (keywords.length() < 2) {
+                return R.ok().put("data", new ArrayList<>());
+            }
+            char prefix = Character.toUpperCase(keywords.charAt(0));
+            if (prefix != 'C' && prefix != 'D') {
+                // 非 C/D 开头(如 U 或其他)不给展示
+                return R.ok().put("data", new ArrayList<>());
             }
+            param.setOnlySales(true);
+            param.setSearchPrefix(String.valueOf(prefix));
+            param.setKeywords(keywords.substring(1));
         }
 
         PageHelper.startPage(param.getPageNum(), param.getPageSize());

+ 23 - 2
fs-user-app/src/main/java/com/fs/app/controller/app/ImController.java

@@ -1,6 +1,8 @@
 package com.fs.app.controller.app;
 
+import com.fs.app.controller.AppBaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.utils.StringUtils;
 import com.fs.im.dto.OpenImResponseDTO;
 import com.fs.im.service.OpenIMService;
 import io.swagger.annotations.Api;
@@ -20,10 +22,11 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping(value = "/app/im")
 @Slf4j
-public class ImController {
+public class ImController extends AppBaseController {
 
     @Autowired
     private OpenIMService openIMService;
+
     /**
      * @Description: 查询用户信息
      * @Param:
@@ -33,8 +36,26 @@ public class ImController {
      */
     @GetMapping("/getUserInfo")
     public R getUserInfo(String id) {
+        if (StringUtils.isBlank(id)) {
+            return R.ok().put("data", null);
+        }
+
+        // 有销售身份可查全部;否则按客户限制,仅允许 C/D(纯数字视为 U)
+        if (getCompanyUserIdOrNull() == null) {
+            String checkId = id.trim();
+            char prefix;
+            if (checkId.matches("\\d+")) {
+                prefix = 'U';
+            } else {
+                prefix = Character.toUpperCase(checkId.charAt(0));
+            }
+            if (prefix != 'C' && prefix != 'D') {
+                return R.ok().put("data", null);
+            }
+        }
+
         OpenImResponseDTO responseDTO = openIMService.getUserInfo(id);
-        return R.ok().put("data",responseDTO);
+        return R.ok().put("data", responseDTO);
     }
 
 }