From dc885119a0023cbb839f1c2364be509bb527c4b5 Mon Sep 17 00:00:00 2001 From: ZhangAo Date: Sun, 4 Jan 2026 17:31:04 +0800 Subject: [PATCH] u --- .../base/controller/BaseDataController.java | 22 -- .../cn/link56/base/model/vo/BaseDataVO.java | 35 --- .../link56/base/service/BaseDataService.java | 108 ------- .../company/controller/CompanyController.java | 14 +- .../controller/CompanyUserController.java | 12 +- .../link56/company/mapper/CompanyMapper.java | 6 - .../cn/link56/company/model/vo/AreaVO.java | 17 ++ .../link56/company/model/vo/IndustryVO.java | 14 + .../company/service/CompanyService.java | 98 ++++++- .../company/service/CompanyUserService.java | 13 +- .../cn/link56/im/controller/ImController.java | 14 +- .../cn/link56/im/mapper/ImFriendMapper.java | 5 + .../cn/link56/im/mapper/ImGroupMapper.java | 11 +- .../link56/im/mapper/ImGroupUserMapper.java | 5 + .../im/model/dto/UpdateGroupUnreadDTO.java | 1 - .../im/model/dto/UpdatePrivateUnreadDTO.java | 1 - .../link56/im/model/vo/FriendProfileVO.java | 9 + .../cn/link56/im/service/ImFriendService.java | 12 +- .../cn/link56/im/service/ImGroupService.java | 2 + .../link56/im/service/ImGroupUserService.java | 3 + .../link56/company/mapper/CompanyMapper.xml | 16 ++ .../cn/link56/im/mapper/ImFriendMapper.xml | 17 +- code/link56/link56-frontend-new/src/App.vue | 59 ++-- .../src/components/CompanyUserCard.vue | 36 --- .../components/CompanyUserProfileDialog.vue | 267 ++++++++++++++++++ .../src/layout/components/header.vue | 47 ++- .../src/request/api/base/index.ts | 6 +- .../src/request/api/company/index.ts | 10 +- .../src/request/api/company/user.ts | 6 +- .../src/request/api/im/index.ts | 4 + .../src/request/api/post/index.ts | 2 +- .../link56-frontend-new/src/store/common.ts | 19 +- .../link56-frontend-new/src/store/count.ts | 25 ++ .../src/types/auto-import.d.ts | 3 +- .../src/types/base/index.ts | 24 -- .../src/types/company/index.ts | 14 + .../link56-frontend-new/src/types/im/index.ts | 8 +- .../src/views/company/index.vue | 6 +- .../views/im/components/GroupChatWindows.vue | 3 +- .../views/im/components/PrivateChatWindow.vue | 1 + .../src/views/im/index.vue | 256 ++++++++++++++--- .../post/detail/components/comment-list.vue | 43 ++- .../src/views/post/detail/index.vue | 17 +- 43 files changed, 927 insertions(+), 364 deletions(-) delete mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/controller/BaseDataController.java delete mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/BaseDataVO.java delete mode 100644 code/link56/link56-backend/src/main/java/cn/link56/base/service/BaseDataService.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/AreaVO.java create mode 100644 code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/IndustryVO.java delete mode 100644 code/link56/link56-frontend-new/src/components/CompanyUserCard.vue create mode 100644 code/link56/link56-frontend-new/src/components/CompanyUserProfileDialog.vue create mode 100644 code/link56/link56-frontend-new/src/store/count.ts diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/controller/BaseDataController.java b/code/link56/link56-backend/src/main/java/cn/link56/base/controller/BaseDataController.java deleted file mode 100644 index 1776fa5b..00000000 --- a/code/link56/link56-backend/src/main/java/cn/link56/base/controller/BaseDataController.java +++ /dev/null @@ -1,22 +0,0 @@ -package cn.link56.base.controller; - -import cn.link56.base.model.vo.BaseDataVO; -import cn.link56.base.service.BaseDataService; -import cn.link56.common.Result; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; - -@RestController -@RequestMapping("/base") -public class BaseDataController { - @Resource - private BaseDataService baseDataService; - - @GetMapping("/init") - public Result initBaseData() { - return Result.success(baseDataService.getBaseData()); - } -} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/BaseDataVO.java b/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/BaseDataVO.java deleted file mode 100644 index 0c94fdd0..00000000 --- a/code/link56/link56-backend/src/main/java/cn/link56/base/model/vo/BaseDataVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.link56.base.model.vo; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -@Data -@AllArgsConstructor -@NoArgsConstructor -public class BaseDataVO { - private List industries; - private List areas; - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Industry { - private Long id; - private Integer xh; - private String name; - } - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class Area { - private String id; - private Integer xh; - private String name; - private String fatherId; - private List children; - } -} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/base/service/BaseDataService.java b/code/link56/link56-backend/src/main/java/cn/link56/base/service/BaseDataService.java deleted file mode 100644 index 66aff2ca..00000000 --- a/code/link56/link56-backend/src/main/java/cn/link56/base/service/BaseDataService.java +++ /dev/null @@ -1,108 +0,0 @@ -package cn.link56.base.service; - -import cn.link56.base.mapper.AreaMapper; -import cn.link56.base.mapper.IndustryMapper; -import cn.link56.base.model.po.Area; -import cn.link56.base.model.po.Industry; -import cn.link56.base.model.vo.BaseDataVO; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; - -@Service -public class BaseDataService { - @Resource - private IndustryMapper IndustryMapper; - @Resource - private AreaMapper AreaMapper; - - public BaseDataVO getBaseData() { - BaseDataVO baseDataVO = new BaseDataVO(); - - // 查询可用行业 - List industries = IndustryMapper.selectList( - new LambdaQueryWrapper() - .eq(Industry::getCanuse, "1") - ).stream() - .map(industry -> new BaseDataVO.Industry( - industry.getId(), - industry.getXh(), - industry.getName() - )) - .collect(Collectors.toList()); - - baseDataVO.setIndustries(industries); - - // 地区 - List allAreas = AreaMapper.listAllArea(); - List areaTree = buildAreaTree(allAreas); - - baseDataVO.setAreas(areaTree); - return baseDataVO; - } - - /** - * BArea → BaseDataVO.Area 树 - */ - private List buildAreaTree(List areas) { - if (areas == null || areas.isEmpty()) { - return Collections.emptyList(); - } - - // id -> VO - Map map = new HashMap<>(areas.size()); - - // 1️⃣ 先全部转 VO - for (Area a : areas) { - BaseDataVO.Area vo = new BaseDataVO.Area( - a.getId(), - a.getXh(), - a.getName(), - a.getFatherId(), - new ArrayList<>() - ); - map.put(vo.getId(), vo); - } - - // 2️⃣ 组装父子关系 - List roots = new ArrayList<>(); - - for (BaseDataVO.Area area : map.values()) { - String parentId = area.getFatherId(); - if (parentId == null || parentId.isEmpty()) { - roots.add(area); - } else { - BaseDataVO.Area parent = map.get(parentId); - if (parent != null) { - parent.getChildren().add(area); - } - } - } - - // 3️⃣ 可选排序 - sortTree(roots); - - return roots; - } - - /** - * 按 xh 排序(如果你用 order,也可以换) - */ - private void sortTree(List nodes) { - if (nodes == null || nodes.isEmpty()) { - return; - } - - nodes.sort(Comparator.comparing( - BaseDataVO.Area::getXh, - Comparator.nullsLast(Integer::compareTo) - )); - - for (BaseDataVO.Area node : nodes) { - sortTree(node.getChildren()); - } - } -} \ No newline at end of file diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java index 68431451..f9747243 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyController.java @@ -4,10 +4,7 @@ import cn.link56.common.BasePageVO; import cn.link56.common.Result; import cn.link56.company.model.dto.QueryCompanyDTO; import cn.link56.company.model.dto.UpdateCompanyDTO; -import cn.link56.company.model.vo.CompanyDetailVO; -import cn.link56.company.model.vo.QueryCompanyVO; -import cn.link56.company.model.vo.RecommendCompanyVO; -import cn.link56.company.model.vo.RecommendHotCompanyVO; +import cn.link56.company.model.vo.*; import cn.link56.company.service.CompanyService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -61,4 +58,13 @@ public class CompanyController { return Result.success(); } + @GetMapping("/area") + public Result> listAreas(){ + return Result.success(companyService.listAreas()); + } + + @GetMapping("/industry") + public Result> listIndustries(){ + return Result.success(companyService.listIndustries()); + } } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyUserController.java b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyUserController.java index ccd2403e..ea093d5c 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyUserController.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/controller/CompanyUserController.java @@ -2,6 +2,7 @@ package cn.link56.company.controller; import cn.link56.common.BasePageVO; import cn.link56.common.Result; +import cn.link56.common.context.UserContext; import cn.link56.company.model.dto.AddCompanyUserDTO; import cn.link56.company.model.dto.DeleteCompanyUserDTO; import cn.link56.company.model.dto.QueryCompanyUserDTO; @@ -29,32 +30,33 @@ public class CompanyUserController { } @PostMapping("/add") - public Result addCompanyUser(@RequestBody @Validated AddCompanyUserDTO companyUserDTO){ + public Result addCompanyUser(@RequestBody @Validated AddCompanyUserDTO companyUserDTO) { companyUserService.addCompanyUser(companyUserDTO); return Result.success(); } @PostMapping("/update") - public Result updateCompanyUser(@RequestBody @Validated UpdateCompanyUserDTO companyUserDTO){ + public Result updateCompanyUser(@RequestBody @Validated UpdateCompanyUserDTO companyUserDTO) { companyUserService.updateCompanyUser(companyUserDTO); return Result.success(); } @PostMapping("/delete") - public Result deleteCompanyUser(@RequestBody @Validated DeleteCompanyUserDTO deleteCompanyUserDTO){ + public Result deleteCompanyUser(@RequestBody @Validated DeleteCompanyUserDTO deleteCompanyUserDTO) { companyUserService.deleteCompanyUser(deleteCompanyUserDTO); return Result.success(); } @GetMapping("/chat/{companyId}") - public Result> listCompanyChatUsers(@PathVariable("companyId") Long companyId){ + public Result> listCompanyChatUsers(@PathVariable("companyId") Long companyId) { List data = companyUserService.listCompanyChatUsers(companyId); return Result.success(data); } @GetMapping("/profile/{userId}") - public Result getCompanyUserProfile(@PathVariable("userId") Long userId){ + public Result getCompanyUserProfile(@PathVariable("userId") Long userId) { CompanyUserProfileVO companyUserProfileVO =companyUserService.getCompanyUserProfile(userId); return Result.success(companyUserProfileVO); } + } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/mapper/CompanyMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/company/mapper/CompanyMapper.java index 97130872..a9b2987b 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/mapper/CompanyMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/mapper/CompanyMapper.java @@ -13,11 +13,5 @@ import java.util.List; public interface CompanyMapper extends BaseMapper { List listRecommend(); - @Select( - "SELECT c.* " + - "FROM b_company c " + - "INNER JOIN b_company_user cu ON cu.company_id = c.id " + - "WHERE cu.user_id = #{userId} " - ) Company selectCompanyByUserId(@Param("userId") Long userId); } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/AreaVO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/AreaVO.java new file mode 100644 index 00000000..023b120c --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/AreaVO.java @@ -0,0 +1,17 @@ +package cn.link56.company.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AreaVO { + private String id; + private Integer xh; + private String name; + private String fatherId; + private List children; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/IndustryVO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/IndustryVO.java new file mode 100644 index 00000000..96261194 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/IndustryVO.java @@ -0,0 +1,14 @@ +package cn.link56.company.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class IndustryVO { + private Long id; + private Integer xh; + private String name; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java index ec718e37..d3201f7c 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyService.java @@ -1,5 +1,9 @@ package cn.link56.company.service; +import cn.link56.base.mapper.AreaMapper; +import cn.link56.base.mapper.IndustryMapper; +import cn.link56.base.model.po.Area; +import cn.link56.base.model.po.Industry; import cn.link56.common.BasePageVO; import cn.link56.common.context.UserContext; import cn.link56.common.exception.BusinessException; @@ -9,10 +13,7 @@ import cn.link56.company.model.dto.UpdateCompanyDTO; import cn.link56.company.model.middle.RecommendCompanyRow; import cn.link56.company.model.po.Company; import cn.link56.company.model.po.CompanyUser; -import cn.link56.company.model.vo.CompanyDetailVO; -import cn.link56.company.model.vo.QueryCompanyVO; -import cn.link56.company.model.vo.RecommendCompanyVO; -import cn.link56.company.model.vo.RecommendHotCompanyVO; +import cn.link56.company.model.vo.*; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -23,8 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -33,6 +33,10 @@ public class CompanyService extends ServiceImpl { private CompanyMapper companyMapper; @Resource private CompanyUserService companyUserService; + @Resource + private IndustryMapper industryMapper; + @Resource + private AreaMapper areaMapper; public List listRecommend() { List rows = companyMapper.listRecommend(); @@ -242,4 +246,86 @@ public class CompanyService extends ServiceImpl { companyUserService.updateCompanyAvatar(company.getId(),company.getLogo()); } + + public List listIndustries() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Industry::getCanuse,"1"); + List industries = industryMapper.selectList(queryWrapper); + + return industries.stream() + .map(industry -> new IndustryVO( + industry.getId(), + industry.getXh(), + industry.getName() + )) + .collect(Collectors.toList()); + } + + public List listAreas() { + List allAreas = areaMapper.listAllArea(); + + return buildAreaTree(allAreas); + } + + /** + * BArea → Area 树 + */ + private List buildAreaTree(List areas) { + if (areas == null || areas.isEmpty()) { + return Collections.emptyList(); + } + + // id -> VO + Map map = new HashMap<>(areas.size()); + + // 1️⃣ 先全部转 VO + for (Area a : areas) { + AreaVO vo = new AreaVO( + a.getId(), + a.getXh(), + a.getName(), + a.getFatherId(), + new ArrayList<>() + ); + map.put(vo.getId(), vo); + } + + // 2️⃣ 组装父子关系 + List roots = new ArrayList<>(); + + for (AreaVO area : map.values()) { + String parentId = area.getFatherId(); + if (parentId == null || parentId.isEmpty()) { + roots.add(area); + } else { + AreaVO parent = map.get(parentId); + if (parent != null) { + parent.getChildren().add(area); + } + } + } + + // 3️⃣ 可选排序 + sortTree(roots); + + return roots; + } + + /** + * 按 xh 排序(如果你用 order,也可以换) + */ + private void sortTree(List nodes) { + if (nodes == null || nodes.isEmpty()) { + return; + } + + nodes.sort(Comparator.comparing( + AreaVO::getXh, + Comparator.nullsLast(Integer::compareTo) + )); + + for (AreaVO node : nodes) { + sortTree(node.getChildren()); + } + } } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java index 54e7c914..d08e17f6 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/service/CompanyUserService.java @@ -15,6 +15,9 @@ import cn.link56.company.model.po.CompanyUser; import cn.link56.company.model.vo.ChatUserVO; import cn.link56.company.model.vo.CompanyUserProfileVO; import cn.link56.company.model.vo.QueryCompanyUserVO; +import cn.link56.im.mapper.ImFriendMapper; +import cn.link56.im.mapper.ImGroupMapper; +import cn.link56.im.mapper.ImGroupUserMapper; import cn.link56.im.storage.SessionManager; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; @@ -330,13 +333,12 @@ public class CompanyUserService extends ServiceImpl updatePrivateUnread(@RequestBody UpdatePrivateUnreadDTO dto){ - Long userId = dto.getUserId(); + Long userId = UserContext.getUserId(); Long friendId = dto.getFriendId(); imFriendService.decreaseUnreadCount(userId,friendId); @@ -81,7 +81,7 @@ public class ImController { @PostMapping("/group/update/unread") public Result updateGroup(@RequestBody UpdateGroupUnreadDTO dto){ - Long userId = dto.getUserId(); + Long userId = UserContext.getUserId(); Long groupId = dto.getGroupId(); imGroupUserService.decreaseUnreadCount(groupId,userId); @@ -103,4 +103,14 @@ public class ImController { return Result.success(groupProfileVO); } + + @GetMapping("/unreadCount") + public Result getAllUnreadCount(){ + Long userId = UserContext.getUserId(); + + Long friendUnread = imFriendService.getAllUnreadCount(userId); + Long groupUnread = imGroupUserService.getAllUnreadCount(userId); + + return Result.success(friendUnread + groupUnread); + } } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImFriendMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImFriendMapper.java index f1fb32b7..237dbc43 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImFriendMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImFriendMapper.java @@ -6,6 +6,7 @@ import cn.link56.im.model.vo.QueryFriendVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -41,4 +42,8 @@ public interface ImFriendMapper extends BaseMapper { @Param("userId") Long userId, @Param("friendId") Long friendId ); + + + @Select("SELECT SUM(b_unread_count) FROM b_im_friend WHERE b_user_id = #{userId}") + Long selectAllUnreadCount(@Param("userId") Long userId); } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupMapper.java index fe169d20..7cf0275f 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupMapper.java @@ -6,6 +6,7 @@ import cn.link56.im.model.vo.QueryGroupVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -19,10 +20,14 @@ public interface ImGroupMapper extends BaseMapper { @Param("id") Long id ); - Long selectGroupTotal(@Param("userId") Long userId, - @Param("name") String name); + Long selectGroupTotal( + @Param("userId") Long userId, + @Param("name") String name + ); GroupProfileVO selectGroupProfile( @Param("groupId") Long groupId, - @Param("userId") Long userId); + @Param("userId") Long userId + ); + } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupUserMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupUserMapper.java index 889d0bd4..fd657577 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupUserMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/mapper/ImGroupUserMapper.java @@ -5,6 +5,7 @@ import cn.link56.im.model.vo.QueryGroupUserVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -14,4 +15,8 @@ public interface ImGroupUserMapper extends BaseMapper { @Param("groupId") Long groupId, @Param("userName") String userName ); + + + @Select("SELECT SUM(b_unread_count) FROM b_im_group_user WHERE b_user_id = #{userId}") + Long selectAllUnreadCount(@Param("userId") Long userId); } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdateGroupUnreadDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdateGroupUnreadDTO.java index 31e730fd..a688f0cb 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdateGroupUnreadDTO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdateGroupUnreadDTO.java @@ -9,5 +9,4 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class UpdateGroupUnreadDTO { private Long groupId; - private Long userId; } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdatePrivateUnreadDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdatePrivateUnreadDTO.java index 53c78dc8..21687af8 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdatePrivateUnreadDTO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/model/dto/UpdatePrivateUnreadDTO.java @@ -8,6 +8,5 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class UpdatePrivateUnreadDTO { - private Long userId; private Long friendId; } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/model/vo/FriendProfileVO.java b/code/link56/link56-backend/src/main/java/cn/link56/im/model/vo/FriendProfileVO.java index 002e5278..6f004001 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/model/vo/FriendProfileVO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/model/vo/FriendProfileVO.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + @Data @AllArgsConstructor @NoArgsConstructor @@ -11,5 +13,12 @@ public class FriendProfileVO { private Long friendId; private String friendName; private String friendAvatar; + + private Date lastMessageTime; + private Integer lastMessageType; + private String lastMessageContent; + private Integer unreadCount; + + private Boolean isOnline; } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImFriendService.java b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImFriendService.java index f7b5c26b..af146172 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImFriendService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImFriendService.java @@ -25,7 +25,7 @@ public class ImFriendService extends ServiceImpl { private ImFriendMapper imFriendMapper; public void createFriend(Long userId,Long friendId){ - // 先检查是否存在 + // 先检查是否存在好友关系 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(ImFriend::getUserId,userId) .eq(ImFriend::getFriendId,friendId); @@ -108,6 +108,14 @@ public class ImFriendService extends ServiceImpl { public FriendProfileVO getFriendProfile(Long friendId) { Long userId = UserContext.getUserId(); - return imFriendMapper.selectFriendProfile(userId, friendId); + FriendProfileVO friendProfileVO = imFriendMapper.selectFriendProfile(userId, friendId); + friendProfileVO.setIsOnline(SessionManager.isOnline(friendId)); + + return friendProfileVO; + } + + + public Long getAllUnreadCount(Long userId){ + return imFriendMapper.selectAllUnreadCount(userId); } } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupService.java b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupService.java index 7f5f4e0d..a005c607 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupService.java @@ -50,4 +50,6 @@ public class ImGroupService extends ServiceImpl{ return imGroupMapper.selectGroupProfile(groupId,userId); } + + } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupUserService.java b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupUserService.java index 43a682d0..54ce6c58 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupUserService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/im/service/ImGroupUserService.java @@ -94,4 +94,7 @@ public class ImGroupUserService extends ServiceImpl + + + diff --git a/code/link56/link56-backend/src/main/resources/cn/link56/im/mapper/ImFriendMapper.xml b/code/link56/link56-backend/src/main/resources/cn/link56/im/mapper/ImFriendMapper.xml index fc46bc13..561bbff9 100644 --- a/code/link56/link56-backend/src/main/resources/cn/link56/im/mapper/ImFriendMapper.xml +++ b/code/link56/link56-backend/src/main/resources/cn/link56/im/mapper/ImFriendMapper.xml @@ -13,7 +13,7 @@ u.b_name AS friendName, u.b_avatar AS friendAvatar, f.b_unread_count AS unreadCount, - m.b_send_time AS lastMessageTime, + m.b_send_time AS lastMessageTime, m.b_type AS lastMessageType, m.b_content AS lastMessageContent, ROW_NUMBER() OVER ( @@ -64,12 +64,17 @@ + diff --git a/code/link56/link56-frontend-new/src/App.vue b/code/link56/link56-frontend-new/src/App.vue index dda86bd2..0e403b23 100644 --- a/code/link56/link56-frontend-new/src/App.vue +++ b/code/link56/link56-frontend-new/src/App.vue @@ -1,9 +1,9 @@ diff --git a/code/link56/link56-frontend-new/src/components/CompanyUserCard.vue b/code/link56/link56-frontend-new/src/components/CompanyUserCard.vue deleted file mode 100644 index 6a51e501..00000000 --- a/code/link56/link56-frontend-new/src/components/CompanyUserCard.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/code/link56/link56-frontend-new/src/components/CompanyUserProfileDialog.vue b/code/link56/link56-frontend-new/src/components/CompanyUserProfileDialog.vue new file mode 100644 index 00000000..86a403da --- /dev/null +++ b/code/link56/link56-frontend-new/src/components/CompanyUserProfileDialog.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/code/link56/link56-frontend-new/src/layout/components/header.vue b/code/link56/link56-frontend-new/src/layout/components/header.vue index 6b1d3a70..51c8628a 100644 --- a/code/link56/link56-frontend-new/src/layout/components/header.vue +++ b/code/link56/link56-frontend-new/src/layout/components/header.vue @@ -1,13 +1,16 @@