diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/entity/SysUserFavorite.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/entity/SysUserFavorite.java new file mode 100644 index 000000000..1c7595199 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/entity/SysUserFavorite.java @@ -0,0 +1,60 @@ +package cn.stylefeng.roses.kernel.favorite.modular.entity; + +import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity; +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +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; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 用户收藏信息实例类 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +@TableName("sys_user_favorite") +@Data +@EqualsAndHashCode(callSuper = true) +public class SysUserFavorite extends BaseEntity { + + /** + * 主键id + */ + @TableId(value = "favorite_id", type = IdType.ASSIGN_ID) + @ChineseDescription("主键id") + private Long favoriteId; + + /** + * 收藏业务的类型,存业务编码 + */ + @TableField("fav_type") + @ChineseDescription("收藏业务的类型,存业务编码") + private String favType; + + /** + * 用户id + */ + @TableField("user_id") + @ChineseDescription("用户id") + private Long userId; + + /** + * 具体业务id + */ + @TableField("business_id") + @ChineseDescription("具体业务id") + private Long businessId; + + /** + * 收藏时间 + */ + @TableField("fav_time") + @ChineseDescription("收藏时间") + private Date favTime; + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/enums/SysUserFavoriteExceptionEnum.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/enums/SysUserFavoriteExceptionEnum.java new file mode 100644 index 000000000..b54b58403 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/enums/SysUserFavoriteExceptionEnum.java @@ -0,0 +1,36 @@ +package cn.stylefeng.roses.kernel.favorite.modular.enums; + +import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; +import cn.stylefeng.roses.kernel.rule.exception.AbstractExceptionEnum; +import lombok.Getter; + +/** + * 用户收藏信息异常相关枚举 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +@Getter +public enum SysUserFavoriteExceptionEnum implements AbstractExceptionEnum { + + /** + * 查询结果不存在 + */ + SYS_USER_FAVORITE_NOT_EXISTED(RuleConstants.USER_OPERATION_ERROR_TYPE_CODE + "10001", "查询结果不存在"); + + /** + * 错误编码 + */ + private final String errorCode; + + /** + * 提示用户信息 + */ + private final String userTip; + + SysUserFavoriteExceptionEnum(String errorCode, String userTip) { + this.errorCode = errorCode; + this.userTip = userTip; + } + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/SysUserFavoriteMapper.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/SysUserFavoriteMapper.java new file mode 100644 index 000000000..0904698d0 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/SysUserFavoriteMapper.java @@ -0,0 +1,28 @@ +package cn.stylefeng.roses.kernel.favorite.modular.mapper; + +import cn.stylefeng.roses.kernel.favorite.modular.entity.SysUserFavorite; +import cn.stylefeng.roses.kernel.favorite.modular.pojo.request.SysUserFavoriteRequest; +import cn.stylefeng.roses.kernel.favorite.modular.pojo.response.SysUserFavoriteVo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户收藏信息 Mapper 接口 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +public interface SysUserFavoriteMapper extends BaseMapper { + + /** + * 获取自定义查询列表 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + List customFindList(@Param("page") Page page, @Param("param")SysUserFavoriteRequest request); + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/mapping/SysUserFavoriteMapper.xml b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/mapping/SysUserFavoriteMapper.xml new file mode 100644 index 000000000..5a3244fa1 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/mapper/mapping/SysUserFavoriteMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + favorite_id,fav_type,user_id,business_id,fav_time,create_time,create_user,update_time,update_user + + + + + + + + diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/controller/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/controller/package-info.java deleted file mode 100644 index 4e5a50042..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/controller/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.controller; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/entity/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/entity/package-info.java deleted file mode 100644 index 78fbdbe92..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/entity/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.entity; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/enums/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/enums/package-info.java deleted file mode 100644 index 4afdf70c6..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/enums/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.enums; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/mapper/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/mapper/package-info.java deleted file mode 100644 index 615f4da0b..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/mapper/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.mapper; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/pojo/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/pojo/package-info.java deleted file mode 100644 index fd8803c8d..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/pojo/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.pojo; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/service/package-info.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/service/package-info.java deleted file mode 100644 index b8be18a39..000000000 --- a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/modular/service/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package cn.stylefeng.roses.kernel.favorite.modular.modular.service; \ No newline at end of file diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/request/SysUserFavoriteRequest.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/request/SysUserFavoriteRequest.java new file mode 100644 index 000000000..45900d8c1 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/request/SysUserFavoriteRequest.java @@ -0,0 +1,64 @@ +package cn.stylefeng.roses.kernel.favorite.modular.pojo.request; + +import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription; +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 用户收藏信息封装类 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysUserFavoriteRequest extends BaseRequest { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空", groups = {edit.class, delete.class}) + @ChineseDescription("主键id") + private Long favoriteId; + + /** + * 收藏业务的类型,存业务编码 + */ + @NotBlank(message = "收藏业务的类型,存业务编码不能为空", groups = {add.class, edit.class}) + @ChineseDescription("收藏业务的类型,存业务编码") + private String favType; + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空", groups = {add.class, edit.class}) + @ChineseDescription("用户id") + private Long userId; + + /** + * 具体业务id + */ + @NotNull(message = "具体业务id不能为空", groups = {add.class, edit.class}) + @ChineseDescription("具体业务id") + private Long businessId; + + /** + * 收藏时间 + */ + @ChineseDescription("收藏时间") + private String favTime; + + + /** + * 批量删除用的id集合 + */ + @NotNull(message = "批量删除id集合不能为空", groups = batchDelete.class) + @ChineseDescription("批量删除用的id集合") + private List batchDeleteIdList; + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/response/SysUserFavoriteVo.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/response/SysUserFavoriteVo.java new file mode 100644 index 000000000..2ec06798c --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/pojo/response/SysUserFavoriteVo.java @@ -0,0 +1,17 @@ +package cn.stylefeng.roses.kernel.favorite.modular.pojo.response; + +import cn.stylefeng.roses.kernel.favorite.modular.entity.SysUserFavorite; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 用户收藏信息返回值封装 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysUserFavoriteVo extends SysUserFavorite { + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/SysUserFavoriteService.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/SysUserFavoriteService.java new file mode 100644 index 000000000..441a00c93 --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/SysUserFavoriteService.java @@ -0,0 +1,83 @@ +package cn.stylefeng.roses.kernel.favorite.modular.service; + +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.favorite.modular.entity.SysUserFavorite; +import cn.stylefeng.roses.kernel.favorite.modular.pojo.request.SysUserFavoriteRequest; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 用户收藏信息服务类 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +public interface SysUserFavoriteService extends IService { + + /** + * 新增用户收藏信息 + * + * @param sysUserFavoriteRequest 请求参数 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + void add(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 删除用户收藏信息 + * + * @param sysUserFavoriteRequest 请求参数 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + void del(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 批量删除用户收藏信息 + * + * @param sysUserFavoriteRequest 请求参数 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + void batchDelete(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 编辑用户收藏信息 + * + * @param sysUserFavoriteRequest 请求参数 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + void edit(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 查询详情用户收藏信息 + * + * @param sysUserFavoriteRequest 请求参数 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + SysUserFavorite detail(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 获取用户收藏信息列表 + * + * @param sysUserFavoriteRequest 请求参数 + * @return List 返回结果 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + List findList(SysUserFavoriteRequest sysUserFavoriteRequest); + + /** + * 获取用户收藏信息分页列表 + * + * @param sysUserFavoriteRequest 请求参数 + * @return PageResult 返回结果 + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + PageResult findPage(SysUserFavoriteRequest sysUserFavoriteRequest); + +} diff --git a/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/impl/SysUserFavoriteServiceImpl.java b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/impl/SysUserFavoriteServiceImpl.java new file mode 100644 index 000000000..a35515a2a --- /dev/null +++ b/kernel-s-user-favorite/user-favorite-business/src/main/java/cn/stylefeng/roses/kernel/favorite/modular/service/impl/SysUserFavoriteServiceImpl.java @@ -0,0 +1,113 @@ +package cn.stylefeng.roses.kernel.favorite.modular.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; +import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.favorite.modular.entity.SysUserFavorite; +import cn.stylefeng.roses.kernel.favorite.modular.enums.SysUserFavoriteExceptionEnum; +import cn.stylefeng.roses.kernel.favorite.modular.mapper.SysUserFavoriteMapper; +import cn.stylefeng.roses.kernel.favorite.modular.pojo.request.SysUserFavoriteRequest; +import cn.stylefeng.roses.kernel.favorite.modular.service.SysUserFavoriteService; +import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 用户收藏信息业务实现层 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ +@Service +public class SysUserFavoriteServiceImpl extends ServiceImpl implements SysUserFavoriteService { + + @Override + public void add(SysUserFavoriteRequest sysUserFavoriteRequest) { + SysUserFavorite sysUserFavorite = new SysUserFavorite(); + BeanUtil.copyProperties(sysUserFavoriteRequest, sysUserFavorite); + this.save(sysUserFavorite); + } + + @Override + public void del(SysUserFavoriteRequest sysUserFavoriteRequest) { + SysUserFavorite sysUserFavorite = this.querySysUserFavorite(sysUserFavoriteRequest); + this.removeById(sysUserFavorite.getFavoriteId()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchDelete(SysUserFavoriteRequest sysUserFavoriteRequest) { + this.removeByIds(sysUserFavoriteRequest.getBatchDeleteIdList()); + } + + @Override + public void edit(SysUserFavoriteRequest sysUserFavoriteRequest) { + SysUserFavorite sysUserFavorite = this.querySysUserFavorite(sysUserFavoriteRequest); + BeanUtil.copyProperties(sysUserFavoriteRequest, sysUserFavorite); + this.updateById(sysUserFavorite); + } + + @Override + public SysUserFavorite detail(SysUserFavoriteRequest sysUserFavoriteRequest) { + return this.querySysUserFavorite(sysUserFavoriteRequest); + } + + @Override + public PageResult findPage(SysUserFavoriteRequest sysUserFavoriteRequest) { + LambdaQueryWrapper wrapper = createWrapper(sysUserFavoriteRequest); + Page pageList = this.page(PageFactory.defaultPage(), wrapper); + return PageResultFactory.createPageResult(pageList); + } + + @Override + public List findList(SysUserFavoriteRequest sysUserFavoriteRequest) { + LambdaQueryWrapper wrapper = this.createWrapper(sysUserFavoriteRequest); + return this.list(wrapper); + } + + /** + * 获取信息 + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + private SysUserFavorite querySysUserFavorite(SysUserFavoriteRequest sysUserFavoriteRequest) { + SysUserFavorite sysUserFavorite = this.getById(sysUserFavoriteRequest.getFavoriteId()); + if (ObjectUtil.isEmpty(sysUserFavorite)) { + throw new ServiceException(SysUserFavoriteExceptionEnum.SYS_USER_FAVORITE_NOT_EXISTED); + } + return sysUserFavorite; + } + + /** + * 创建查询wrapper + * + * @author fengshuonan + * @since 2023/11/21 22:09 + */ + private LambdaQueryWrapper createWrapper(SysUserFavoriteRequest sysUserFavoriteRequest) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + Long favoriteId = sysUserFavoriteRequest.getFavoriteId(); + String favType = sysUserFavoriteRequest.getFavType(); + Long userId = sysUserFavoriteRequest.getUserId(); + Long businessId = sysUserFavoriteRequest.getBusinessId(); + String favTime = sysUserFavoriteRequest.getFavTime(); + + queryWrapper.eq(ObjectUtil.isNotNull(favoriteId), SysUserFavorite::getFavoriteId, favoriteId); + queryWrapper.like(ObjectUtil.isNotEmpty(favType), SysUserFavorite::getFavType, favType); + queryWrapper.eq(ObjectUtil.isNotNull(userId), SysUserFavorite::getUserId, userId); + queryWrapper.eq(ObjectUtil.isNotNull(businessId), SysUserFavorite::getBusinessId, businessId); + queryWrapper.eq(ObjectUtil.isNotNull(favTime), SysUserFavorite::getFavTime, favTime); + + return queryWrapper; + } + +}