Просмотр исходного кода

删除,添加好友 im 用户信息查询

xgb 1 неделя назад
Родитель
Сommit
8fa55d31e5

+ 40 - 0
fs-company-app/src/main/java/com/fs/app/controller/app/ImController.java

@@ -0,0 +1,40 @@
+package com.fs.app.controller.app;
+
+import com.fs.common.core.domain.R;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @description: im 相关接口
+ * @author: Xgb
+ * @createDate: 2026/4/3
+ * @version: 1.0
+ */
+@Api("im 相关接口")
+@RestController
+@RequestMapping(value = "/app/im")
+@Slf4j
+public class ImController {
+
+    @Autowired
+    private OpenIMService openIMService;
+    /**
+     * @Description: 查询用户信息
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/4/3 15:45
+     */
+    @GetMapping("/getUserInfo")
+    public R getUserInfo(String id) {
+        OpenImResponseDTO responseDTO = openIMService.getUserInfo(id);
+        return R.ok().put("data",responseDTO);
+    }
+
+}

+ 2 - 0
fs-service/src/main/java/com/fs/course/mapper/FsUserCompanyUserMapper.java

@@ -125,4 +125,6 @@ public interface FsUserCompanyUserMapper extends BaseMapper<FsUserCompanyUser>{
     List<CompanyRedPacketStatisticsVO> selectSalesUserCount(CompanyStatisticsParam param);
 
     List<CompanyRedPacketStatisticsVO> selectSalesNewUserCount(CompanyStatisticsParam param);
+
+    int updateFriendStatus(FsUserCompanyUser update);
 }

+ 3 - 1
fs-service/src/main/java/com/fs/im/service/OpenIMService.java

@@ -46,7 +46,7 @@ public interface OpenIMService {
      * @param friendUserID 待删除的好友
      * @return
      */
-    OpenImResponseDTO deleteUserInfo(String ownerUserID,String friendUserID);
+    R deleteUserInfo(String ownerUserID,String friendUserID);
 
     OpenImResponseDTO sendPackageUtil(String sendID, String recvID, Integer contentType, String payloadData,String packageName,String packageId);
 
@@ -114,4 +114,6 @@ public interface OpenIMService {
 
 
     void sendSystemMsgAsync(String userId, String text, String title);
+
+    OpenImResponseDTO getUserInfo(String id);
 }

+ 64 - 2
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -477,10 +478,11 @@ public class OpenIMServiceImpl implements OpenIMService {
     }
 
     @Override
-    public OpenImResponseDTO deleteUserInfo(String ownerUserID,String friendUserID) {
+    public R deleteUserInfo(String ownerUserID,String friendUserID) {
         OpenImResponseDTO responseDTO = null;
         String adminToken = getAdminToken();
         //删除好友
+
         Map<String, Object> bodyMap = new HashMap<>();
         bodyMap.put("ownerUserID", ownerUserID);
         bodyMap.put("friendUserID", friendUserID);
@@ -492,6 +494,18 @@ public class OpenIMServiceImpl implements OpenIMService {
                 .execute()
                 .body();
 
+        // 反过来再删除一次,确保双向好友关系都解除
+        Map<String, Object> bodyMap2 = new HashMap<>();
+        bodyMap2.put("ownerUserID", friendUserID);
+        bodyMap2.put("friendUserID", ownerUserID);
+        String jsonBody2 = JSONUtil.toJsonStr(bodyMap2);
+        String result2 = HttpRequest.post(IMConfig.URL+"/friend/delete_friend")
+                .header("operationID", String.valueOf(System.currentTimeMillis()))
+                .header("token", adminToken)
+                .body(jsonBody2)
+                .execute()
+                .body();
+
       /*  //增加黑名单
         Map<String, Object> bodyMap1 = new HashMap<>();
         bodyMap1.put("ownerUserID", ownerUserID);
@@ -504,7 +518,36 @@ public class OpenIMServiceImpl implements OpenIMService {
                 .execute()
                 .body();*/
         responseDTO= JSONUtil.toBean(result1,OpenImResponseDTO.class);
-        return responseDTO;
+        if(responseDTO.getErrCode()==0){
+            // 如果 有销售关系 需要解除看课记录关系
+            if((ownerUserID.startsWith("U") && friendUserID.startsWith("C")) ||
+                    (ownerUserID.startsWith("C") && friendUserID.startsWith("U")) ){
+                Long companyUserId;
+                Long userId;
+                String remark;
+                if(ownerUserID.startsWith("C")){
+                    companyUserId=Long.parseLong(ownerUserID.replace("C",""));
+                    userId=Long.parseLong(friendUserID.replace("U",""));
+                    remark="销售解除用户好友关系";
+                }else {
+                    companyUserId=Long.parseLong(friendUserID.replace("C",""));
+                    userId=Long.parseLong(ownerUserID.replace("U",""));
+                    remark="用户解除销售好友关系";
+                }
+
+                FsUserCompanyUser update=new FsUserCompanyUser();
+                update.setStatus(2);
+                update.setUserId(userId);
+                update.setCompanyUserId(companyUserId);
+                update.setRemark(remark);
+                fsUserCompanyUserMapper.updateFriendStatus(update);
+
+            }
+        }else {
+            log.error("删除好友失败:{}",responseDTO.getErrMsg());
+            return R.error(responseDTO.getErrMsg());
+        }
+        return R.ok();
     }
 
     @Data
@@ -1916,4 +1959,23 @@ public class OpenIMServiceImpl implements OpenIMService {
             log.error("异步发送系统消息失败:userId={}, error={}", userId, e.getMessage(), e);
         }
     }
+
+    @Override
+    public OpenImResponseDTO getUserInfo(String id) {
+        // 是数字的话默认用户
+        if(id.matches("\\d+")){
+            id = "U"+id;
+        }
+        String adminToken = getAdminToken();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("userIDs", Collections.singletonList(id));
+            String body = HttpRequest.post(IMConfig.URL+"/user/get_users_info")
+                    .header("operationID", String.valueOf(System.currentTimeMillis()))
+                    .header("token", adminToken)
+                    .body(jsonObject.toString())
+                    .execute()
+                    .body();
+            OpenImResponseDTO responseDTO= JSONUtil.toBean(body,OpenImResponseDTO.class);
+            return responseDTO;
+    }
 }

+ 13 - 0
fs-service/src/main/resources/mapper/course/FsUserCompanyUserMapper.xml

@@ -272,4 +272,17 @@
         </if>
         group by ucu.company_user_id
     </select>
+
+    <update id="updateFriendStatus">
+        update fs_user_company_user
+        <set>
+            <if test="status != null">
+                status = #{status},
+            </if>
+            <if test="remark != null">
+                remark = #{remark},
+            </if>
+        </set>
+        where user_id = #{userId} and company_user_id = #{companyUserId}
+    </update>
 </mapper>

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

@@ -1115,8 +1115,7 @@ public class AppLoginController extends AppBaseController{
     public R deleteUserInfo(@RequestBody HashMap<String,String> map){
         String ownerUserID = map.get("ownerUserID");
         String friendUserID =map.get("friendUserID");
-        OpenImResponseDTO openImResponseDTO = openIMService.deleteUserInfo(ownerUserID, friendUserID);
-        return R.ok().put("data",openImResponseDTO);
+        return  openIMService.deleteUserInfo(ownerUserID, friendUserID);
     }
 
 }

+ 40 - 0
fs-user-app/src/main/java/com/fs/app/controller/app/ImController.java

@@ -0,0 +1,40 @@
+package com.fs.app.controller.app;
+
+import com.fs.common.core.domain.R;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @description: im 相关接口
+ * @author: Xgb
+ * @createDate: 2026/4/3
+ * @version: 1.0
+ */
+@Api("im 相关接口")
+@RestController
+@RequestMapping(value = "/app/im")
+@Slf4j
+public class ImController {
+
+    @Autowired
+    private OpenIMService openIMService;
+    /**
+     * @Description: 查询用户信息
+     * @Param:
+     * @Return:
+     * @Author xgb
+     * @Date 2026/4/3 15:45
+     */
+    @GetMapping("/getUserInfo")
+    public R getUserInfo(String id) {
+        OpenImResponseDTO responseDTO = openIMService.getUserInfo(id);
+        return R.ok().put("data",responseDTO);
+    }
+
+}