Browse Source

新用户注册,自动添加客服好友

Eric 2 năm trước cách đây
mục cha
commit
be3c7edd0d

+ 9 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -4,6 +4,7 @@ import com.yonge.cooleshow.api.feign.dto.CouponInfoApi;
 import com.yonge.cooleshow.api.feign.dto.EmployeeApi;
 import com.yonge.cooleshow.api.feign.dto.StudentApi;
 import com.yonge.cooleshow.api.feign.dto.TeacherApi;
+import com.yonge.cooleshow.api.feign.dto.UserFriendInfoVO;
 import com.yonge.cooleshow.api.feign.fallback.AdminFeignServiceFallback;
 import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.cooleshow.common.entity.ContractDto;
@@ -128,4 +129,12 @@ public interface AdminFeignService {
                                                                @RequestParam("issueIds") String issueIds,
                                                                @RequestParam("orderAmount") BigDecimal orderAmount,
                                                                @RequestParam("client") String client);
+
+    /**
+     * 新用户添加客服好友
+     * @param info UserFriendInfoVO
+     * @return HttpResponseResult<Boolean>
+     */
+    @PostMapping(value = "/customerService")
+    HttpResponseResult<Boolean> customerService(@RequestBody UserFriendInfoVO info);
 }

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

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.api.feign.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 用户IM好友信息
+ * Created by Eric.Shang on 2022/9/20.
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserFriendInfoVO implements Serializable {
+
+    // 新用户ID
+    private Long userId;
+
+    // 好友ID
+    private List<Long> friendIds;
+
+}

+ 12 - 0
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/fallback/AdminFeignServiceFallback.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.api.feign.dto.CouponInfoApi;
 import com.yonge.cooleshow.api.feign.dto.EmployeeApi;
 import com.yonge.cooleshow.api.feign.dto.StudentApi;
 import com.yonge.cooleshow.api.feign.dto.TeacherApi;
+import com.yonge.cooleshow.api.feign.dto.UserFriendInfoVO;
 import com.yonge.cooleshow.common.entity.ContractDto;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
@@ -106,4 +107,15 @@ public class AdminFeignServiceFallback implements AdminFeignService {
     public HttpResponseResult<CouponInfoApi> queryCouponOrderPageInfo(Long userId, String issueIds, BigDecimal orderAmount, String client) {
         return null;
     }
+
+    /**
+     * 新用户添加客服好友
+     *
+     * @param info UserFriendInfoVO
+     * @return HttpResponseResult<Boolean>
+     */
+    @Override
+    public HttpResponseResult<Boolean> customerService(UserFriendInfoVO info) {
+        return null;
+    }
 }

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

@@ -1,6 +1,8 @@
 package com.yonge.cooleshow.auth.service.impl;
 
+import com.google.common.collect.Lists;
 import com.yonge.cooleshow.api.feign.AdminFeignService;
+import com.yonge.cooleshow.api.feign.dto.UserFriendInfoVO;
 import com.yonge.cooleshow.auth.api.dto.QRLoginDto;
 import com.yonge.cooleshow.auth.api.dto.RealnameAuthReq;
 import com.yonge.cooleshow.auth.api.dto.SysUserInfo;
@@ -23,16 +25,22 @@ import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.mybatis.dal.BaseDAO;
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
 import io.rong.models.user.UserModel;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implements SysUserService {
 
@@ -49,6 +57,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
     @Resource
     private AdminFeignService adminFeignService;
 
+    // 新用户注册,默认添加官方客服联系人配置
+    @Value("${app.customer.service:17740683946}")
+    private String customerService;
+
     @Override
     public BaseDAO<Long, SysUser> getDAO() {
         return sysUserDao;
@@ -163,7 +175,7 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
         sysUserDao.update(sysUser);
 
         // 自动添加系统默认IM帐号为好友,并自动发送通知消息
-
+        sendSysCustomerServiceFriendMessage(sysUser);
 
         return queryUserInfoByPhone(phone);
     }
@@ -183,10 +195,42 @@ public class SysUserServiceImpl extends BaseServiceImpl<Long, SysUser> implement
         sysUserDao.update(sysUser);
 
         // 自动添加系统默认IM帐号为好友,并自动发送通知消息
+        sendSysCustomerServiceFriendMessage(sysUser);
 
         return queryUserInfoByPhone(phone);
     }
 
+    /**
+     * 添加系统客服好友消息
+     * @param sysUser SysUser
+     */
+    private void sendSysCustomerServiceFriendMessage(SysUser sysUser) {
+
+        try {
+
+            if (StringUtils.isNotEmpty(customerService)) {
+
+                List<String> collect = Arrays.stream(customerService.split(",")).collect(Collectors.toList());
+
+                Random rand = new Random();
+                String mobile = collect.get(rand.nextInt(collect.size()));
+
+                // 系统客服好友
+                SysUser friend = sysUserDao.queryByPhone(mobile);
+
+                // 发送添加系统客服好友消息
+                adminFeignService.customerService(UserFriendInfoVO.builder()
+                        .userId(sysUser.getId())
+                        .friendIds(Lists.newArrayList(friend.getId()))
+                        .build());
+            }
+
+        } catch (Exception e) {
+            log.error("sendSysCustomerServiceFriendMessage userId={}", sysUser.getId(), e);
+        }
+
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void refreshImToken(SysUser sysUser) {

+ 0 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/ImUserFriendController.java

@@ -25,10 +25,6 @@ import javax.annotation.Resource;
 @RequestMapping("/open/im")
 public class ImUserFriendController extends BaseController {
 
-    // 新用户注册,默认添加官方客服联系人配置
-    @Value("${app.customer.service:17740683946}")
-    private String customerService;
-
     /**
      * 服务对象
      */

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MK.java

@@ -16,4 +16,9 @@ public interface MK {
     String TIME_ZONE = "GMT+8";
     // 时间戳
     String YYYYMMDD = "yyyyMMdd";
+
+    // 客服消息
+    String IM_SYS_FRIEND = "你好!我是你的专属客服~有任何问题都可以与我联系哦!";
+    // 推送消息标题
+    String IM_SYS_TITLE = "客服消息";
 }

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

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.dao.ImUserFriendDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.entity.ImUserFriend;
+import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.service.ImUserFriendService;
 import io.rong.messages.TxtMessage;
 import io.rong.models.message.PrivateMessage;
@@ -16,6 +17,8 @@ import io.rong.models.message.PushExt;
 import io.rong.models.response.ResponseResult;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,6 +45,12 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
     private TeacherDao teacherDao;
     @Resource
     private SysUserFeignService sysUserFeignService;
+
+    @Value("${app.customer.message:}")
+    private String customerMessage;
+    @Value("${app.customer.title:}")
+    private String customerTitle;
+
     @Override
     public ImUserFriendDao getDao() {
         return this.baseMapper;
@@ -123,11 +132,19 @@ public class ImUserFriendServiceImpl extends ServiceImpl<ImUserFriendDao, ImUser
 
         try {
 
+            // 设置默认值
+            if (StringUtils.isEmpty(customerMessage)) {
+                customerMessage = MK.IM_SYS_FRIEND;
+            }
+            if (StringUtils.isEmpty(customerTitle)) {
+                customerTitle = MK.IM_SYS_TITLE;
+            }
+
             // 发送消息
-            TxtMessage txtMessage = new TxtMessage("你好!我是你的专属客服~有任何问题都可以与我联系哦!", "");
+            TxtMessage txtMessage = new TxtMessage(customerMessage, "");
 
             // 拓展消息
-            PushExt pushExt = PushExt.build("客服消息", 1,
+            PushExt pushExt = PushExt.build(customerTitle, 1,
                     new PushExt.HW("channelId", "NORMAL"), new PushExt.VIVO("1"),
                     new PushExt.APNs("", ""),
                     new PushExt.OPPO(""));