From b08e515b11fceaa5f4474a953f469f3ac3448abb Mon Sep 17 00:00:00 2001 From: s2042968 Date: Wed, 12 Feb 2025 15:20:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B7=BB=E5=8A=A0=E6=94=B6?= =?UTF-8?q?=E8=97=8F=EF=BC=8C=E5=8F=96=E6=B6=88=E6=94=B6=E8=97=8F=EF=BC=8C?= =?UTF-8?q?=E6=94=B6=E8=97=8F=E9=A1=B5=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/EdFileFavoriteController.java | 51 ++++++++++++ .../manage/mapper/EdFileFavoriteMapper.java | 10 +++ .../manage/pojo/models/EdFileFavorite.java | 22 +++++ .../software/manage/pojo/req/PageDTO.java | 17 ++++ .../manage/service/EdFileFavoriteService.java | 42 ++++++++++ .../EdFileFavoriteServiceImpl.java | 80 +++++++++++++++++++ 6 files changed, 222 insertions(+) create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileFavoriteController.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileFavoriteMapper.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PageDTO.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java create mode 100644 electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileFavoriteController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileFavoriteController.java new file mode 100644 index 0000000..b3cccbf --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileFavoriteController.java @@ -0,0 +1,51 @@ +package com.electromagnetic.industry.software.manage.controller; + +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.ElectromagneticResultUtil; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.manage.pojo.req.PageDTO; +import com.electromagnetic.industry.software.manage.service.EdFileFavoriteService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/data/ed/favorite") +public class EdFileFavoriteController { + + @Resource + EdFileFavoriteService edFileFavoriteService; + + /** + * 添加进收藏夹 + * @param id 文件id + * @return + */ + @PostMapping("/add") + public ElectromagneticResult addFavorite(@RequestParam String id) { + String userId = UserThreadLocal.getUserId(); + return ElectromagneticResultUtil.success(edFileFavoriteService.addFavorite(userId, id)); + } + + /** + * 从收藏夹移除 + * @param id 文件id + * @return + */ + @PostMapping("/remove") + public ElectromagneticResult removeFavorite(@RequestParam String id) { + String userId = UserThreadLocal.getUserId(); + return ElectromagneticResultUtil.success(edFileFavoriteService.removeFavorite(userId, id)); + } + + /** + * 展示当前用户收藏夹文件 + * @return + */ + @PostMapping("/list") + public ElectromagneticResult listFavorite(@RequestBody PageDTO pageDTO) { + String userId = UserThreadLocal.getUserId(); + return ElectromagneticResultUtil.success(edFileFavoriteService.findFavorite(userId, pageDTO)); + } +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileFavoriteMapper.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileFavoriteMapper.java new file mode 100644 index 0000000..eba50ce --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/mapper/EdFileFavoriteMapper.java @@ -0,0 +1,10 @@ +package com.electromagnetic.industry.software.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface EdFileFavoriteMapper extends BaseMapper { + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java new file mode 100644 index 0000000..0594a53 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/models/EdFileFavorite.java @@ -0,0 +1,22 @@ +package com.electromagnetic.industry.software.manage.pojo.models; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("ed_file_favorite") +public class EdFileFavorite { + + @TableId(type = IdType.AUTO) + private Long id; + + @TableField("user_id") + private String userId; + + @TableField("file_id") + private String fileId; + +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PageDTO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PageDTO.java new file mode 100644 index 0000000..99575f1 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/req/PageDTO.java @@ -0,0 +1,17 @@ +package com.electromagnetic.industry.software.manage.pojo.req; + +import lombok.Data; + +@Data +public class PageDTO { + + /** + * 页码 + */ + private Integer pageIndex = 1; + + /** + * 页数据量 + */ + private Integer pageSize = 10; +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java new file mode 100644 index 0000000..2e5ff18 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/EdFileFavoriteService.java @@ -0,0 +1,42 @@ +package com.electromagnetic.industry.software.manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.req.PageDTO; + +public interface EdFileFavoriteService extends IService { + + /** + * 添加收藏 + * @param userId + * @param fileId + * @return + */ + boolean addFavorite(String userId, String fileId); + + /** + * 移除收藏 + * @param userId + * @param fileId + * @return + */ + boolean removeFavorite(String userId, String fileId); + + /** + * 判断是否已收藏 + * @param userId + * @param fileId + * @return + */ + boolean isFavorite(String userId, String fileId); + + /** + * 查询当前用户收藏文件信息 + * @param userId 用户id + * @param pageDTO 分页信息 + * @return + */ + IPage findFavorite(String userId, PageDTO pageDTO); +} diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java new file mode 100644 index 0000000..641bdb9 --- /dev/null +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileFavoriteServiceImpl.java @@ -0,0 +1,80 @@ +package com.electromagnetic.industry.software.manage.service.serviceimpl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.electromagnetic.industry.software.common.enums.EffectFlagEnum; +import com.electromagnetic.industry.software.common.enums.EleDataSaveStatusEnum; +import com.electromagnetic.industry.software.common.exception.BizException; +import com.electromagnetic.industry.software.manage.mapper.EdFileFavoriteMapper; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileFavorite; +import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo; +import com.electromagnetic.industry.software.manage.pojo.req.PageDTO; +import com.electromagnetic.industry.software.manage.pojo.req.RoleDTO; +import com.electromagnetic.industry.software.manage.service.EdFileFavoriteService; +import com.electromagnetic.industry.software.manage.service.EdFileInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class EdFileFavoriteServiceImpl extends ServiceImpl implements EdFileFavoriteService { + + @Resource + private EdFileInfoServiceImpl fileInfoServiceImpl; + + @Override + public boolean addFavorite(String userId, String fileId) { + // 查询是否已存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getFileId, fileId); + if (this.getOne(queryWrapper) != null) { + throw new BizException("文件已收藏,无法重复收藏!"); + } + + // 插入收藏记录 + EdFileFavorite favorite = new EdFileFavorite(); + favorite.setUserId(userId); + favorite.setFileId(fileId); + return this.save(favorite); + } + + @Override + public boolean removeFavorite(String userId, String fileId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getFileId, fileId); + return this.remove(queryWrapper); + } + + @Override + public boolean isFavorite(String userId, String fileId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EdFileFavorite::getUserId, userId) + .eq(EdFileFavorite::getFileId, fileId); + return this.getOne(queryWrapper) != null; + } + + @Override + public IPage findFavorite(String userId, PageDTO pageDTO) { + // 查询该用户收藏的文件id + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(EdFileFavorite::getFileId).eq(EdFileFavorite::getUserId, userId); + List fileIds = this.listObjs(queryWrapper, Object::toString); + + // 创建分页对象 + Page page = new Page<>(pageDTO.getPageIndex(), pageDTO.getPageSize()); + + LambdaQueryWrapper queryWrapper2 = Wrappers.lambdaQuery(EdFileInfo.class) + .eq(EdFileInfo::getSaveStatus, EleDataSaveStatusEnum.SUCCESS.code) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code) + .in(EdFileInfo::getFileId, fileIds); + return fileInfoServiceImpl.page(page, queryWrapper2); + } +}