Bladeren bron

1.给学生老师添加客服联系人

yuanliang 1 jaar geleden
bovenliggende
commit
53998a6a07

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImUserFriendService.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
 import com.yonge.cooleshow.biz.dal.wrapper.im.ImUserWrapper;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
@@ -31,6 +32,8 @@ public interface ImUserFriendService extends IService<ImUserFriend> {
     */
     void saveUserFriend(Long teacherId, Set<Long> studentIds);
 
+    void saveUserTeacherFriend(Long teacherId, Set<Long> teacherIds);
+
     /**
     * @description: 获取用户详情
      * @param userId

+ 47 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImUserFriendServiceImpl.java

@@ -121,6 +121,53 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void saveUserTeacherFriend(Long teacherId, Set<Long> teacherIds) {
+        if (CollectionUtils.isEmpty(teacherIds)) {
+            return;
+        }
+        Date now = new Date();
+        //老师添加学员联系人
+        List<ImUserFriend> imUserFriends = new ArrayList<>();
+        BasicUserInfo teacherInfo = teacherDao.getBasicUserInfo(teacherId);
+        List<BasicUserInfo> studentInfos = teacherDao.findBasicUserInfo(teacherIds);
+        studentInfos.add(teacherInfo);
+        Map<Long, List<BasicUserInfo>> basicUserInfoMap =
+                studentInfos.stream().collect(Collectors.groupingBy(BasicUserInfo::getUserId));
+        for (Long studentId : teacherIds) {
+            //老师关联学员
+            ImUserFriend teacherFriend = new ImUserFriend();
+            //学员关联老师
+            ImUserFriend studentFriend = new ImUserFriend();
+            List<BasicUserInfo> basicUserInfos = basicUserInfoMap.get(studentId);
+            if (CollectionUtils.isNotEmpty(basicUserInfos)) {
+                BasicUserInfo info = basicUserInfos.get(0);
+                teacherFriend.setFriendAvatar(info.getAvatar());
+                teacherFriend.setFriendNickname(info.getUsername());
+
+                studentFriend.setFriendAvatar(teacherInfo.getAvatar());
+                studentFriend.setFriendNickname(teacherInfo.getUsername());
+            }
+            teacherFriend.setClientType(ClientEnum.TEACHER);
+            teacherFriend.setFriendId(studentId);
+            teacherFriend.setFriendType(ClientEnum.TEACHER);
+            teacherFriend.setUserId(teacherId);
+            teacherFriend.setCreateTime(now);
+            teacherFriend.setUpdateTime(now);
+
+            studentFriend.setClientType(ClientEnum.TEACHER);
+            studentFriend.setFriendId(teacherId);
+            studentFriend.setFriendType(ClientEnum.TEACHER);
+            studentFriend.setUserId(studentId);
+            studentFriend.setCreateTime(now);
+            studentFriend.setUpdateTime(now);
+            imUserFriends.add(teacherFriend);
+            imUserFriends.add(studentFriend);
+        }
+        baseMapper.insertBatch(imUserFriends);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public ImUserFriend getDetail(String imUserId, ClientEnum clientType) {
 
         String[] values = imUserId.split(":");

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java

@@ -11,6 +11,7 @@ import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.webportal.exception.BizException;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.config.CustomerServiceConfig;
 import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentDao;
 import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
@@ -111,6 +112,9 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Autowired
     private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private CustomerServiceConfig customerServiceConfig;
+
     @Override
     public StudentDao getDao() {
         return baseMapper;
@@ -640,6 +644,22 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
                     new HashSet<>(ImmutableList.of(sysUser.getId()))));
         }
 
+        //  与客服建立好友
+        String customerService = customerServiceConfig.getCustomerService();
+        if(StringUtils.isNotBlank(customerService)){
+            List<String> phones = Arrays.stream(customerService.split(",")).collect(Collectors.toList());
+            // 通过手机号获取用户ID
+            QueryWrapper<com.yonge.cooleshow.biz.dal.entity.SysUser> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().in(com.yonge.cooleshow.biz.dal.entity.SysUser::getPhone,phones);
+            List<com.yonge.cooleshow.biz.dal.entity.SysUser> sysUsers = sysUserMapper.selectList(queryWrapper);
+            Set<Long> userIds = sysUsers.stream().map(com.yonge.cooleshow.biz.dal.entity.SysUser::getId).collect(Collectors.toSet());
+            for (Long teacherId : userIds) {
+                HashSet<Long> studentIds = new HashSet<>();
+                studentIds.add(student.getUserId());
+                imUserFriendService.saveUserFriend(teacherId, studentIds);
+            }
+        }
+
         return true;
     }
 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -9,6 +10,7 @@ import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.config.CustomerServiceConfig;
 import com.yonge.cooleshow.biz.dal.dao.EmployeeDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
@@ -22,6 +24,7 @@ import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
+import com.yonge.cooleshow.biz.dal.mapper.SysUserMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumRefMapper;
 import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindHistoryMapper;
@@ -152,6 +155,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
 
+    @Autowired
+    private CustomerServiceConfig customerServiceConfig;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
 
     @Override
     public TeacherVo detail(Long userId) {
@@ -405,6 +414,19 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
             imUserFriendService.saveUserFriend(teacher.getUserId(), collect);
         }
+        //  与客服建立好友
+        String customerService = customerServiceConfig.getCustomerService();
+        if(StringUtils.isNotBlank(customerService)){
+            List<String> phones = Arrays.stream(customerService.split(",")).collect(Collectors.toList());
+            // 通过手机号获取用户ID
+            QueryWrapper<com.yonge.cooleshow.biz.dal.entity.SysUser> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().in(com.yonge.cooleshow.biz.dal.entity.SysUser::getPhone,phones);
+            List<com.yonge.cooleshow.biz.dal.entity.SysUser> sysUsers = sysUserMapper.selectList(queryWrapper);
+            Set<Long> userIds = sysUsers.stream().map(com.yonge.cooleshow.biz.dal.entity.SysUser::getId).collect(Collectors.toSet());
+            if (userIds.isEmpty()) {
+                imUserFriendService.saveUserTeacherFriend(teacher.getUserId(), userIds);
+            }
+        }
 
         return HttpResponseResult.succeed(true);
     }