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 3a2237de..ccd2403e 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 @@ -7,9 +7,9 @@ import cn.link56.company.model.dto.DeleteCompanyUserDTO; import cn.link56.company.model.dto.QueryCompanyUserDTO; import cn.link56.company.model.dto.UpdateCompanyUserDTO; import cn.link56.company.model.vo.ChatUserVO; +import cn.link56.company.model.vo.CompanyUserProfileVO; import cn.link56.company.model.vo.QueryCompanyUserVO; import cn.link56.company.service.CompanyUserService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -51,4 +51,10 @@ public class CompanyUserController { List data = companyUserService.listCompanyChatUsers(companyId); return Result.success(data); } + + @GetMapping("/profile/{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 0549c824..97130872 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 @@ -4,10 +4,20 @@ import cn.link56.company.model.middle.RecommendCompanyRow; import cn.link56.company.model.po.Company; 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; @Mapper 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/CompanyUserProfileVO.java b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyUserProfileVO.java new file mode 100644 index 00000000..276f8bc4 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/company/model/vo/CompanyUserProfileVO.java @@ -0,0 +1,40 @@ +package cn.link56.company.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CompanyUserProfileVO { + private Company company; + private User user; + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class Company{ + private Long id; + private String name; + private String logo; + private String profile; + private List areas; + private List industries; + } + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class User{ + private Long id; + private String name; + private String avatar; + private String position; + private String email; + private String phone; + private Boolean isOnline; + } +} 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 0ca59ad6..54e7c914 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 @@ -13,6 +13,7 @@ import cn.link56.company.model.dto.UpdateCompanyUserDTO; import cn.link56.company.model.po.Company; 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.storage.SessionManager; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -27,6 +28,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -327,4 +329,43 @@ public class CompanyUserService extends ServiceImpl { @Param("title") String title, @Param("tag") String tag ); + + @Update("UPDATE b_post SET b_active_time = GETDATE() WHERE b_id = #{postId}") + int updateActiveTime(@Param("postId") Long postId); } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/Post.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/Post.java index f4bffd14..b2193d28 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/Post.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/Post.java @@ -59,4 +59,9 @@ public class Post { fill = FieldFill.INSERT_UPDATE ) private Date updateTime; + + @TableField( + value = "b_active_time" + ) + private Date activeTime; } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java index 6a74d8ac..4dbc36e6 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java @@ -2,6 +2,7 @@ package cn.link56.post.service; import cn.link56.common.utils.snowflake.idgen.IdGenerator; import cn.link56.post.mapper.PostCommentMapper; +import cn.link56.post.mapper.PostMapper; import cn.link56.post.model.dto.CreatePostCommentDTO; import cn.link56.post.model.po.PostComment; import cn.link56.post.model.po.PostView; @@ -30,6 +31,9 @@ public class PostCommentService extends ServiceImpl { post.setId(IdGenerator.nextId()); post.setCompanyId(UserContext.getCompanyId()); post.setTag(joinTags(dto.getTags())); + post.setActiveTime(new Date()); handleUpdatePublishTime(post, dto.getStatus()); @@ -71,6 +73,10 @@ public class PostService extends ServiceImpl { handleUpdatePublishTime(post, dto.getStatus()); postMapper.updateById(post); + + // 更新活跃时间 + postMapper.updateActiveTime(post.getId()); + return buildEditPostVO(post); } @@ -250,7 +256,6 @@ public class PostService extends ServiceImpl { List queryEditorPostVOS = postMapper.selectPublicPostPage(offset, limit, title, tag); Long total = postMapper.selectPublicPostTotal(title, tag); - return new BasePageVO(total, queryEditorPostVOS); } @@ -275,14 +280,6 @@ public class PostService extends ServiceImpl { postVO.setViewCount(viewTotal); postVO.setCommentCount(commentTotal); - PostComment latestCommentByPostId = postCommentService.getLatestCommentByPostId(id); - - if (latestCommentByPostId == null){ - postVO.setActiveTime(post.getUpdateTime()); - } else { - postVO.setActiveTime(latestCommentByPostId.getCreateTime()); - } - return postVO; } @@ -300,4 +297,5 @@ public class PostService extends ServiceImpl { return postCompanyVO; } + } diff --git a/code/link56/link56-backend/src/main/resources/cn/link56/post/mapper/PostMapper.xml b/code/link56/link56-backend/src/main/resources/cn/link56/post/mapper/PostMapper.xml index 61fd0185..59ce2d43 100644 --- a/code/link56/link56-backend/src/main/resources/cn/link56/post/mapper/PostMapper.xml +++ b/code/link56/link56-backend/src/main/resources/cn/link56/post/mapper/PostMapper.xml @@ -163,41 +163,28 @@ t.commentCount, t.activeTime FROM ( - SELECT + SELECT p.b_id AS id, p.b_title AS title, p.b_tag AS tagsString, p.b_company_id AS companyId, bc.b_name AS companyName, - ISNULL(pv.viewCount, 0) AS viewCount, - ISNULL(pc.commentCount, 0) AS commentCount, + ISNULL(ps.b_view_count, 0) AS viewCount, + ISNULL(ps.b_comment_count, 0) AS commentCount, - -- 活跃时间:最后评论时间优先 - ISNULL(pc.lastCommentTime, p.b_update_time) AS activeTime, + p.b_active_time AS activeTime, ROW_NUMBER() OVER ( - ORDER BY ISNULL(pc.lastCommentTime, p.b_update_time) DESC - ) AS rn + ORDER BY p.b_update_time DESC + ) AS rn FROM b_post p - LEFT JOIN b_company bc ON bc.b_id = p.b_company_id - LEFT JOIN ( - SELECT - b_post_id, - COUNT(1) AS viewCount - FROM b_post_view - GROUP BY b_post_id - ) pv ON pv.b_post_id = p.b_id - LEFT JOIN ( - SELECT - b_post_id, - COUNT(1) AS commentCount, - MAX(b_create_time) AS lastCommentTime - FROM b_post_comment - GROUP BY b_post_id - ) pc ON pc.b_post_id = p.b_id + LEFT JOIN b_company bc + ON bc.b_id = p.b_company_id + LEFT JOIN b_post_stat ps + ON ps.b_post_id = p.b_id - AND p.b_status = 1 + p.b_status = 1 AND p.b_title LIKE '%' + #{title} + '%' @@ -205,10 +192,11 @@ AND p.b_tag LIKE '%' + #{tag} + '%' - ) t + ) t WHERE t.rn BETWEEN #{offset} AND #{limit} +