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

+ 27 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsCourseFinishTempServiceImpl.java

@@ -12,6 +12,8 @@ import com.fs.course.vo.FsCourseFinishTempListVO;
 import com.fs.course.vo.FsCourseFinishTempVO;
 import com.fs.fastGpt.domain.FastGptChatReplaceWords;
 import com.fs.fastGpt.mapper.FastGptChatReplaceWordsMapper;
+import com.fs.im.dto.OpenImResponseDTO;
+import com.fs.im.service.OpenIMService;
 import com.fs.qw.domain.QwCourseFinishRemarkRty;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.domain.QwUser;
@@ -73,6 +75,8 @@ public class FsCourseFinishTempServiceImpl implements IFsCourseFinishTempService
 
     @Autowired
     private IQwCourseFinishRemarkRtyService finishRemarkRtyService;
+    @Autowired
+    private OpenIMService openIMService;
 
     /**
      * 查询完课模板
@@ -313,6 +317,7 @@ public class FsCourseFinishTempServiceImpl implements IFsCourseFinishTempService
                         contactNew.setId(externalContact.getId());
                         contactNew.setRemark(newRemark);
                         qwExternalContactMapper.updateQwExternalContact(contactNew);
+                        syncCourseFinishRemarkToIm(watchLog, newRemark);
 
                         log.info("完课成功添加备注:" + externalContact.getName() + "|" + externalContact.getExternalUserId() + "|" + externalContact.getCorpId() + "|" + externalContact.getUserId() + "|" + newRemark);
 
@@ -499,6 +504,28 @@ public class FsCourseFinishTempServiceImpl implements IFsCourseFinishTempService
         }
     }
 
+    /**
+     * 完课备注同步到IM用户信息
+     */
+    private void syncCourseFinishRemarkToIm(FsCourseWatchLog watchLog, String remark) {
+        if (watchLog == null || watchLog.getUserId() == null || StringUtil.strIsNullOrEmpty(remark)) {
+            return;
+        }
+        try {
+            OpenImResponseDTO responseDTO = openIMService.updateCourseFinishUserInfo(watchLog.getUserId(), remark);
+            if (responseDTO == null) {
+                log.warn("完课备注同步IM失败,返回为空,userId:{},remark:{}", watchLog.getUserId(), remark);
+                return;
+            }
+            if (responseDTO.getErrCode() != 0) {
+                log.error("完课备注同步IM失败,userId:{},remark:{},errCode:{},errMsg:{}",
+                        watchLog.getUserId(), remark, responseDTO.getErrCode(), responseDTO.getErrMsg());
+            }
+        } catch (Exception e) {
+            log.error("完课备注同步IM异常,userId:{},remark:{}", watchLog.getUserId(), remark, e);
+        }
+    }
+
     /**
      * 批量更新完课模板状态
      * @param fsCourseFinishTemp

+ 2 - 0
fs-service/src/main/java/com/fs/im/service/OpenIMService.java

@@ -38,6 +38,8 @@ public interface OpenIMService {
 
     OpenImResponseDTO updateUserInfo(CompanyUser companyUser);
 
+    OpenImResponseDTO updateCourseFinishUserInfo(Long userId, String nickname);
+
     OpenImResponseDTO sendPackageUtil(String sendID, String recvID, Integer contentType, String payloadData,String packageName,String packageId);
 
     /**

+ 50 - 0
fs-service/src/main/java/com/fs/im/service/impl/OpenIMServiceImpl.java

@@ -474,6 +474,56 @@ public class OpenIMServiceImpl implements OpenIMService {
 
         return responseDTO;
     }
+
+    @Override
+    public OpenImResponseDTO updateCourseFinishUserInfo(Long userId, String nickname) {
+        if (userId == null || StringUtils.isEmpty(nickname)) {
+            return null;
+        }
+        String adminToken = getAdminToken();
+        if (StringUtils.isEmpty(adminToken)) {
+            log.error("完课同步IM用户信息失败,管理员token为空,userId:{}", userId);
+            return null;
+        }
+
+        String imUserId = "U" + userId;
+        Map<String, Object> queryParamMap = new HashMap<>();
+        queryParamMap.put("userIDs", Collections.singletonList(imUserId));
+        String queryBody = JSONUtil.toJsonStr(queryParamMap);
+
+        String queryResult = HttpRequest.post(IMConfig.URL + "/user/get_users_info")
+                .header("operationID", String.valueOf(System.currentTimeMillis()))
+                .header("token", adminToken)
+                .body(queryBody)
+                .execute()
+                .body();
+
+        OpenImResponseDTOTest queryResponse = JSONUtil.toBean(queryResult, OpenImResponseDTOTest.class);
+        if (queryResponse == null || queryResponse.getData() == null || CollectionUtils.isEmpty(queryResponse.getData().getUsersInfo())) {
+            log.warn("完课同步IM用户信息时,未查询到IM用户,imUserId:{}", imUserId);
+            return null;
+        }
+
+        UserInfo userInfo = queryResponse.getData().getUsersInfo().get(0);
+        UpdateUserInfo updateUserInfo = new UpdateUserInfo();
+        updateUserInfo.setUserID(userInfo.getUserID());
+        updateUserInfo.setNickname(nickname);
+        updateUserInfo.setFaceURL(Optional.ofNullable(userInfo.getFaceURL()).orElse(""));
+        updateUserInfo.setEx(Optional.ofNullable(userInfo.getEx()).orElse(""));
+
+        Map<String, Object> bodyMap = new HashMap<>();
+        bodyMap.put("userInfo", updateUserInfo);
+        String updateBody = JSONUtil.toJsonStr(bodyMap);
+
+        String updateResult = HttpRequest.post(IMConfig.URL + "/user/update_user_info_ex")
+                .header("operationID", String.valueOf(System.currentTimeMillis()))
+                .header("token", adminToken)
+                .body(updateBody)
+                .execute()
+                .body();
+        return JSONUtil.toBean(updateResult, OpenImResponseDTO.class);
+    }
+
     @Data
     public static class UpdateUserInfo {
         private String userID;