#!/bin/bash # 创建剩余的Service实现类 echo "开始创建剩余的Service实现类..." # 1. MessageServiceImpl cat > src/main/java/com/emotion/service/impl/MessageServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.Message; import com.emotion.mapper.MessageMapper; import com.emotion.service.MessageService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class MessageServiceImpl extends ServiceImpl implements MessageService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(Message::getContent, request.getKeyword()); } wrapper.eq(Message::getIsDeleted, 0).orderByDesc(Message::getCreateTime); return this.page(page, wrapper); } @Override public List getByConversationId(String conversationId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Message::getConversationId, conversationId) .eq(Message::getIsDeleted, 0) .orderByAsc(Message::getCreateTime); return this.list(wrapper); } @Override public List getBySender(String sender) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Message::getSender, sender) .eq(Message::getIsDeleted, 0) .orderByDesc(Message::getCreateTime); return this.list(wrapper); } @Override public List getByType(String type) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Message::getType, type) .eq(Message::getIsDeleted, 0) .orderByDesc(Message::getCreateTime); return this.list(wrapper); } @Override public List getByTimeRange(LocalDateTime startTime, LocalDateTime endTime) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(Message::getCreateTime, startTime, endTime) .eq(Message::getIsDeleted, 0) .orderByDesc(Message::getCreateTime); return this.list(wrapper); } @Override public Long countByConversationId(String conversationId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Message::getConversationId, conversationId) .eq(Message::getIsDeleted, 0); return this.count(wrapper); } @Override public Long countBySender(String sender) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Message::getSender, sender) .eq(Message::getIsDeleted, 0); return this.count(wrapper); } @Override public boolean updateReadStatus(String id, Integer isRead) { Message message = new Message(); message.setId(id); message.setIsRead(isRead); return this.updateById(message); } @Override public Message createMessage(String conversationId, String content, String sender, String type) { Message message = new Message(); message.setConversationId(conversationId); message.setContent(content); message.setSender(sender); message.setType(type); message.setIsRead(0); this.save(message); return message; } } EOF # 2. CommentServiceImpl cat > src/main/java/com/emotion/service/impl/CommentServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.Comment; import com.emotion.mapper.CommentMapper; import com.emotion.service.CommentService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class CommentServiceImpl extends ServiceImpl implements CommentService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(Comment::getContent, request.getKeyword()); } wrapper.eq(Comment::getIsDeleted, 0).orderByDesc(Comment::getCreateTime); return this.page(page, wrapper); } @Override public List getByPostId(String postId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Comment::getPostId, postId) .eq(Comment::getIsDeleted, 0) .orderByAsc(Comment::getCreateTime); return this.list(wrapper); } @Override public List getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Comment::getCreateBy, userId) .eq(Comment::getIsDeleted, 0) .orderByDesc(Comment::getCreateTime); return this.list(wrapper); } @Override public Long countByPostId(String postId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Comment::getPostId, postId) .eq(Comment::getIsDeleted, 0); return this.count(wrapper); } @Override public Comment createComment(String postId, String content, String userId) { Comment comment = new Comment(); comment.setPostId(postId); comment.setContent(content); comment.setCreateBy(userId); this.save(comment); return comment; } } EOF # 3. CommunityPostServiceImpl cat > src/main/java/com/emotion/service/impl/CommunityPostServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.CommunityPost; import com.emotion.mapper.CommunityPostMapper; import com.emotion.service.CommunityPostService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class CommunityPostServiceImpl extends ServiceImpl implements CommunityPostService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.and(w -> w.like(CommunityPost::getTitle, request.getKeyword()) .or().like(CommunityPost::getContent, request.getKeyword())); } wrapper.eq(CommunityPost::getIsDeleted, 0).orderByDesc(CommunityPost::getCreateTime); return this.page(page, wrapper); } @Override public List getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CommunityPost::getCreateBy, userId) .eq(CommunityPost::getIsDeleted, 0) .orderByDesc(CommunityPost::getCreateTime); return this.list(wrapper); } @Override public List getByCategory(String category) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CommunityPost::getCategory, category) .eq(CommunityPost::getIsDeleted, 0) .orderByDesc(CommunityPost::getCreateTime); return this.list(wrapper); } @Override public Long countByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CommunityPost::getCreateBy, userId) .eq(CommunityPost::getIsDeleted, 0); return this.count(wrapper); } @Override public CommunityPost createPost(String title, String content, String category, String userId) { CommunityPost post = new CommunityPost(); post.setTitle(title); post.setContent(content); post.setCategory(category); post.setCreateBy(userId); post.setLikeCount(0); post.setCommentCount(0); this.save(post); return post; } } EOF # 4. GuestUserServiceImpl cat > src/main/java/com/emotion/service/impl/GuestUserServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.GuestUser; import com.emotion.mapper.GuestUserMapper; import com.emotion.service.GuestUserService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class GuestUserServiceImpl extends ServiceImpl implements GuestUserService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(GuestUser::getNickname, request.getKeyword()); } wrapper.eq(GuestUser::getIsDeleted, 0).orderByDesc(GuestUser::getCreateTime); return this.page(page, wrapper); } @Override public GuestUser getByClientIp(String clientIp) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(GuestUser::getClientIp, clientIp) .eq(GuestUser::getIsDeleted, 0); return this.getOne(wrapper); } @Override public List getByTimeRange(LocalDateTime startTime, LocalDateTime endTime) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(GuestUser::getCreateTime, startTime, endTime) .eq(GuestUser::getIsDeleted, 0) .orderByDesc(GuestUser::getCreateTime); return this.list(wrapper); } @Override public Long countByTimeRange(LocalDateTime startTime, LocalDateTime endTime) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(GuestUser::getCreateTime, startTime, endTime) .eq(GuestUser::getIsDeleted, 0); return this.count(wrapper); } @Override public GuestUser createGuestUser(String clientIp, String userAgent) { GuestUser guestUser = new GuestUser(); guestUser.setClientIp(clientIp); guestUser.setUserAgent(userAgent); guestUser.setNickname("访客用户"); guestUser.setLastActiveTime(LocalDateTime.now()); this.save(guestUser); return guestUser; } } EOF # 5. UserStatsServiceImpl cat > src/main/java/com/emotion/service/impl/UserStatsServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.UserStats; import com.emotion.mapper.UserStatsMapper; import com.emotion.service.UserStatsService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class UserStatsServiceImpl extends ServiceImpl implements UserStatsService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(UserStats::getUserId, request.getKeyword()); } wrapper.eq(UserStats::getIsDeleted, 0).orderByDesc(UserStats::getCreateTime); return this.page(page, wrapper); } @Override public UserStats getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(UserStats::getUserId, userId) .eq(UserStats::getIsDeleted, 0); return this.getOne(wrapper); } @Override public List getByTimeRange(LocalDateTime startTime, LocalDateTime endTime) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.between(UserStats::getCreateTime, startTime, endTime) .eq(UserStats::getIsDeleted, 0) .orderByDesc(UserStats::getCreateTime); return this.list(wrapper); } @Override public UserStats createUserStats(String userId) { UserStats userStats = new UserStats(); userStats.setUserId(userId); userStats.setTotalConversations(0); userStats.setTotalMessages(0); userStats.setTotalEmotionRecords(0); userStats.setTotalAchievements(0); this.save(userStats); return userStats; } } EOF # 6. EmotionRecordServiceImpl cat > src/main/java/com/emotion/service/impl/EmotionRecordServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.EmotionRecord; import com.emotion.mapper.EmotionRecordMapper; import com.emotion.service.EmotionRecordService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class EmotionRecordServiceImpl extends ServiceImpl implements EmotionRecordService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(EmotionRecord::getDescription, request.getKeyword()); } wrapper.eq(EmotionRecord::getIsDeleted, 0).orderByDesc(EmotionRecord::getCreateTime); return this.page(page, wrapper); } @Override public List getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EmotionRecord::getCreateBy, userId) .eq(EmotionRecord::getIsDeleted, 0) .orderByDesc(EmotionRecord::getCreateTime); return this.list(wrapper); } @Override public List getByEmotionType(String emotionType) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EmotionRecord::getEmotionType, emotionType) .eq(EmotionRecord::getIsDeleted, 0) .orderByDesc(EmotionRecord::getCreateTime); return this.list(wrapper); } @Override public Long countByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EmotionRecord::getCreateBy, userId) .eq(EmotionRecord::getIsDeleted, 0); return this.count(wrapper); } @Override public EmotionRecord createEmotionRecord(String userId, String emotionType, String description) { EmotionRecord record = new EmotionRecord(); record.setCreateBy(userId); record.setEmotionType(emotionType); record.setDescription(description); record.setRecordTime(LocalDateTime.now()); this.save(record); return record; } } EOF # 7. ConversationServiceImpl cat > src/main/java/com/emotion/service/impl/ConversationServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.Conversation; import com.emotion.mapper.ConversationMapper; import com.emotion.service.ConversationService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class ConversationServiceImpl extends ServiceImpl implements ConversationService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(Conversation::getTitle, request.getKeyword()); } wrapper.eq(Conversation::getIsDeleted, 0).orderByDesc(Conversation::getCreateTime); return this.page(page, wrapper); } @Override public List getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Conversation::getCreateBy, userId) .eq(Conversation::getIsDeleted, 0) .orderByDesc(Conversation::getCreateTime); return this.list(wrapper); } @Override public List getByStatus(String status) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Conversation::getStatus, status) .eq(Conversation::getIsDeleted, 0) .orderByDesc(Conversation::getCreateTime); return this.list(wrapper); } @Override public Long countByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Conversation::getCreateBy, userId) .eq(Conversation::getIsDeleted, 0); return this.count(wrapper); } @Override public Conversation createConversation(String userId, String title, String type) { Conversation conversation = new Conversation(); conversation.setCreateBy(userId); conversation.setTitle(title); conversation.setType(type); conversation.setStatus("active"); conversation.setMessageCount(0); this.save(conversation); return conversation; } } EOF # 8. TopicInteractionServiceImpl cat > src/main/java/com/emotion/service/impl/TopicInteractionServiceImpl.java << 'EOF' package com.emotion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.emotion.common.BasePageRequest; import com.emotion.entity.TopicInteraction; import com.emotion.mapper.TopicInteractionMapper; import com.emotion.service.TopicInteractionService; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.time.LocalDateTime; import java.util.List; @Service public class TopicInteractionServiceImpl extends ServiceImpl implements TopicInteractionService { @Override public IPage getPage(BasePageRequest request) { Page page = new Page<>(request.getCurrent(), request.getSize()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasText(request.getKeyword())) { wrapper.like(TopicInteraction::getUserId, request.getKeyword()); } wrapper.eq(TopicInteraction::getIsDeleted, 0).orderByDesc(TopicInteraction::getCreateTime); return this.page(page, wrapper); } @Override public List getByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TopicInteraction::getUserId, userId) .eq(TopicInteraction::getIsDeleted, 0) .orderByDesc(TopicInteraction::getCreateTime); return this.list(wrapper); } @Override public List getByTopicId(String topicId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TopicInteraction::getTopicId, topicId) .eq(TopicInteraction::getIsDeleted, 0) .orderByDesc(TopicInteraction::getCreateTime); return this.list(wrapper); } @Override public Long countByUserId(String userId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TopicInteraction::getUserId, userId) .eq(TopicInteraction::getIsDeleted, 0); return this.count(wrapper); } @Override public TopicInteraction createInteraction(String userId, String topicId, String interactionType) { TopicInteraction interaction = new TopicInteraction(); interaction.setUserId(userId); interaction.setTopicId(topicId); interaction.setInteractionType(interactionType); interaction.setInteractionTime(LocalDateTime.now()); this.save(interaction); return interaction; } } EOF echo "所有Service实现类创建完成!"