Browse Source

新用户注册,添加好友时添加好友身份标识

Eric 2 years ago
parent
commit
3182ee0078

+ 3 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/dto/UserFriendInfoVO.java

@@ -21,6 +21,9 @@ public class UserFriendInfoVO implements Serializable {
     // 新用户ID
     private Long userId;
 
+    // 客户端类型
+    private String clientType;
+
     // 好友ID
     private List<Long> friendIds;
 

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/provider/PhoneAuthenticationProvider.java

@@ -80,7 +80,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 
             if (Objects.nonNull(userInfo.getSysUser())) {
                 // 自动添加系统默认IM帐号为好友,并自动发送通知消息
-                sysUserService.sendSysCustomerServiceFriendMessage(userInfo.getSysUser());
+                sysUserService.sendSysCustomerServiceFriendMessage(userInfo.getSysUser(), clientId.toUpperCase());
             }
 
             if (StringUtils.isNotBlank(deviceNum)) {

+ 2 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/SysUserService.java

@@ -124,8 +124,9 @@ public interface SysUserService extends BaseService<Long, SysUser> {
     /**
      * 添加系统客服好友消息
      * @param sysUser SysUser
+     * @param clientType 客户端类型
      */
-    void sendSysCustomerServiceFriendMessage(SysUser sysUser);
+    void sendSysCustomerServiceFriendMessage(SysUser sysUser, String clientType);
 
     /**
      * 刷新token

+ 2 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/service/impl/SysUserServiceImpl.java

@@ -211,7 +211,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
      * 添加系统客服好友消息
      * @param sysUser SysUser
      */
-    public void sendSysCustomerServiceFriendMessage(SysUser sysUser) {
+    public void sendSysCustomerServiceFriendMessage(SysUser sysUser, String clientType) {
 
         try {
 
@@ -231,6 +231,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
                     // 发送添加系统客服好友消息
                     HttpResponseResult<Boolean> result = adminFeignService.customerService(UserFriendInfoVO.builder()
                             .userId(sysUser.getId())
+                            .clientType(clientType)
                             .friendIds(Lists.newArrayList(friend.getId()))
                             .build());
                     log.info("sendSysCustomerServiceFriendMessage mobile={}, ret={}", mobile, JSON.toJSONString(result));

+ 3 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/ImUserFriendController.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.admin.controller.open;
 
 import com.yonge.cooleshow.admin.io.request.im.IMNotifyMessageVO;
 import com.yonge.cooleshow.admin.io.request.im.UserFriendInfoVO;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -42,7 +43,8 @@ public class ImUserFriendController extends BaseController {
         }
 
         // 新用户自动绑定系统客服
-        int ret = imUserFriendService.registerUserBindCustomerService(info.getUserId(), info.getFriendIds());
+        int ret = imUserFriendService.registerUserBindCustomerService(info.getUserId(),
+                info.getFriendIds(), ClientEnum.valueOf(info.getClientType()));
 
         return succeed(ret > 0);
     }

+ 3 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/im/UserFriendInfoVO.java

@@ -22,6 +22,9 @@ public class UserFriendInfoVO implements Serializable {
     @ApiModelProperty(value = "新用户ID")
     private Long userId;
 
+    @ApiModelProperty("客户端类型")
+    private String clientType;
+
     @ApiModelProperty(value = "好友ID")
     private List<Long> friendIds;
 

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
 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 java.util.List;
@@ -41,9 +42,10 @@ public interface ImUserFriendService extends IService<ImUserFriend> {
      * 新用户自动添加客服
      * @param userId 新用户ID
      * @param friendIds 好友ID
+     * @param clientType 客户端类型
      * @return Integer
      */
-    Integer registerUserBindCustomerService(Long userId, List<Long> friendIds);
+    Integer registerUserBindCustomerService(Long userId, List<Long> friendIds, ClientEnum clientType);
 
     /**
      * 发送系统客服消息

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

@@ -20,9 +20,7 @@ import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import com.yonge.cooleshow.biz.dal.wrapper.im.CustomerService;
 import com.yonge.toolset.base.exception.BizException;
 import io.rong.messages.BaseMessage;
-import io.rong.messages.FileMessage;
 import io.rong.messages.ImgMessage;
-import io.rong.messages.ImgTextMessage;
 import io.rong.messages.TxtMessage;
 import io.rong.models.message.PrivateMessage;
 import io.rong.models.message.PushExt;
@@ -68,6 +66,8 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
     private CustomerServiceConfig customerServiceConfig;
     @Autowired
     private SysUserMapper sysUserMapper;
+    @Autowired
+    private ImUserFriendService imUserFriendService;
 
     @Override
     public ImUserFriendDao getDao() {
@@ -152,19 +152,27 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
      *
      * @param userId    新用户ID
      * @param friendIds 好友ID
+     * @param clientType 客户端类型
      * @return Integer
      */
     @Override
-    public Integer registerUserBindCustomerService(Long userId, List<Long> friendIds) {
+    public Integer registerUserBindCustomerService(Long userId, List<Long> friendIds, ClientEnum clientType) {
 
         // 添加新用户好友,客服默认为老师身份
         for (Long teacherId : friendIds) {
 
             saveUserFriend(teacherId, Sets.newHashSet(userId));
-        }
 
-        // 新注册用户为老师身份时,更新好友关系为老师身份
+            // 新注册用户为老师身份时,更新好友关系为老师身份
+            if (ClientEnum.TEACHER == clientType) {
 
+                imUserFriendService.lambdaUpdate()
+                        .eq(ImUserFriend::getUserId, teacherId)
+                        .eq(ImUserFriend::getFriendId, userId)
+                        .eq(ImUserFriend::getFriendType, ClientEnum.STUDENT)
+                        .set(ImUserFriend::getFriendType, ClientEnum.TEACHER);
+            }
+        }
 
         try {