Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow into ponline

zouxuan 1 year ago
parent
commit
15a48b509e
15 changed files with 348 additions and 254 deletions
  1. 3 3
      cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java
  2. 2 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/TenantActivationCodeController.java
  3. 1 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  4. 10 6
      cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java
  5. 9 3
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java
  6. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java
  7. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImGroupService.java
  8. 247 229
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java
  9. 52 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  10. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantAlbumMusicServiceImpl.java
  11. 4 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml
  12. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml
  13. 2 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TenantActivationCodeController.java
  14. 1 0
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java
  15. 10 6
      cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

+ 3 - 3
cooleshow-app/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -118,7 +118,7 @@ public class ImGroupController extends BaseController {
 
     @ApiOperation("IM导入消息")
     @PostMapping(value = "/ImportIM")
-    public void ImportIM() throws Exception {
+    public void ImportIM(String groupId) throws Exception {
         List<ImHistoryMessage> info;
         //计算总数据量
         double count = imGroupService.queryCount();
@@ -137,8 +137,8 @@ public class ImGroupController extends BaseController {
 
     @GetMapping(value = "/groupTransfer")
     @ApiOperation("群导入")
-    public void groupTransfer() {
-        imGroupService.groupTransfer();
+    public void groupTransfer(String groupId) {
+        imGroupService.groupTransfer(groupId);
     }
 
     @GetMapping(value = "/importUser")

+ 2 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/student/controller/TenantActivationCodeController.java

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.biz.dal.service.TenantActivationCodeService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.EActivationCode;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -52,6 +53,7 @@ public class TenantActivationCodeController extends BaseController {
         if (student == null) {
             throw new BizException("学生不存在");
         }
+        query.setSendStatus(EActivationCode.SEND);
         query.setActivationPhone(sysUser.getPhone());
         query.setTenantId(student.getTenantId());
         // 查询数据

+ 1 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -153,6 +153,7 @@ public class TenantActivationCodeController extends BaseController {
         }
         boolean update = tenantActivationCodeService.lambdaUpdate()
                 .set(TenantActivationCode::getSendStatus, EActivationCode.WAIT)
+                .set(TenantActivationCode::getActivationPhone, "")
                 .eq(TenantActivationCode::getId, id)
                 .eq(TenantActivationCode::getActivationStatus, false)
                 .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)

+ 10 - 6
cooleshow-app/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -270,14 +270,18 @@ public class TenantInfoController extends BaseController {
 
             // 修改用户基础信息流程
             //设置默认头像
-            if (StringUtils.isBlank(sysUser.getAvatar())) {
-                sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-            }
-
-            // 更新用户头象
             com.yonge.cooleshow.biz.dal.entity.SysUser updateSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
             updateSysUser.setId(user.getId());
-            updateSysUser.setAvatar(sysUser.getAvatar());
+            // 用户昵称
+            if (StringUtils.isNotBlank(sysUser.getUsername())) {
+                updateSysUser.setUsername(sysUser.getUsername());
+            }
+            //设置默认头像
+            if (StringUtils.isNotBlank(sysUser.getAvatar())) {
+                //sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+                updateSysUser.setAvatar(sysUser.getAvatar());
+            }
+            updateSysUser.setUpdateTime(LocalDateTime.now());
             sysUserMapper.updateById(updateSysUser);
 
             // 更新机构员工头像和昵称,机构信息表中的用户昵称

+ 9 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -15,6 +15,7 @@ import com.yonge.toolset.utils.validator.ValidationKit;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -118,7 +119,12 @@ public class ImGroupController extends BaseController {
 
     @ApiOperation("IM导入消息")
     @PostMapping(value = "/ImportIM")
-    public void ImportIM() throws Exception {
+    public void ImportIM(String groupId) throws Exception {
+        if (StringUtils.isNotBlank(groupId)) {
+            List<ImHistoryMessage> info = imGroupService.getImHistoryMessageByGroupId(groupId);
+            imGroupService.importInfo(info);
+            return;
+        }
         List<ImHistoryMessage> info;
         //计算总数据量
         double count = imGroupService.queryCount();
@@ -137,8 +143,8 @@ public class ImGroupController extends BaseController {
 
     @GetMapping(value = "/groupTransfer")
     @ApiOperation("群导入")
-    public void groupTransfer() {
-        imGroupService.groupTransfer();
+    public void groupTransfer(String groupId) {
+        imGroupService.groupTransfer(groupId);
     }
 
     @GetMapping(value = "/importUser")

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ImGroupDao.java

@@ -38,5 +38,7 @@ public interface ImGroupDao extends BaseMapper<ImGroup> {
 
     //更新状态
     void updateStatus(@Param("info") List<ImHistoryMessage> info);
+
+    List<ImHistoryMessage> getImHistoryMessageByGroupId(@Param("groupId") String groupId);
 }
 

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

@@ -183,7 +183,7 @@ public interface ImGroupService extends IService<ImGroup> {
     /**
      * 群迁移,融云->腾讯
      */
-    void groupTransfer();
+    void groupTransfer(String groupId);
 
     void joinImGroup(String roomId, BasicUserInfo userInfo, String serverProvider, List<Long> studentIds) throws Exception;
 
@@ -207,5 +207,7 @@ public interface ImGroupService extends IService<ImGroup> {
     RTCRoomPluginService getRTCRoomPluginService(String serviceProvider);
 
     Boolean updateImGroup(ImGroup imGroup);
+
+    List<ImHistoryMessage> getImHistoryMessageByGroupId(String groupId);
 }
 

+ 247 - 229
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -720,113 +720,114 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     public void importInfo(List<ImHistoryMessage> info) throws Exception {
 
         info.forEach(i -> {
-            //判断消息类型
-            Integer type = i.getTargetType();
-            if (type == 1) {
-                //单聊会话
-                MessageWrapper.PrivateImportMessage privateImportMessage = new MessageWrapper.PrivateImportMessage();
-                //2:表示历史消息导入,消息不计入未读计数,且消息不会推送到终端
-                privateImportMessage.setSyncFromOldSystem(2);
-                //设置发送人
-                //根据发送者分场景讨论
-                String id = i.getFromUserId();
-                String imUserId;
-                if (id.contains(":STUDENT")) {
-                    String[] split = id.split(":");
-                    String userId = split[0];
-                    String clientType = split[1];
-                    imUserId = getImUserId(userId, clientType);
-                } else {
-                    imUserId = getImUserId(id, "TEACHER");
-                }
-
-                privateImportMessage.setFromAccount(imUserId);
-                //设置接收人
-                privateImportMessage.setToAccount(i.getTargetId());
-                //设置随机数
-                privateImportMessage.setMsgRandom(new Random().nextInt());
+            try {
+                //判断消息类型
+                Integer type = i.getTargetType();
+                if (type == 1) {
+                    //单聊会话
+                    MessageWrapper.PrivateImportMessage privateImportMessage = new MessageWrapper.PrivateImportMessage();
+                    //2:表示历史消息导入,消息不计入未读计数,且消息不会推送到终端
+                    privateImportMessage.setSyncFromOldSystem(2);
+                    //设置发送人
+                    //根据发送者分场景讨论
+                    String id = i.getFromUserId();
+                    String imUserId;
+                    if (id.contains(":STUDENT")) {
+                        String[] split = id.split(":");
+                        String userId = split[0];
+                        String clientType = split[1];
+                        imUserId = getImUserId(userId, clientType);
+                    } else {
+                        imUserId = getImUserId(id, "TEACHER");
+                    }
 
-                //设置发送时间
-                String time = i.getDateTime();
-                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                try {
-                    Date date = df.parse(time);
-                    long dateTime = date.getTime();
-                    dateTime = dateTime / (1000);
-                    privateImportMessage.setMsgTimeStamp(dateTime);
-                } catch (ParseException e) {
-                    e.printStackTrace();
-                }
+                    privateImportMessage.setFromAccount(imUserId);
+                    //设置接收人
+                    privateImportMessage.setToAccount(i.getTargetId());
+                    //设置随机数
+//                    privateImportMessage.setMsgRandom(new Random().nextInt());
 
-                //设置body
-                TencentRequest.MessageBody body = new TencentRequest.MessageBody();
-                List<TencentRequest.MessageBody> list = new ArrayList<>();
-
-                JSONObject jsonObject = JSONObject.parseObject(i.getContent());
-                if (i.getClassname().equals("RC:TxtMsg")) {
-                    //文本
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
-                    list.add(body1);
-                } else if (i.getClassname().equals("RC:ImgMsg")) {
-                    //图片
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
-                    list.add(body1);
-                } else if (i.getClassname().equals("RC:GIFMsg")) {
-                    //GIf
-                    String remoteUrl = jsonObject.getString("remoteUrl");
-                    int gifDataSize = jsonObject.getInteger("gifDataSize");
-                    int width = jsonObject.getInteger("width");
-                    int height = jsonObject.getInteger("height");
-                    TencentRequest.MessageBody body1 = getTimGifElem(remoteUrl,gifDataSize,width,height);
-                    list.add(body1);
-                } else if (i.getClassname().equals("RC:HQVCMsg")){
-                    //语音
-                    String remoteUrl = jsonObject.getString("remoteUrl");
-                    int duration = jsonObject.getInteger("duration");
-                    TencentRequest.MessageBody body1 = getTimSoundElem(remoteUrl,duration);
-                    list.add(body1);
-                } else if(i.getClassname().equals("RC:FileMsg")){
-                    //文件
-                    String fileUrl = jsonObject.getString("fileUrl");
-                    String size = jsonObject.getString("size");
-                    String name = jsonObject.getString("name");
-
-                    TencentRequest.MessageBody body1 = getTimFileElem(fileUrl,size,name);
-                    list.add(body1);
-                } else if(i.getClassname().equals("RC:SightMsg")){
-                    //视频
-                    String sightUrl = jsonObject.getString("sightUrl");
-                    String size = jsonObject.getString("size");
-                    int duration = jsonObject.getInteger("duration");
-                    String content = jsonObject.getString("content");
-                    TencentRequest.MessageBody body1 = null;
+                    //设置发送时间
+                    String time = i.getDateTime();
+                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     try {
-                        body1 = getTimVideoFileElem(sightUrl,size,duration,content);
-                    } catch (IOException e) {
+                        Date date = df.parse(time);
+                        long dateTime = date.getTime();
+                        dateTime = dateTime / (1000);
+                        privateImportMessage.setMsgTimeStamp(dateTime);
+                    } catch (ParseException e) {
                         e.printStackTrace();
                     }
-                    list.add(body1);
-                } else if(i.getClassname().equals("RC:LBSMsg")) {
-                    //位置
-                    double latitude = jsonObject.getDouble("latitude");
-                    double longitude = jsonObject.getDouble("longitude");
-                    String poi = jsonObject.getString("poi");
-                    TencentRequest.MessageBody body1 = getTimLocationElem(latitude, longitude, poi);
-                    list.add(body1);
-                } else if (i.getClassname().equals("RC:ImgTextMsg")){
-                    //图文
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
-                    TencentRequest.MessageBody body2 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
-                    list.add(body1);
-                    list.add(body2);
-                } else {
-                    return;
-                }
+
+                    //设置body
+                    TencentRequest.MessageBody body = new TencentRequest.MessageBody();
+                    List<TencentRequest.MessageBody> list = new ArrayList<>();
+
+                    JSONObject jsonObject = JSONObject.parseObject(i.getContent());
+                    if (i.getClassname().equals("RC:TxtMsg")) {
+                        //文本
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
+                        list.add(body1);
+                    } else if (i.getClassname().equals("RC:ImgMsg")) {
+                        //图片
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
+                        list.add(body1);
+                    } else if (i.getClassname().equals("RC:GIFMsg")) {
+                        //GIf
+                        String remoteUrl = jsonObject.getString("remoteUrl");
+                        int gifDataSize = jsonObject.getInteger("gifDataSize");
+                        int width = jsonObject.getInteger("width");
+                        int height = jsonObject.getInteger("height");
+                        TencentRequest.MessageBody body1 = getTimGifElem(remoteUrl,gifDataSize,width,height);
+                        list.add(body1);
+                    } else if (i.getClassname().equals("RC:HQVCMsg")){
+                        //语音
+                        String remoteUrl = jsonObject.getString("remoteUrl");
+                        int duration = jsonObject.getInteger("duration");
+                        TencentRequest.MessageBody body1 = getTimSoundElem(remoteUrl,duration);
+                        list.add(body1);
+                    } else if(i.getClassname().equals("RC:FileMsg")){
+                        //文件
+                        String fileUrl = jsonObject.getString("fileUrl");
+                        String size = jsonObject.getString("size");
+                        String name = jsonObject.getString("name");
+
+                        TencentRequest.MessageBody body1 = getTimFileElem(fileUrl,size,name);
+                        list.add(body1);
+                    } else if(i.getClassname().equals("RC:SightMsg")){
+                        //视频
+                        String sightUrl = jsonObject.getString("sightUrl");
+                        String size = jsonObject.getString("size");
+                        int duration = jsonObject.getInteger("duration");
+                        String content = jsonObject.getString("content");
+                        TencentRequest.MessageBody body1 = null;
+                        try {
+                            body1 = getTimVideoFileElem(sightUrl,size,duration,content);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                        list.add(body1);
+                    } else if(i.getClassname().equals("RC:LBSMsg")) {
+                        //位置
+                        double latitude = jsonObject.getDouble("latitude");
+                        double longitude = jsonObject.getDouble("longitude");
+                        String poi = jsonObject.getString("poi");
+                        TencentRequest.MessageBody body1 = getTimLocationElem(latitude, longitude, poi);
+                        list.add(body1);
+                    } else if (i.getClassname().equals("RC:ImgTextMsg")){
+                        //图文
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
+                        TencentRequest.MessageBody body2 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
+                        list.add(body1);
+                        list.add(body2);
+                    } else {
+                        return;
+                    }
 
                /* body.setMsgType(i.getClassname());
                 body.setMsgContent(i.getContent());*/
 
-                /*list.add(body);*/
+                    /*list.add(body);*/
                /* list.stream().forEach(item->{
                     item.setMsgContent(i.getContent());
                     item.setMsgType(i.getClassname());
@@ -839,124 +840,124 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                     //图文对象
                     list.forEach(item -> item.setMsgType("TIMImageElem"));
                 }*/
-                privateImportMessage.setTencentMessageBody(list);
-                try {
-                    imPluginContext.getPluginService().importPrivateMessage(privateImportMessage);
-                    //为已导入数据更改标识
-                    imGroupService.updateStatus(info);
-                } catch (Exception e) {
-                    log.error("导入私聊IM消息失败 msg:{}",list,e);
-                }
-            } else if (type == 3) {
-                //群组会话
-                MessageWrapper.GroupImportMessage groupImportMessage = new MessageWrapper.GroupImportMessage();
-                List<MessageWrapper.GroupImportMessageData> list = new ArrayList<>();
-                MessageWrapper.GroupImportMessageData data1 = new MessageWrapper.GroupImportMessageData();
-                List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
-                //设置群组Id
-                groupImportMessage.setGroupId(i.getGroupId());
-                //设置发送人
-                String imUserId;
-                String id = i.getFromUserId();
-                //根据发送者分场景讨论
-                if (id.contains(":STUDENT")) {
-                    String[] split = id.split(":");
-                    String userId = split[0];
-                    String clientType = split[1];
-                    imUserId = getImUserId(userId, clientType);
-                } else {
-                    imUserId = getImUserId(id, "TEACHER");
-                }
+                    privateImportMessage.setTencentMessageBody(list);
+                    try {
+                        imPluginContext.getPluginService().importPrivateMessage(privateImportMessage);
+                        //为已导入数据更改标识
+                        imGroupService.updateStatus(info);
+                    } catch (Exception e) {
+                        log.error("导入私聊IM消息失败 msg:{}",list,e);
+                    }
+                } else if (type == 3) {
+                    //群组会话
+                    MessageWrapper.GroupImportMessage groupImportMessage = new MessageWrapper.GroupImportMessage();
+                    List<MessageWrapper.GroupImportMessageData> list = new ArrayList<>();
+                    MessageWrapper.GroupImportMessageData data1 = new MessageWrapper.GroupImportMessageData();
+                    List<TencentRequest.MessageBody> bodyList = new ArrayList<>();
+                    //设置群组Id
+                    groupImportMessage.setGroupId(i.getGroupId());
+                    //设置发送人
+                    String imUserId;
+                    String id = i.getFromUserId();
+                    //根据发送者分场景讨论
+                    if (id.contains(":STUDENT")) {
+                        String[] split = id.split(":");
+                        String userId = split[0];
+                        String clientType = split[1];
+                        imUserId = getImUserId(userId, clientType);
+                    } else {
+                        imUserId = getImUserId(id, "TEACHER");
+                    }
 
 
-                data1.setFromAccount(imUserId);
-                //设置随机数
-                data1.setRandom(new Random().nextInt());
-                //设置发送时间
+                    data1.setFromAccount(imUserId);
+                    //设置随机数
+                    data1.setRandom(new Random().nextInt());
+                    //设置发送时间
 
-                String time = i.getDateTime();
-                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                try {
-                    Date date = df.parse(time);
-                    long dateTime = date.getTime();
-                    dateTime = dateTime / (1000);
-                    data1.setSendTime(dateTime);
-                } catch (ParseException e) {
-                    e.printStackTrace();
-                }
+                    String time = i.getDateTime();
+                    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    try {
+                        Date date = df.parse(time);
+                        long dateTime = date.getTime();
+                        dateTime = dateTime / (1000);
+                        data1.setSendTime(dateTime);
+                    } catch (ParseException e) {
+                        e.printStackTrace();
+                    }
                 /*bodyList.stream().forEach(item->{
                             item.setMsgContent(i.getContent());
                             item.setMsgType(i.getClassname());
                         });*/
-                JSONObject jsonObject = JSONObject.parseObject(i.getContent());
-                if (i.getClassname().equals("RC:TxtMsg")) {
-                    //文本
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
-                    bodyList.add(body1);
-                } else if (i.getClassname().equals("RC:ImgMsg")) {
-                    //图片  GIf
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
-                    bodyList.add(body1);
-                } else if (i.getClassname().equals("RC:GIFMsg")) {
-                    //GIf
-                    String remoteUrl = jsonObject.getString("remoteUrl");
-                    int gifDataSize = jsonObject.getInteger("gifDataSize");
-                    int width = jsonObject.getInteger("width");
-                    int height = jsonObject.getInteger("height");
-                    TencentRequest.MessageBody body1 = getTimGifElem(remoteUrl,gifDataSize,width,height);
-                    bodyList.add(body1);
-                } else if (i.getClassname().equals("RC:HQVCMsg")){
-                    //语音
-                    String remoteUrl = jsonObject.getString("remoteUrl");
-                    int duration = jsonObject.getInteger("duration");
-                    TencentRequest.MessageBody body1 = getTimSoundElem(remoteUrl,duration);
-                    bodyList.add(body1);
-                } else if(i.getClassname().equals("RC:FileMsg")){
-                    //文件
-                    String fileUrl = jsonObject.getString("fileUrl");
-                    String size = jsonObject.getString("size");
-                    String name = jsonObject.getString("name");
-
-                    TencentRequest.MessageBody body1 = getTimFileElem(fileUrl,size,name);
-                    bodyList.add(body1);
-                } else if(i.getClassname().equals("RC:SightMsg")){
-                    //视频
-                    String sightUrl = jsonObject.getString("sightUrl");
-                    String size = jsonObject.getString("size");
-                    int duration = jsonObject.getInteger("duration");
-                    String content = jsonObject.getString("content");
-                    TencentRequest.MessageBody body1 = null;
-                    try {
-                        body1 = getTimVideoFileElem(sightUrl,size,duration,content);
-                    } catch (IOException e) {
-                        e.printStackTrace();
+                    JSONObject jsonObject = JSONObject.parseObject(i.getContent());
+                    if (i.getClassname().equals("RC:TxtMsg")) {
+                        //文本
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
+                        bodyList.add(body1);
+                    } else if (i.getClassname().equals("RC:ImgMsg")) {
+                        //图片  GIf
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
+                        bodyList.add(body1);
+                    } else if (i.getClassname().equals("RC:GIFMsg")) {
+                        //GIf
+                        String remoteUrl = jsonObject.getString("remoteUrl");
+                        int gifDataSize = jsonObject.getInteger("gifDataSize");
+                        int width = jsonObject.getInteger("width");
+                        int height = jsonObject.getInteger("height");
+                        TencentRequest.MessageBody body1 = getTimGifElem(remoteUrl,gifDataSize,width,height);
+                        bodyList.add(body1);
+                    } else if (i.getClassname().equals("RC:HQVCMsg")){
+                        //语音
+                        String remoteUrl = jsonObject.getString("remoteUrl");
+                        int duration = jsonObject.getInteger("duration");
+                        TencentRequest.MessageBody body1 = getTimSoundElem(remoteUrl,duration);
+                        bodyList.add(body1);
+                    } else if(i.getClassname().equals("RC:FileMsg")){
+                        //文件
+                        String fileUrl = jsonObject.getString("fileUrl");
+                        String size = jsonObject.getString("size");
+                        String name = jsonObject.getString("name");
+
+                        TencentRequest.MessageBody body1 = getTimFileElem(fileUrl,size,name);
+                        bodyList.add(body1);
+                    } else if(i.getClassname().equals("RC:SightMsg")){
+                        //视频
+                        String sightUrl = jsonObject.getString("sightUrl");
+                        String size = jsonObject.getString("size");
+                        int duration = jsonObject.getInteger("duration");
+                        String content = jsonObject.getString("content");
+                        TencentRequest.MessageBody body1 = null;
+                        try {
+                            body1 = getTimVideoFileElem(sightUrl,size,duration,content);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                        bodyList.add(body1);
+                    } else if(i.getClassname().equals("RC:LBSMsg")) {
+                        //位置
+                        double latitude = jsonObject.getDouble("latitude");
+                        double longitude = jsonObject.getDouble("longitude");
+                        String poi = jsonObject.getString("poi");
+                        TencentRequest.MessageBody body1 = getTimLocationElem(latitude, longitude, poi);
+                        bodyList.add(body1);
+                    } else if (i.getClassname().equals("RC:ImgTextMsg")){
+                        //图文
+                        TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
+                        TencentRequest.MessageBody body2 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
+                        bodyList.add(body1);
+                        bodyList.add(body2);
+                    } else if (i.getClassname().equals("RC:CombineMsg")){
+                        //合并转发
+                        String remoteUrl = jsonObject.getString("remoteUrl");
+                        int conversationType = jsonObject.getInteger("conversationType");
+                        getTimRelayElem();
+                    } else {
+                        return;
                     }
-                    bodyList.add(body1);
-                } else if(i.getClassname().equals("RC:LBSMsg")) {
-                    //位置
-                    double latitude = jsonObject.getDouble("latitude");
-                    double longitude = jsonObject.getDouble("longitude");
-                    String poi = jsonObject.getString("poi");
-                    TencentRequest.MessageBody body1 = getTimLocationElem(latitude, longitude, poi);
-                    bodyList.add(body1);
-                } else if (i.getClassname().equals("RC:ImgTextMsg")){
-                    //图文
-                    TencentRequest.MessageBody body1 = CustomerServiceBatchSendingServiceImpl.getTimTextElem(jsonObject.getString("content"));
-                    TencentRequest.MessageBody body2 = CustomerServiceBatchSendingServiceImpl.getTimImageElem(jsonObject.getString("imageUri"));
-                    bodyList.add(body1);
-                    bodyList.add(body2);
-                } else if (i.getClassname().equals("RC:CombineMsg")){
-                    //合并转发
-                    String remoteUrl = jsonObject.getString("remoteUrl");
-                    int conversationType = jsonObject.getInteger("conversationType");
-                    getTimRelayElem();
-                } else {
-                    return;
-                }
                 /*body.setMsgContent(i.getContent());
                 body.setMsgType(i.getClassname());*/
 
-                //文本对象
+                    //文本对象
                 /*if (bodyList.stream().map(TencentRequest.MessageBody::getMsgType).collect(Collectors.toList()).get(0).equals("RC:TxtMsg")) {
                     bodyList.forEach(item -> item.setMsgType("TIMTextElem"));
                 } else if (bodyList.stream().map(TencentRequest.MessageBody::getMsgType).collect(Collectors.toList()).get(0).equals("RC:ImgMsg")) {
@@ -964,19 +965,23 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                     bodyList.forEach(item -> item.setMsgType("TIMCustomElem"));
                 }*/
 
-                data1.setTencentMessageBody(bodyList);
+                    data1.setTencentMessageBody(bodyList);
 
-                list.add(data1);
-                //导入消息列表
-                groupImportMessage.setMsgList(list);
-                try {
-                    imPluginContext.getPluginService().importGroupMessage(groupImportMessage);
-                    //为已导入数据更改标识
-                    imGroupService.updateStatus(info);
-                } catch (Exception e) {
-                    log.error("导入群组IM消息失败 msg:{}",list,e);
+                    list.add(data1);
+                    //导入消息列表
+                    groupImportMessage.setMsgList(list);
+                    try {
+                        imPluginContext.getPluginService().importGroupMessage(groupImportMessage);
+                        //为已导入数据更改标识
+                        imGroupService.updateStatus(info);
+                    } catch (Exception e) {
+                        log.error("导入群组IM消息失败 msg:{}",list,e);
+                    }
                 }
+            } catch (Exception e) {
+                log.error("导入失败,{}",i,e);
             }
+
         });
     }
 
@@ -1154,20 +1159,26 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
      * 群迁移
      */
     @Override
-    public void groupTransfer() {
-//        int page = 1;
-//        int size = 100;
-//        List<ImGroup> imGroups = this.lambdaQuery().orderByDesc(ImGroup::getCreateTime)
-//                .last("limit " + ((page - 1) * size) + "," + size).list();
-//        while (!imGroups.isEmpty()) {
-//            groupTransfer(imGroups);
-//
-//            page++;
-//            imGroups = this.lambdaQuery().orderByDesc(ImGroup::getCreateTime)
-//                    .last("limit " + ((page - 1) * size) + "," + size).list();
-//        }
-        ImGroup byId = this.getById("9f677fcd-9d80-4db0-8beb-0ff04e6a98f6FAN");
-        groupTransfer(Collections.singletonList(byId));
+    public void groupTransfer(String groupId) {
+        if (StringUtils.isNotBlank(groupId)) {
+            ImGroup byId = this.getById(groupId);
+            groupTransfer(Collections.singletonList(byId));
+            return;
+        }
+        int page = 1;
+        int size = 100;
+        List<ImGroup> imGroups = this.lambdaQuery().orderByDesc(ImGroup::getCreateTime)
+                .last("limit " + ((page - 1) * size) + "," + size).list();
+        while (!imGroups.isEmpty()) {
+            groupTransfer(imGroups);
+
+            page++;
+            imGroups = this.lambdaQuery().orderByDesc(ImGroup::getCreateTime)
+                    .last("limit " + ((page - 1) * size) + "," + size).list();
+            if (CollectionUtils.isNotEmpty(imGroups)) {
+                groupTransfer(imGroups);
+            }
+        }
     }
 
     @Override
@@ -1259,6 +1270,12 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
         return true;
     }
 
+    @Override
+    public List<ImHistoryMessage> getImHistoryMessageByGroupId(String groupId) {
+        return getDao().getImHistoryMessageByGroupId(groupId);
+
+    }
+
 
     private void groupTransfer(List<ImGroup> records) {
         String fansIcon = sysConfigService.findConfigValue(SysConfigConstant.ICON_FANS_GROUP_DEFAULT);
@@ -1329,6 +1346,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 }
             } catch (Exception e) {
                 log.error(String.format("群迁移加入群聊失败:%s", e.getMessage()));
+                log.error("群迁移加入群聊失败",e);
             }
         }
     }

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

@@ -1,6 +1,41 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
+import com.yonge.cooleshow.biz.dal.entity.*;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumMapper;
+import com.yonge.cooleshow.biz.dal.mapper.TenantAlbumRefMapper;
+import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindHistoryMapper;
+import com.yonge.cooleshow.biz.dal.mapper.TenantUnbindRecordMapper;
+import com.yonge.cooleshow.biz.dal.queryInfo.TeacherQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetUploadCountVo;
+import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.teacher.TeacherWrapper;
+import com.yonge.cooleshow.common.enums.ESettlementFrom;
+import com.yonge.cooleshow.common.enums.ETenantUnBindAuditStatus;
+import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
+import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
+import com.yonge.toolset.utils.string.ValueUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RMap;
+import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -79,6 +114,7 @@ import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.thirdparty.user.realname.RealnameAuthenticationPlugin;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.string.ValueUtil;
@@ -183,6 +219,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     @Autowired
     private ImGroupCoreService imGroupCoreService;
 
+    @Autowired
+    private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
+
     @Override
     public TeacherVo detail(Long userId) {
         TeacherVo detail = baseMapper.detail(userId);
@@ -531,6 +570,15 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
                 teacherSubmitReq.setTenantId(-1L);
             }
             if (!teacher.getTenantId().equals(teacherSubmitReq.getTenantId())) {
+                if (teacherSubmitReq.getTenantId().equals(-1L)) {
+                    // 平台老师处理流程
+                    if (ESettlementFrom.TENANT.equals(teacher.getSettlementFrom())) {
+                        // 解绑后,结算方式如果是机构,默认调整为老师
+                        teacherSubmitReq.setSettlementFrom(ESettlementFrom.TEACHER);
+                        teacherSubmitReq.setIsSettlement(true);
+                    }
+                }
+
                 TeacherWrapper.UpdateTenant updateTenant = new TeacherWrapper.UpdateTenant();
                 updateTenant.setTeacherId(teacher.getUserId());
                 updateTenant.setTenantId(teacherSubmitReq.getTenantId());
@@ -569,13 +617,13 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             realNameAuthDto.setRealName(teacherSubmitReq.getRealName());
             realNameAuthDto.setSave(false);
 
-            HttpResponseResult<IdcardInfoExtractor> idcardInfoExtractorResult =
-                    userFeignService.realNameAuth(realNameAuthDto);
-            if (!idcardInfoExtractorResult.getStatus() || null == idcardInfoExtractorResult.getData()) {
+            if (!realnameAuthenticationPlugin.verify(realNameAuthDto.getRealName(),realNameAuthDto.getIdCardNo())) {
                 throw new BizException("实名认证未通过");
             }
+
+            //通过身份证号获取身份信息
+            IdcardInfoExtractor idcardInfo = new IdcardInfoExtractor(realNameAuthDto.getIdCardNo(), false);
             //身份证解析信息
-            IdcardInfoExtractor idcardInfo = idcardInfoExtractorResult.getData();
             sysUser.setGender(idcardInfo.getGender());
             sysUser.setBirthdate(idcardInfo.getBirthday());
             sysUser.setRealName(teacherSubmitReq.getRealName());

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

@@ -146,7 +146,7 @@ public class TenantAlbumMusicServiceImpl extends ServiceImpl<TenantAlbumMusicMap
             List<MusicFavorite> list = musicFavoriteService.lambdaQuery()
                     .eq(MusicFavorite::getMusicSheetId, id)
                     .eq(MusicFavorite::getUserId,sysUserId)
-                    .eq(MusicFavorite::getClientType,query.getClientType()).list();
+                    .eq(MusicFavorite::getClientType,query.getClientType().equals(ClientEnum.TENANT_STUDENT)?ClientEnum.STUDENT:query.getClientType()).list();
             if (CollectionUtils.isNotEmpty(list)){
                 m.setFavorite(true);
             }

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -142,4 +142,8 @@
             #{item.groupUserIds,jdbcType=VARCHAR},#{item.appId,jdbcType=VARCHAR})
         </foreach>
     </insert>
+
+    <select id="getImHistoryMessageByGroupId" resultType="com.yonge.cooleshow.biz.dal.entity.ImHistoryMessage">
+        select * from im_history_message where GroupId_ = #{groupId} and status_ = 0 order by  dateTime_
+    </select>
 </mapper>

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysMusicCompareRecordMapper.xml

@@ -183,7 +183,7 @@
 
 	<select id="getUserTrainChartData" resultType="com.yonge.cooleshow.biz.dal.dto.StudentTrainChartDto">
 		SELECT
-			smcr.create_time_ trainDate,
+			DATE_FORMAT(smcr.create_time_, '%Y-%m-%d') trainDate,
 			COUNT(DISTINCT smcr.behavior_id_) trainNum,
 			SUM(smcr.play_time_) trainTime
 		FROM sys_music_compare_record smcr

+ 2 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/TenantActivationCodeController.java

@@ -12,6 +12,7 @@ import com.yonge.cooleshow.biz.dal.service.TenantActivationCodeService;
 import com.yonge.cooleshow.biz.dal.wrapper.TenantActivationCodeWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.EActivationCode;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -52,6 +53,7 @@ public class TenantActivationCodeController extends BaseController {
         if (student == null) {
             throw new BizException("学生不存在");
         }
+        query.setSendStatus(EActivationCode.SEND);
         query.setActivationPhone(sysUser.getPhone());
         query.setTenantId(student.getTenantId());
         // 查询数据

+ 1 - 0
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantActivationCodeController.java

@@ -159,6 +159,7 @@ public class TenantActivationCodeController extends BaseController {
         }
         boolean update = tenantActivationCodeService.lambdaUpdate()
                 .set(TenantActivationCode::getSendStatus, EActivationCode.WAIT)
+                .set(TenantActivationCode::getActivationPhone, "")
                 .eq(TenantActivationCode::getId, id)
                 .eq(TenantActivationCode::getActivationStatus, false)
                 .eq(TenantActivationCode::getSendStatus, EActivationCode.SEND)

+ 10 - 6
cooleshow-user/user-tenant/src/main/java/com/yonge/cooleshow/tenant/controller/TenantInfoController.java

@@ -270,15 +270,19 @@ public class TenantInfoController extends BaseController {
         } else {
 
             // 修改用户基础信息流程
-            //设置默认头像
-            if (StringUtils.isBlank(sysUser.getAvatar())) {
-                sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
-            }
-
             // 更新用户头象
             com.yonge.cooleshow.biz.dal.entity.SysUser updateSysUser = new com.yonge.cooleshow.biz.dal.entity.SysUser();
             updateSysUser.setId(user.getId());
-            updateSysUser.setAvatar(sysUser.getAvatar());
+            // 用户昵称
+            if (StringUtils.isNotBlank(sysUser.getUsername())) {
+                updateSysUser.setUsername(sysUser.getUsername());
+            }
+            //设置默认头像
+            if (StringUtils.isNotBlank(sysUser.getAvatar())) {
+                //sysUser.setAvatar(sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD));
+                updateSysUser.setAvatar(sysUser.getAvatar());
+            }
+            updateSysUser.setUpdateTime(LocalDateTime.now());
             sysUserMapper.updateById(updateSysUser);
 
             // 更新机构员工头像和昵称,机构信息表中的用户昵称