diff --git a/research-admin/src/main/java/com/research/web/controller/client/ExportController.java b/research-admin/src/main/java/com/research/web/controller/client/ExportController.java new file mode 100644 index 00000000..b4335cfa --- /dev/null +++ b/research-admin/src/main/java/com/research/web/controller/client/ExportController.java @@ -0,0 +1,36 @@ +package com.research.web.controller.client; + +import com.research.system.service.ExportService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; + +/** + * @Author zzc + * @Package com.research.web.controller.client + * @Date 2025/11/28 14:57 + * @description: + */ +@RestController +@RequestMapping("/export") +@Api(tags = "任务相关") +@Slf4j +public class ExportController { + + @Resource + private ExportService exportService; + + @ApiOperation(value = "导出项目运行报告") + @RequestMapping(value = "/all", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public void export(HttpServletResponse response){ + exportService.export( response); + + } + +} diff --git a/research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java b/research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java index f4517c43..1f5edbbb 100644 --- a/research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java +++ b/research-admin/src/main/java/com/research/web/controller/system/SysLoginController.java @@ -2,6 +2,9 @@ package com.research.web.controller.system; import java.util.List; import java.util.Set; + +import com.research.system.service.SessionService; +import liquibase.pro.packaged.E; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -19,6 +22,8 @@ import com.research.framework.web.service.SysPermissionService; import com.research.framework.web.service.TokenService; import com.research.system.service.ISysMenuService; +import javax.annotation.Resource; + /** * 登录验证 * @@ -38,6 +43,8 @@ public class SysLoginController @Autowired private TokenService tokenService; + @Resource + private SessionService sessionService; /** * 登录方法 diff --git a/research-admin/src/main/resources/application-dev.yml b/research-admin/src/main/resources/application-dev.yml index 6330ab65..9d52e8f5 100644 --- a/research-admin/src/main/resources/application-dev.yml +++ b/research-admin/src/main/resources/application-dev.yml @@ -61,4 +61,6 @@ spring: multi-statement-allow: true server: # 服务器的HTTP端口,默认为8080 - port: 8080 \ No newline at end of file + port: 8080 +research: + reportTemplate: C:\Users\zzc16\Desktop\report_template.docx \ No newline at end of file diff --git a/research-admin/src/main/resources/application-prod.yml b/research-admin/src/main/resources/application-prod.yml index 473804fe..d6fc0895 100644 --- a/research-admin/src/main/resources/application-prod.yml +++ b/research-admin/src/main/resources/application-prod.yml @@ -61,4 +61,6 @@ spring: multi-statement-allow: true server: # 服务器的HTTP端口,默认为8080 - port: 38081 \ No newline at end of file + port: 38081 +research: + reportTemplate: D:\Projects\research\server\profile\reportTemplate.docx \ No newline at end of file diff --git a/research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java b/research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java index 7b2f3ba8..40d7a431 100644 --- a/research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java +++ b/research-framework/src/main/java/com/research/framework/web/service/SysLoginService.java @@ -1,6 +1,9 @@ package com.research.framework.web.service; import javax.annotation.Resource; + +import com.research.common.utils.SecurityUtils; +import com.research.system.service.SessionService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -51,7 +54,8 @@ public class SysLoginService @Autowired private ISysConfigService configService; - + @Resource + private SessionService sessionService; /** * 登录验证 * @@ -96,6 +100,14 @@ public class SysLoginService AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); + + // + try { + sessionService.queryNoSessionUser(loginUser.getUserId()); + }catch (Exception e) { + e.printStackTrace(); + + } // 生成token return tokenService.createToken(loginUser); } diff --git a/research-system/pom.xml b/research-system/pom.xml index 9bc0abed..2601ebe2 100644 --- a/research-system/pom.xml +++ b/research-system/pom.xml @@ -16,7 +16,11 @@ - + + com.deepoove + poi-tl + 1.10.5 + com.research diff --git a/research-system/src/main/java/com/research/system/domain/dto/SessionDto.java b/research-system/src/main/java/com/research/system/domain/dto/SessionDto.java index 7d7c8f38..2e3e83dd 100644 --- a/research-system/src/main/java/com/research/system/domain/dto/SessionDto.java +++ b/research-system/src/main/java/com/research/system/domain/dto/SessionDto.java @@ -27,6 +27,7 @@ public class SessionDto { @NotNull(message = "会话id不能为空") @ApiModelProperty("会话id") private Long sessionId; + private Long userId = SecurityUtils.getUserId(); } @Data @@ -52,9 +53,10 @@ public class SessionDto { @ApiModelProperty("会话名称") private String sessionName; @ApiModelProperty("会话类型 0普通会话 1群组会话") - private Byte type; + private Integer type; @ApiModelProperty("会话成员") private List memberList; + private Long loginUserId; } @Data diff --git a/research-system/src/main/java/com/research/system/domain/vo/SessionVo.java b/research-system/src/main/java/com/research/system/domain/vo/SessionVo.java index 3b529cb0..bec9dcab 100644 --- a/research-system/src/main/java/com/research/system/domain/vo/SessionVo.java +++ b/research-system/src/main/java/com/research/system/domain/vo/SessionVo.java @@ -26,11 +26,12 @@ public class SessionVo { @ApiModelProperty("会话头像") private String sessionAvatar; @ApiModelProperty("会话类型") - private Byte sessionType; + private Integer sessionType; @ApiModelProperty("最后一条消息") private String lastMessage; @ApiModelProperty("最后消息时间") private Date lastMessageTime; + private Byte contentType; private String orgName; private Long senderId; diff --git a/research-system/src/main/java/com/research/system/persist/dao/SessionDao.java b/research-system/src/main/java/com/research/system/persist/dao/SessionDao.java index 6a2e65ee..6298fb19 100644 --- a/research-system/src/main/java/com/research/system/persist/dao/SessionDao.java +++ b/research-system/src/main/java/com/research/system/persist/dao/SessionDao.java @@ -22,4 +22,6 @@ public interface SessionDao { List queryMemberList(SessionDto.SessionId dto); List queryUnReadList(Long userId); + + List queryMineSessionList(Long userId); } \ No newline at end of file diff --git a/research-system/src/main/java/com/research/system/service/ExportService.java b/research-system/src/main/java/com/research/system/service/ExportService.java new file mode 100644 index 00000000..2fb6b303 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/ExportService.java @@ -0,0 +1,13 @@ +package com.research.system.service; + +import javax.servlet.http.HttpServletResponse; + +/** + * @Author zzc + * @Package com.research.system.service + * @Date 2025/11/28 12:37 + * @description: + */ +public interface ExportService { + void export(HttpServletResponse response); +} diff --git a/research-system/src/main/java/com/research/system/service/SessionService.java b/research-system/src/main/java/com/research/system/service/SessionService.java index 7e110017..3fb19b6f 100644 --- a/research-system/src/main/java/com/research/system/service/SessionService.java +++ b/research-system/src/main/java/com/research/system/service/SessionService.java @@ -4,6 +4,7 @@ import com.research.common.core.domain.BaseDto; import com.research.system.domain.dto.SessionDto; import com.research.system.domain.vo.SessionVo; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -14,6 +15,9 @@ import java.util.List; */ public interface SessionService { + //根据当前登录人,获取没有会话的人 + List queryNoSessionUser(Long userId); + List queryTxl(SessionDto.Query dto); SessionVo.MessageLogResult queryLog(BaseDto dto); @@ -31,4 +35,5 @@ public interface SessionService { Integer addSessionMember(SessionDto.AddSessionMember dto); Integer delSessionMember(SessionDto.AddSessionMember dto); + } diff --git a/research-system/src/main/java/com/research/system/service/impl/ExportServiceImpl.java b/research-system/src/main/java/com/research/system/service/impl/ExportServiceImpl.java new file mode 100644 index 00000000..9b733535 --- /dev/null +++ b/research-system/src/main/java/com/research/system/service/impl/ExportServiceImpl.java @@ -0,0 +1,204 @@ +package com.research.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import com.deepoove.poi.XWPFTemplate; +import com.deepoove.poi.data.*; +import com.research.common.utils.DateUtils; +import com.research.common.utils.file.FileUtils; +import com.research.system.domain.dto.ClientPrjProOrgDto; +import com.research.system.domain.dto.GroupDto; +import com.research.system.domain.dto.OutcomeDto; +import com.research.system.domain.vo.ClientPrjProjInfoVo; +import com.research.system.domain.vo.GroupVO; +import com.research.system.domain.vo.OutcomeVo; +import com.research.system.service.CooperatorService; +import com.research.system.service.ExportService; +import com.research.system.service.KtsGroupService; +import com.research.system.service.OutcomeService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.FileOutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author zzc + * @Package com.research.system.service.impl + * @Date 2025/11/28 12:37 + * @description: + */ +@Service +public class ExportServiceImpl implements ExportService { + + + @Resource + private CooperatorService cooperatorService; + @Value(value = "${research.reportTemplate}") + private String reportTemplate; + @Resource + private KtsGroupService ktsGroupService; + @Resource + private OutcomeService outcomeService; + + @Override + public void export(HttpServletResponse response) { + XWPFTemplate template = XWPFTemplate.compile(reportTemplate); + HashMap map = new HashMap<>(); + List query = cooperatorService.query(new ClientPrjProOrgDto.Query()); + + //合作单位 + if (CollUtil.isNotEmpty(query)) { + TextRenderData text1 = Texts.of("单位名称").bold().fontSize(12).create(); + TextRenderData text2 = Texts.of("单位类型").bold().fontSize(12).create(); + TextRenderData text3 = Texts.of("负责人").bold().fontSize(12).create(); + RowRenderData headerRow = Rows.of(text1, text2, text3).center().create(); + Tables.TableBuilder of = Tables.of(headerRow); + for (ClientPrjProjInfoVo.OrgVo orgVo : query) { + RowRenderData rowRenderData = Rows.of( + orgVo.getOrgName(), + orgVo.getCategory() == null ? null : orgVo.getCategory() == 0 ? "申报单位" : "合作单位", + orgVo.getOrgLeader() + ).center().create(); + of.addRow(rowRenderData).center(); + } + TableRenderData tableData = of + .create(); + map.put("table0", tableData); + } + + + //项目课题 + List groupList = ktsGroupService.queryGroupList(new GroupDto.Query()); + if (CollUtil.isNotEmpty(groupList)) { + TextRenderData text1 = Texts.of("单位名称").bold().fontSize(12).create(); + TextRenderData text2 = Texts.of("课题").bold().fontSize(12).create(); + TextRenderData text3 = Texts.of("负责人").bold().fontSize(12).create(); + RowRenderData headerRow = Rows.of(text1, text2, text3).center().create(); + Tables.TableBuilder of = Tables.of(headerRow); + for (GroupVO.Result result : groupList) { + RowRenderData rowRenderData = Rows.of( + result.getProjOrgName(), + result.getKtGroupName(), + result.getName() + ).center().create(); + of.addRow(rowRenderData).center(); + } + TableRenderData tableData = of + .create(); + map.put("table1", tableData); + } + //项目成果 + List outcomeList = outcomeService.queryList(new OutcomeDto.Query()); + if (CollUtil.isNotEmpty(outcomeList)) { + //学术论文 + Map> outcomeMap = outcomeList.stream().collect(Collectors.groupingBy(OutcomeVo.Result::getCategoryId1)); + List results = outcomeMap.get(1L); + + if (CollUtil.isNotEmpty(results)) { + TextRenderData text1 = Texts.of("单位名称").bold().fontSize(12).create(); + TextRenderData text2 = Texts.of("标题").bold().fontSize(12).create(); + TextRenderData text3 = Texts.of("作者").bold().fontSize(12).create(); + TextRenderData text4 = Texts.of("类型").bold().fontSize(12).create(); + TextRenderData text5 = Texts.of("刊物").bold().fontSize(12).create(); + TextRenderData text6 = Texts.of("收录类别").bold().fontSize(12).create(); + RowRenderData headerRow = Rows.of(text1, text2, text3, text4, text5, text6).center().create(); + Tables.TableBuilder of = Tables.of(headerRow); + for (OutcomeVo.Result result : results) { + RowRenderData rowRenderData = Rows.of( + result.getProjOrgName(), + result.getTitle(), + result.getAuthors(), + result.getAchType() == null ? null : result.getAchType() == 0 ? "期刊论文" : result.getAchType() == 1 ? "会议论文" : result.getAchType() == 2 ? "报刊文章" : result.getAchType() == 3 ? "报纸文章" : "学位论文", + result.getSource(), + result.getCategoryId2() == null ? null : result.getCategoryId2() == 2 ? "SCI" : result.getCategoryId2() == 3 ? "中文期刊" : "其他" + ).center().create(); + of.addRow(rowRenderData).center(); + } + TableRenderData tableData = of + .create(); + map.put("table2", tableData); + } + List results1 = outcomeMap.get(11L); + if (CollUtil.isNotEmpty(results1)) { + TextRenderData text1 = Texts.of("单位名称").bold().fontSize(12).create(); + TextRenderData text2 = Texts.of("专利名称").bold().fontSize(12).create(); + TextRenderData text3 = Texts.of("专利号").bold().fontSize(12).create(); + TextRenderData text4 = Texts.of("专利类型").bold().fontSize(12).create(); + TextRenderData text5 = Texts.of("专利权人").bold().fontSize(12).create(); + TextRenderData text6 = Texts.of("专利内容").bold().fontSize(12).create(); + RowRenderData headerRow = Rows.of(text1, text2, text3, text4, text5, text6).center().create(); + Tables.TableBuilder of = Tables.of(headerRow); + for (OutcomeVo.Result result : results1) { + RowRenderData rowRenderData = Rows.of( + result.getProjOrgName(), + result.getTitle(), + result.getNo(), + result.getAchType() == null ? null : result.getAchType() == 0 ? "发明专利" : result.getAchType() == 1 ? "实用新型专利" : "外观设计专利", + result.getAuthors(), + result.getRemark() + ).center().create(); + of.addRow(rowRenderData).center(); + } + TableRenderData tableData = of + .create(); + map.put("table3", tableData); + } + + List results2 = outcomeMap.get(71L); + if (CollUtil.isNotEmpty(results2)) { + TextRenderData text1 = Texts.of("标题").bold().fontSize(12).create(); + TextRenderData text2 = Texts.of("时间").bold().fontSize(12).create(); + TextRenderData text3 = Texts.of("地点").bold().fontSize(12).create(); + TextRenderData text4 = Texts.of("参与人").bold().fontSize(12).create(); + TextRenderData text5 = Texts.of("类型").bold().fontSize(12).create(); + TextRenderData text6 = Texts.of("内容").bold().fontSize(12).create(); + RowRenderData headerRow = Rows.of(text1, text2, text3, text4, text5, text6).center().create(); + Tables.TableBuilder of = Tables.of(headerRow); + for (OutcomeVo.Result result : results2) { + RowRenderData rowRenderData = Rows.of( + result.getTitle(), + DateUtil.format(result.getPublishDate(), "yyyy-MM-dd"), + result.getPlace(), + result.getAuthors(), + result.getAchType() == null ? null : result.getAchType() == 0 ? "学术讲座" : result.getAchType() == 1 ? "学术会议" : "外出进修", + result.getRemark() + ).center().create(); + of.addRow(rowRenderData).center(); + } + TableRenderData tableData = of + .create(); + map.put("table4", tableData); + } + } + + + try { + + String fileName = "项目运行报告.docx"; + String path = "C:/Users/zzc16/Desktop/项目运行报告.docx"; +// String path = "D:/Projects/research/server/profile/项目运行报告.docx"; + template.render(map); + //以文件形式输出 + template.writeAndClose(Files.newOutputStream(Paths.get(path))); + + //3.写出到客户端 + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, fileName); + FileUtils.writeBytes(path, response.getOutputStream()); + } catch (Exception e) { + e.printStackTrace(); // 输出详细的异常信息 + } + + } +} diff --git a/research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java b/research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java index f948e3a7..77431f88 100644 --- a/research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java +++ b/research-system/src/main/java/com/research/system/service/impl/SessionServiceImpl.java @@ -11,15 +11,14 @@ import com.research.system.domain.dto.SessionDto; import com.research.system.domain.po.*; import com.research.system.domain.vo.SessionVo; import com.research.system.persist.dao.SessionDao; -import com.research.system.persist.mapper.ChatMessageReadStatusMapper; -import com.research.system.persist.mapper.ChatSessionMembersMapper; -import com.research.system.persist.mapper.ChatSessionMessagesMapper; -import com.research.system.persist.mapper.ChatSessionsMapper; +import com.research.system.persist.mapper.*; import com.research.system.service.ISysUserService; import com.research.system.service.SessionService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -46,6 +45,41 @@ public class SessionServiceImpl implements SessionService { private ISysUserService sysUserService; @Resource private ChatMessageReadStatusMapper chatMessageReadStatusMapper; + @Resource + private ChatContactListMapper chatContactListMapper; + + + @Override + public List queryNoSessionUser(Long userId) { + List chatContactLists = chatContactListMapper.selectByExample(new ChatContactListExample()); + //查询有会话的人员 + List collect = new ArrayList<>(); + List list = sessionDao.queryMineSessionList(userId); + if (CollUtil.isNotEmpty(list)) { + ChatSessionMembersExample chatSessionMembersExample = new ChatSessionMembersExample(); + chatSessionMembersExample.createCriteria().andSessionIdIn(list); + List chatSessionMembers = chatSessionMembersMapper.selectByExample(chatSessionMembersExample); + if (CollUtil.isNotEmpty(chatSessionMembers)) { + collect = chatSessionMembers.stream().map(ChatSessionMembers::getSessionMemberId).distinct().collect(Collectors.toList()); + } + } + if (CollUtil.isNotEmpty(chatContactLists)) { + for (ChatContactList chatContactList : chatContactLists) { + if (collect.contains(chatContactList.getUserId())) { + continue; + } + //添加会话 + SessionDto.CreateSession createSession = new SessionDto.CreateSession(); + createSession.setSessionName(chatContactList.getNickName()); + createSession.setType(0); + createSession.setMemberList(CollUtil.newArrayList(chatContactList.getUserId(), userId)); + createSession.setLoginUserId(userId); + addSession(createSession); + } + } + + return null; + } @Override public List queryTxl(SessionDto.Query dto) { @@ -53,16 +87,29 @@ public class SessionServiceImpl implements SessionService { if (CollUtil.isNotEmpty(txlResults)) { for (SessionVo.TxlResult txlResult : txlResults) { if (txlResult.getSessionId() != null && txlResult.getSessionId() > 0) { + //如果是个人聊天,需要修改会话名称,查询合作单位名称 + if (txlResult.getSessionType() == 0) { + if ( txlResult.getSenderId() != null && !Objects.equals(SecurityUtils.getUserId(), txlResult.getSenderId())) { + txlResult.setSessionName(sysUserService.selectUserById(txlResult.getSenderId()).getUserName()); + ChatContactListExample chatContactListExample = new ChatContactListExample(); + chatContactListExample.createCriteria().andUserIdEqualTo(txlResult.getSenderId()); + List chatContactLists = chatContactListMapper.selectByExample(chatContactListExample); + if (CollUtil.isNotEmpty(chatContactLists)) { + txlResult.setOrgName(chatContactLists.get(0).getOrgName()); + } + } + } continue; } //查询会话接收人 SessionDto.CreateSession createSession = new SessionDto.CreateSession(); createSession.setSessionName(txlResult.getSessionName()); createSession.setType(txlResult.getSessionType()); - createSession.setMemberList(CollUtil.newArrayList(txlResult.getSenderId())); + createSession.setMemberList(CollUtil.newArrayList(txlResult.getSenderId(), SecurityUtils.getUserId())); Long addSession = addSession(createSession); txlResult.setSessionId(addSession); } + } return txlResults; } @@ -70,7 +117,7 @@ public class SessionServiceImpl implements SessionService { @Override public SessionVo.MessageLogResult queryLog(BaseDto dto) { SessionVo.MessageLogResult messageLogResult = new SessionVo.MessageLogResult(); - messageLogResult.setSessionInfo(sessionDao.querySessionInfo(dto.getParam())); + if (dto.getPageNum() > 0) { PageHelper.startPage(dto.getPageNum(), dto.getPageSize()); } @@ -89,6 +136,13 @@ public class SessionServiceImpl implements SessionService { messageLogResult.setLogList(new PageInfo<>(collect)); } messageLogResult.setMemberList(sessionDao.queryMemberList(dto.getParam())); + SessionVo.MessageLogResult.SessionInfo sessionInfo = sessionDao.querySessionInfo(dto.getParam()); + if (sessionInfo != null && "0".equals(sessionInfo.getSessionType())) { + if (CollUtil.isNotEmpty(messageLogResult.getMemberList())) { + sessionInfo.setSessionName(messageLogResult.getMemberList().get(0).getNickName()); + } + messageLogResult.setSessionInfo(sessionInfo); + } return messageLogResult; } @@ -133,8 +187,8 @@ public class SessionServiceImpl implements SessionService { public Long addSession(SessionDto.CreateSession dto) { ChatSessions chatSessions = new ChatSessions(); chatSessions.setSessionName(dto.getSessionName()); - chatSessions.setSessionType(dto.getType()); - chatSessions.setCreatedBy(SecurityUtils.getUserId()); + chatSessions.setSessionType(dto.getType().byteValue()); + chatSessions.setCreatedBy(dto.getLoginUserId()); chatSessions.setCreatedAt(new java.util.Date()); if (dto.getType() == 0) { SysUser sysUser = sysUserService.selectUserById(dto.getMemberList().get(0)); @@ -142,7 +196,7 @@ public class SessionServiceImpl implements SessionService { chatSessions.setAvatarUrl(sysUser.getAvatar()); } } - chatSessions.setCreateBy(SecurityUtils.getUserId() + ""); + chatSessions.setCreateBy("system"); chatSessions.setId(IdUtil.getSnowflakeNextId()); chatSessionsMapper.insertSelective(chatSessions); @@ -157,10 +211,10 @@ public class SessionServiceImpl implements SessionService { chatSessionMembers.setId(IdUtil.getSnowflakeNextId()); chatSessionMembers.setSessionId(chatSessions.getId()); chatSessionMembers.setSessionMemberId(aLong); - chatSessionMembers.setIsCreator(Objects.equals(aLong, SecurityUtils.getUserId()) ? (byte) 1 : (byte) 0); - chatSessionMembers.setIsAdmin(Objects.equals(aLong, SecurityUtils.getUserId()) ? (byte) 1 : (byte) 0); + chatSessionMembers.setIsCreator(Objects.equals(aLong, dto.getLoginUserId()) ? (byte) 1 : (byte) 0); + chatSessionMembers.setIsAdmin(Objects.equals(aLong, dto.getLoginUserId()) ? (byte) 1 : (byte) 0); chatSessionMembers.setSessionAlias(""); - chatSessionMembers.setCreateBy(SecurityUtils.getUsername()); + chatSessionMembers.setCreateBy("system"); chatSessionMembers.setCreateTime(new java.util.Date()); chatSessionMembersMapper.insertSelective(chatSessionMembers); } @@ -244,4 +298,5 @@ public class SessionServiceImpl implements SessionService { chatSessionMembers.setDelFlag((byte) 1); return chatSessionMembersMapper.updateByExampleSelective(chatSessionMembers, chatSessionMembersExample); } + } diff --git a/research-system/src/main/resources/mapper/dao/SessionDao.xml b/research-system/src/main/resources/mapper/dao/SessionDao.xml index 41701063..697bc599 100644 --- a/research-system/src/main/resources/mapper/dao/SessionDao.xml +++ b/research-system/src/main/resources/mapper/dao/SessionDao.xml @@ -20,8 +20,8 @@ select * from null as orgName FROM chat_sessions s - LEFT JOIN chat_session_messages m on s.id = m.session_id - LEFT JOIN chat_session_members csm on s.id = csm.session_id + left JOIN chat_session_messages m on s.id = m.session_id + left JOIN chat_session_members csm on s.id = csm.session_id where csm.session_member_id = #{userId} and s.session_name like concat('%',#{nickname},'%') @@ -38,25 +38,24 @@ select * from '', null, l.user_id as senderId, - null, - L.org_name AS orgName + null, + L.org_name AS orgName FROM chat_contact_list l - LEFT JOIN chat_session_members sm on sm.session_member_id = l.user_id and sm.is_creator = 1 + LEFT JOIN chat_session_members sm on sm.session_member_id = l.user_id LEFT JOIN chat_sessions cs on sm.session_id = cs.id and session_type = 0 - l.user_id != #{userId} + l.user_id != #{userId} and cs.id is null and l.nick_name like concat('%',#{nickname},'%') + group by l.user_id )a order by lastMessageTime desc, createTime desc - + +