Selaa lähdekoodia

处理全部扣减后,后续VIP前移,当天剩余时间属于赠送

yuanliang 11 kuukautta sitten
vanhempi
commit
c8b64b2096

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

@@ -596,6 +596,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             teacherSubmitReq.setIsSettlement(true);
         }
         Teacher teacher = baseMapper.selectById(teacherSubmitReq.getUserId());
+        Boolean customerService = teacher.getCustomerService();
         if (null == teacher) {
             teacher = new Teacher();
             teacher.setUserId(teacherSubmitReq.getUserId());
@@ -634,7 +635,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         } else {
             // 客服状态变更,移交好友信息
             List<TeacherWrapper.CustomerServiceSendMsg2User> customerServiceSendMsg2User = new ArrayList<>();
-            if (Boolean.TRUE.equals(teacher.getCustomerService()) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
+            if (Boolean.TRUE.equals(customerService) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
                 customerServiceSendMsg2User.addAll(transferFriend(teacher.getUserId(), true));
             }
             // 如果机构解绑,更新机构ID为-1
@@ -672,7 +673,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 
 
             // 交接后的客服发送消息
-            if (Boolean.TRUE.equals(teacher.getCustomerService()) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
+            if (Boolean.TRUE.equals(customerService) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
                 String customerMessage = sysConfigService.findConfigValue(SysConfigConstant.CUSTOMER_SERVICE_ADD_MSG);
                 String customerTitle = sysConfigService.findConfigValue(SysConfigConstant.CUSTOMER_SERVICE_ADD_MSG_TITLE);
                 for (TeacherWrapper.CustomerServiceSendMsg2User serviceSendMsg2User : customerServiceSendMsg2User) {
@@ -692,15 +693,21 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     private List<TeacherWrapper.CustomerServiceSendMsg2User> transferFriend(Long userId, boolean saveGroupFriend) {
         List<TeacherWrapper.CustomerServiceSendMsg2User> result = new ArrayList<>();
         // 所有的好友
-        List<ImUserFriend> friendList = imUserFriendService.lambdaQuery()
+        List<ImUserFriend> userFriendList = imUserFriendService.lambdaQuery()
                 .eq(ImUserFriend::getUserId, userId)
                 .eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
                 .list();
-        if (friendList.isEmpty()) { // 没有好友
+
+        // 其他客服
+        List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
+        customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
+        List<Long> customerIds = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
+        userFriendList.removeIf(n -> customerIds.contains(n.getFriendId()) && ClientEnum.TEACHER.equals(n.getFriendType()));
+        if (userFriendList.isEmpty()) { // 没有好友
             return result;
         }
 
-        List<ImUserFriend> removeFriendList = friendList;
+        List<ImUserFriend> removeFriendList = userFriendList;
         if (saveGroupFriend) {
             // 群里的好友保留
             List<String> groupIdList = imGroupMemberService.lambdaQuery()
@@ -732,12 +739,41 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                         .collect(Collectors.toList()));
             }
 
+            // 机构好友保留
+            Teacher teacher = this.getById(userId);
+            List<Long> tenantTeacherIds = new ArrayList<>();
+            List<Long> tenantStudentIds = new ArrayList<>();
+            if (teacher.getTenantId() > 0) {
+                List<Long> teacherIdList = userFriendList.stream().filter(n -> ClientEnum.TEACHER.equals(n.getFriendType())).map(ImUserFriend::getFriendId).collect(Collectors.toList());
+                List<Long> studentIdList = userFriendList.stream().filter(n -> ClientEnum.STUDENT.equals(n.getFriendType())).map(ImUserFriend::getFriendId).collect(Collectors.toList());
+                if (!teacherIdList.isEmpty()) {
+                    List<Long> tenantTeacherIdsTemp = this.lambdaQuery().in(Teacher::getUserId, teacherIdList)
+                            .eq(Teacher::getTenantId, teacher.getTenantId())
+                            .list()
+                            .stream().filter(n -> n.getTenantId() > 0).map(Teacher::getUserId).collect(Collectors.toList());
+                    tenantTeacherIds.addAll(tenantTeacherIdsTemp);
+                }
+                if (!studentIdList.isEmpty()) {
+                    List<Long> tenantStudentIdsTemp = studentService.lambdaQuery().in(Student::getUserId, studentIdList)
+                            .eq(Student::getTenantId, teacher.getTenantId())
+                            .list()
+                            .stream().filter(n -> n.getTenantId() > 0).map(Student::getUserId).collect(Collectors.toList());
+                    tenantStudentIds.addAll(tenantStudentIdsTemp);
+                }
+            }
+
             // 删除的好友
-            removeFriendList = friendList.stream().filter(n -> {
+            removeFriendList = userFriendList.stream().filter(n -> {
                 if (ClientEnum.STUDENT.equals(n.getFriendType())) {
+                    if (tenantStudentIds.contains(n.getFriendId())) {
+                        return false;
+                    }
                     return !savedStudentIdList.contains(n.getFriendId());
                 }
                 if (ClientEnum.TEACHER.equals(n.getFriendType())) {
+                    if (tenantTeacherIds.contains(n.getFriendId())) {
+                        return false;
+                    }
                     return !savedTeacherIdList.contains(n.getFriendId());
                 }
                 return false;
@@ -762,16 +798,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                     .remove();
         });
 
-        List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
-        customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
-        if (customerServiceFriendNums.isEmpty()) {
-            return result;
-        }
-        List<Long> customerIdList = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
-        List<ImUserFriend> userFriendList = friendList.stream()
-                .filter(n -> !ClientEnum.TEACHER.equals(n.getFriendType()) || !customerIdList.contains(n.getFriendId()))
-                .collect(Collectors.toList());
-        if (userFriendList.isEmpty()) { // 除去客服好友,没有其他好友
+        if (customerIds.isEmpty()) {
             return result;
         }
         // 去除好友里面存在其他客服关系的好友,只有没有客服好友的好友,才需要与客服建立好友关系

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

@@ -322,6 +322,7 @@ public class TenantApplyRecordServiceImpl extends ServiceImpl<TenantApplyRecordM
 
 
         TenantEntryRecord tenantEntryRecord = JSON.parseObject(JSON.toJSONString(applyRecord), TenantEntryRecord.class);
+        tenantEntryRecord.setTenantApplyRecordId(applyRecord.getId());
          tenantEntryRecordMapper.insert(tenantEntryRecord);