【8.0.4】【fav模块】初始化基础类

pull/60/head
fengshuonan 2023-11-21 22:16:41 +08:00
parent 4ff4ff6fcd
commit 3912db568f
14 changed files with 463 additions and 6 deletions

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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<SysUserFavorite> {
/**
*
*
* @author fengshuonan
* @since 2023/11/21 22:09
*/
List<SysUserFavoriteVo> customFindList(@Param("page") Page page, @Param("param")SysUserFavoriteRequest request);
}

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.stylefeng.roses.kernel.favorite.modular.mapper.SysUserFavoriteMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="cn.stylefeng.roses.kernel.favorite.modular.entity.SysUserFavorite">
<id column="favorite_id" property="favoriteId" />
<result column="fav_type" property="favType" />
<result column="user_id" property="userId" />
<result column="business_id" property="businessId" />
<result column="fav_time" property="favTime" />
<result column="create_time" property="createTime" />
<result column="create_user" property="createUser" />
<result column="update_time" property="updateTime" />
<result column="update_user" property="updateUser" />
</resultMap>
<sql id="Base_Column_List">
favorite_id,fav_type,user_id,business_id,fav_time,create_time,create_user,update_time,update_user
</sql>
<resultMap id="customResultMap" type="cn.stylefeng.roses.kernel.favorite.modular.pojo.response.SysUserFavoriteVo" extends="BaseResultMap">
</resultMap>
<select id="customFindList" resultMap="customResultMap">
SELECT
*
FROM
sys_user_favorite tbl
WHERE
<where>
<if test="param.favoriteId != null and param.favoriteId != ''">
and tbl.favorite_id like concat('%',#{param.favoriteId},'%')
</if>
<if test="param.favType != null and param.favType != ''">
and tbl.fav_type like concat('%',#{param.favType},'%')
</if>
<if test="param.userId != null and param.userId != ''">
and tbl.user_id like concat('%',#{param.userId},'%')
</if>
<if test="param.businessId != null and param.businessId != ''">
and tbl.business_id like concat('%',#{param.businessId},'%')
</if>
<if test="param.favTime != null and param.favTime != ''">
and tbl.fav_time like concat('%',#{param.favTime},'%')
</if>
<if test="param.createTime != null and param.createTime != ''">
and tbl.create_time like concat('%',#{param.createTime},'%')
</if>
<if test="param.createUser != null and param.createUser != ''">
and tbl.create_user like concat('%',#{param.createUser},'%')
</if>
<if test="param.updateTime != null and param.updateTime != ''">
and tbl.update_time like concat('%',#{param.updateTime},'%')
</if>
<if test="param.updateUser != null and param.updateUser != ''">
and tbl.update_user like concat('%',#{param.updateUser},'%')
</if>
</where>
</select>
</mapper>

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.controller;

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.entity;

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.enums;

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.mapper;

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.pojo;

View File

@ -1 +0,0 @@
package cn.stylefeng.roses.kernel.favorite.modular.modular.service;

View File

@ -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<Long> batchDeleteIdList;
}

View File

@ -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 {
}

View File

@ -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<SysUserFavorite> {
/**
*
*
* @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<SysUserFavorite>
* @author fengshuonan
* @since 2023/11/21 22:09
*/
List<SysUserFavorite> findList(SysUserFavoriteRequest sysUserFavoriteRequest);
/**
*
*
* @param sysUserFavoriteRequest
* @return PageResult<SysUserFavorite>
* @author fengshuonan
* @since 2023/11/21 22:09
*/
PageResult<SysUserFavorite> findPage(SysUserFavoriteRequest sysUserFavoriteRequest);
}

View File

@ -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<SysUserFavoriteMapper, SysUserFavorite> 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<SysUserFavorite> findPage(SysUserFavoriteRequest sysUserFavoriteRequest) {
LambdaQueryWrapper<SysUserFavorite> wrapper = createWrapper(sysUserFavoriteRequest);
Page<SysUserFavorite> pageList = this.page(PageFactory.defaultPage(), wrapper);
return PageResultFactory.createPageResult(pageList);
}
@Override
public List<SysUserFavorite> findList(SysUserFavoriteRequest sysUserFavoriteRequest) {
LambdaQueryWrapper<SysUserFavorite> 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<SysUserFavorite> createWrapper(SysUserFavoriteRequest sysUserFavoriteRequest) {
LambdaQueryWrapper<SysUserFavorite> 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;
}
}