mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-10 20:57:14 +08:00
refactor: 💥 调整后端请求、响应参数模型命名风格
XxxRequest => XxxReq XxxVO => XxxResp
This commit is contained in:
@@ -41,15 +41,15 @@ import top.charles7c.cnadmin.common.annotation.NoResponseAdvice;
|
||||
import top.charles7c.cnadmin.common.constant.StringConsts;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
|
||||
/**
|
||||
* 控制器基类
|
||||
*
|
||||
* @param <S>
|
||||
* 业务接口
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表信息
|
||||
* @param <D>
|
||||
* 详情信息
|
||||
@@ -61,7 +61,7 @@ import top.charles7c.cnadmin.common.model.vo.R;
|
||||
* @since 2023/1/26 10:45
|
||||
*/
|
||||
@NoArgsConstructor
|
||||
public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q, C extends BaseRequest> {
|
||||
public abstract class BaseController<S extends BaseService<L, D, Q, C>, L, D, Q, C extends BaseReq> {
|
||||
|
||||
@Autowired
|
||||
protected S baseService;
|
||||
@@ -78,7 +78,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
||||
@Operation(summary = "分页查询列表", description = "分页查询列表")
|
||||
@ResponseBody
|
||||
@GetMapping
|
||||
public PageDataVO<V> page(Q query, @Validated PageQuery pageQuery) {
|
||||
public PageDataResp<L> page(Q query, @Validated PageQuery pageQuery) {
|
||||
this.checkPermission(Api.LIST);
|
||||
return baseService.page(query, pageQuery);
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
||||
@Operation(summary = "查询列表", description = "查询列表")
|
||||
@ResponseBody
|
||||
@GetMapping("/list")
|
||||
public List<V> list(Q query, SortQuery sortQuery) {
|
||||
public List<L> list(Q query, SortQuery sortQuery) {
|
||||
this.checkPermission(Api.LIST);
|
||||
return baseService.list(query, sortQuery);
|
||||
}
|
||||
@@ -136,23 +136,23 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 创建信息
|
||||
* @return 自增 ID
|
||||
*/
|
||||
@Operation(summary = "新增数据", description = "新增数据")
|
||||
@ResponseBody
|
||||
@PostMapping
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody C request) {
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody C req) {
|
||||
this.checkPermission(Api.ADD);
|
||||
Long id = baseService.add(request);
|
||||
Long id = baseService.add(req);
|
||||
return R.ok("新增成功", id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 修改信息
|
||||
* @param id
|
||||
* ID
|
||||
@@ -162,9 +162,9 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C>, V, D, Q,
|
||||
@Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH)
|
||||
@ResponseBody
|
||||
@PutMapping("/{id}")
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody C request, @PathVariable Long id) {
|
||||
public R update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody C req, @PathVariable Long id) {
|
||||
this.checkPermission(Api.UPDATE);
|
||||
baseService.update(request, id);
|
||||
baseService.update(req, id);
|
||||
return R.ok("修改成功");
|
||||
}
|
||||
|
||||
|
@@ -26,13 +26,13 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
/**
|
||||
* 详情 VO 基类
|
||||
* 详情响应基类
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/1/26 10:40
|
||||
*/
|
||||
@Data
|
||||
public class BaseDetailVO extends BaseVO {
|
||||
public class BaseDetailResp extends BaseResp {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@@ -21,13 +21,13 @@ import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Request 基类
|
||||
* 请求基类
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/1/30 21:51
|
||||
*/
|
||||
@Data
|
||||
public class BaseRequest implements Serializable {
|
||||
public class BaseReq implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@@ -28,13 +28,13 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
|
||||
/**
|
||||
* VO 基类
|
||||
* 响应基类
|
||||
*
|
||||
* @author Charles7c
|
||||
* @since 2023/1/26 10:40
|
||||
*/
|
||||
@Data
|
||||
public class BaseVO implements Serializable {
|
||||
public class BaseResp implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@@ -24,12 +24,12 @@ import cn.hutool.core.lang.tree.Tree;
|
||||
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
|
||||
/**
|
||||
* 业务接口基类
|
||||
*
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表信息
|
||||
* @param <D>
|
||||
* 详情信息
|
||||
@@ -40,7 +40,7 @@ import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
* @author Charles7c
|
||||
* @since 2023/1/26 16:54
|
||||
*/
|
||||
public interface BaseService<V, D, Q, C extends BaseRequest> {
|
||||
public interface BaseService<L, D, Q, C extends BaseReq> {
|
||||
|
||||
/**
|
||||
* 分页查询列表
|
||||
@@ -51,7 +51,7 @@ public interface BaseService<V, D, Q, C extends BaseRequest> {
|
||||
* 分页查询条件
|
||||
* @return 分页列表信息
|
||||
*/
|
||||
PageDataVO<V> page(Q query, PageQuery pageQuery);
|
||||
PageDataResp<L> page(Q query, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询树列表
|
||||
@@ -75,7 +75,7 @@ public interface BaseService<V, D, Q, C extends BaseRequest> {
|
||||
* 排序查询条件
|
||||
* @return 列表信息
|
||||
*/
|
||||
List<V> list(Q query, SortQuery sortQuery);
|
||||
List<L> list(Q query, SortQuery sortQuery);
|
||||
|
||||
/**
|
||||
* 查看详情
|
||||
@@ -89,21 +89,21 @@ public interface BaseService<V, D, Q, C extends BaseRequest> {
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 创建信息
|
||||
* @return 自增 ID
|
||||
*/
|
||||
Long add(C request);
|
||||
Long add(C req);
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*
|
||||
* @param request
|
||||
* @param req
|
||||
* 修改信息
|
||||
* @param id
|
||||
* ID
|
||||
*/
|
||||
void update(C request, Long id);
|
||||
void update(C req, Long id);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
|
@@ -44,7 +44,7 @@ import cn.hutool.extra.spring.SpringUtil;
|
||||
import top.charles7c.cnadmin.common.annotation.TreeField;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.service.CommonUserService;
|
||||
import top.charles7c.cnadmin.common.util.ExcelUtils;
|
||||
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
||||
@@ -60,7 +60,7 @@ import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
* Mapper 接口
|
||||
* @param <T>
|
||||
* 实体类
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表信息
|
||||
* @param <D>
|
||||
* 详情信息
|
||||
@@ -71,41 +71,41 @@ import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
* @author Charles7c
|
||||
* @since 2023/1/26 21:52
|
||||
*/
|
||||
public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO, V, D, Q, C extends BaseRequest>
|
||||
implements BaseService<V, D, Q, C> {
|
||||
public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO, L, D, Q, C extends BaseReq>
|
||||
implements BaseService<L, D, Q, C> {
|
||||
|
||||
@Autowired
|
||||
protected M baseMapper;
|
||||
|
||||
private final Class<T> entityClass;
|
||||
private final Class<V> voClass;
|
||||
private final Class<D> detailVoClass;
|
||||
private final Class<L> listClass;
|
||||
private final Class<D> detailClass;
|
||||
|
||||
protected BaseServiceImpl() {
|
||||
this.entityClass = (Class<T>)ClassUtil.getTypeArgument(this.getClass(), 1);
|
||||
this.voClass = (Class<V>)ClassUtil.getTypeArgument(this.getClass(), 2);
|
||||
this.detailVoClass = (Class<D>)ClassUtil.getTypeArgument(this.getClass(), 3);
|
||||
this.listClass = (Class<L>)ClassUtil.getTypeArgument(this.getClass(), 2);
|
||||
this.detailClass = (Class<D>)ClassUtil.getTypeArgument(this.getClass(), 3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageDataVO<V> page(Q query, PageQuery pageQuery) {
|
||||
public PageDataResp<L> page(Q query, PageQuery pageQuery) {
|
||||
QueryWrapper<T> queryWrapper = QueryHelper.build(query);
|
||||
IPage<T> page = baseMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
||||
PageDataVO<V> pageDataVO = PageDataVO.build(page, voClass);
|
||||
pageDataVO.getList().forEach(this::fill);
|
||||
return pageDataVO;
|
||||
PageDataResp<L> pageDataResp = PageDataResp.build(page, listClass);
|
||||
pageDataResp.getList().forEach(this::fill);
|
||||
return pageDataResp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Tree<Long>> tree(Q query, SortQuery sortQuery, boolean isSimple) {
|
||||
List<V> list = this.list(query, sortQuery);
|
||||
List<L> list = this.list(query, sortQuery);
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
|
||||
// 如果构建简单树结构,则不包含基本树结构之外的扩展字段
|
||||
TreeNodeConfig treeNodeConfig = TreeUtils.DEFAULT_CONFIG;
|
||||
TreeField treeField = voClass.getDeclaredAnnotation(TreeField.class);
|
||||
TreeField treeField = listClass.getDeclaredAnnotation(TreeField.class);
|
||||
if (!isSimple) {
|
||||
// 根据 @TreeField 配置生成树结构配置
|
||||
treeNodeConfig = TreeUtils.genTreeNodeConfig(treeField);
|
||||
@@ -119,7 +119,7 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
tree.setName(ReflectUtil.invoke(node, StrUtil.genGetter(treeField.nameKey())));
|
||||
tree.setWeight(ReflectUtil.invoke(node, StrUtil.genGetter(treeField.weightKey())));
|
||||
if (!isSimple) {
|
||||
List<Field> fieldList = ReflectUtils.getNonStaticFields(voClass);
|
||||
List<Field> fieldList = ReflectUtils.getNonStaticFields(listClass);
|
||||
fieldList.removeIf(f -> StrUtil.containsAnyIgnoreCase(f.getName(), treeField.value(),
|
||||
treeField.parentIdKey(), treeField.nameKey(), treeField.weightKey(), treeField.childrenKey()));
|
||||
fieldList
|
||||
@@ -129,8 +129,8 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<V> list(Q query, SortQuery sortQuery) {
|
||||
List<V> list = this.list(query, sortQuery, voClass);
|
||||
public List<L> list(Q query, SortQuery sortQuery) {
|
||||
List<L> list = this.list(query, sortQuery, listClass);
|
||||
list.forEach(this::fill);
|
||||
return list;
|
||||
}
|
||||
@@ -174,27 +174,27 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
@Override
|
||||
public D get(Long id) {
|
||||
T entity = this.getById(id);
|
||||
D detailVO = BeanUtil.copyProperties(entity, detailVoClass);
|
||||
this.fillDetail(detailVO);
|
||||
return detailVO;
|
||||
D detail = BeanUtil.copyProperties(entity, detailClass);
|
||||
this.fillDetail(detail);
|
||||
return detail;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long add(C request) {
|
||||
if (null == request) {
|
||||
public Long add(C req) {
|
||||
if (null == req) {
|
||||
return 0L;
|
||||
}
|
||||
T entity = BeanUtil.copyProperties(request, entityClass);
|
||||
T entity = BeanUtil.copyProperties(req, entityClass);
|
||||
baseMapper.insert(entity);
|
||||
return entity.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(C request, Long id) {
|
||||
public void update(C req, Long id) {
|
||||
T entity = this.getById(id);
|
||||
BeanUtil.copyProperties(request, entity, CopyOptions.create().ignoreNullValue());
|
||||
BeanUtil.copyProperties(req, entity, CopyOptions.create().ignoreNullValue());
|
||||
baseMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@@ -206,9 +206,9 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
|
||||
@Override
|
||||
public void export(Q query, SortQuery sortQuery, HttpServletResponse response) {
|
||||
List<D> list = this.list(query, sortQuery, detailVoClass);
|
||||
List<D> list = this.list(query, sortQuery, detailClass);
|
||||
list.forEach(this::fillDetail);
|
||||
ExcelUtils.export(list, "导出数据", detailVoClass, response);
|
||||
ExcelUtils.export(list, "导出数据", detailClass, response);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -231,14 +231,14 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
* 待填充列表信息
|
||||
*/
|
||||
protected void fill(Object baseObj) {
|
||||
if (baseObj instanceof BaseVO) {
|
||||
BaseVO baseVO = (BaseVO)baseObj;
|
||||
Long createUser = baseVO.getCreateUser();
|
||||
if (baseObj instanceof BaseResp) {
|
||||
BaseResp baseResp = (BaseResp)baseObj;
|
||||
Long createUser = baseResp.getCreateUser();
|
||||
if (null == createUser) {
|
||||
return;
|
||||
}
|
||||
CommonUserService userService = SpringUtil.getBean(CommonUserService.class);
|
||||
baseVO.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(createUser)));
|
||||
baseResp.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(createUser)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,16 +249,16 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T extends BaseDO,
|
||||
* 待填充详情信息
|
||||
*/
|
||||
public void fillDetail(Object detailObj) {
|
||||
if (detailObj instanceof BaseDetailVO) {
|
||||
BaseDetailVO detailVO = (BaseDetailVO)detailObj;
|
||||
this.fill(detailVO);
|
||||
if (detailObj instanceof BaseDetailResp) {
|
||||
BaseDetailResp detail = (BaseDetailResp)detailObj;
|
||||
this.fill(detail);
|
||||
|
||||
Long updateUser = detailVO.getUpdateUser();
|
||||
Long updateUser = detail.getUpdateUser();
|
||||
if (null == updateUser) {
|
||||
return;
|
||||
}
|
||||
CommonUserService userService = SpringUtil.getBean(CommonUserService.class);
|
||||
detailVO.setUpdateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(updateUser)));
|
||||
detail.setUpdateUserString(ExceptionUtils.exToNull(() -> userService.getNicknameById(updateUser)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -23,12 +23,12 @@ import com.baomidou.mybatisplus.annotation.IEnum;
|
||||
/**
|
||||
* 枚举接口
|
||||
*
|
||||
* @param <V>
|
||||
* @param <T>
|
||||
* value 类型
|
||||
* @author Charles7c
|
||||
* @since 2023/2/5 20:44
|
||||
*/
|
||||
public interface IBaseEnum<V extends Serializable> extends IEnum<V> {
|
||||
public interface IBaseEnum<T extends Serializable> extends IEnum<T> {
|
||||
|
||||
/**
|
||||
* 枚举描述
|
||||
|
@@ -64,7 +64,7 @@ public class SysConsts {
|
||||
public static final String LOGOUT_URI = "/auth/logout";
|
||||
|
||||
/**
|
||||
* VO 描述类字段后缀
|
||||
* 描述类字段后缀
|
||||
*/
|
||||
public static final String VO_DESCRIPTION_FIELD_SUFFIX = "String";
|
||||
public static final String DESCRIPTION_FIELD_SUFFIX = "String";
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
|
||||
/**
|
||||
* 全局错误处理器
|
||||
|
@@ -42,7 +42,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.exception.BadRequestException;
|
||||
import top.charles7c.cnadmin.common.exception.ServiceException;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
||||
import top.charles7c.cnadmin.common.util.StreamUtils;
|
||||
import top.charles7c.cnadmin.common.util.holder.LogContextHolder;
|
||||
|
@@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.annotation.NoResponseAdvice;
|
||||
import top.charles7c.cnadmin.common.model.vo.R;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
|
||||
/**
|
||||
* 全局响应结果处理器
|
||||
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.charles7c.cnadmin.common.model.request;
|
||||
package top.charles7c.cnadmin.common.model.req;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -34,7 +34,7 @@ import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "修改状态信息")
|
||||
public class UpdateStatusRequest implements Serializable {
|
||||
public class UpdateStatusReq implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.charles7c.cnadmin.common.model.vo;
|
||||
package top.charles7c.cnadmin.common.model.resp;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -32,7 +32,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
@Data
|
||||
@Builder
|
||||
@Schema(description = "验证码信息")
|
||||
public class CaptchaVO implements Serializable {
|
||||
public class CaptchaResp implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.charles7c.cnadmin.common.model.vo;
|
||||
package top.charles7c.cnadmin.common.model.resp;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -28,14 +28,14 @@ import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
/**
|
||||
* 键值对信息
|
||||
*
|
||||
* @param <V>
|
||||
* @param <T>
|
||||
* @author Charles7c
|
||||
* @since 2023/2/24 22:02
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@Schema(description = "键值对信息")
|
||||
public class LabelValueVO<V> implements Serializable {
|
||||
public class LabelValueResp<T> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -49,7 +49,7 @@ public class LabelValueVO<V> implements Serializable {
|
||||
* 值
|
||||
*/
|
||||
@Schema(description = "值", example = "1")
|
||||
private V value;
|
||||
private T value;
|
||||
|
||||
/**
|
||||
* 颜色
|
||||
@@ -58,12 +58,12 @@ public class LabelValueVO<V> implements Serializable {
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
private String color;
|
||||
|
||||
public LabelValueVO(String label, V value) {
|
||||
public LabelValueResp(String label, T value) {
|
||||
this.label = label;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public LabelValueVO(String label, V value, String color) {
|
||||
public LabelValueResp(String label, T value, String color) {
|
||||
this.label = label;
|
||||
this.value = value;
|
||||
this.color = color;
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.charles7c.cnadmin.common.model.vo;
|
||||
package top.charles7c.cnadmin.common.model.resp;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
@@ -32,14 +32,14 @@ import cn.hutool.core.collection.CollUtil;
|
||||
/**
|
||||
* 分页信息
|
||||
*
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表数据类型
|
||||
* @author Charles7c
|
||||
* @since 2023/1/14 23:40
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "分页信息")
|
||||
public class PageDataVO<V> implements Serializable {
|
||||
public class PageDataResp<L> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -47,7 +47,7 @@ public class PageDataVO<V> implements Serializable {
|
||||
* 列表数据
|
||||
*/
|
||||
@Schema(description = "列表数据")
|
||||
private List<V> list;
|
||||
private List<L> list;
|
||||
|
||||
/**
|
||||
* 总记录数
|
||||
@@ -64,18 +64,18 @@ public class PageDataVO<V> implements Serializable {
|
||||
* 目标类型 Class 对象
|
||||
* @param <T>
|
||||
* 源列表数据类型
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 目标列表数据类型
|
||||
* @return 分页信息
|
||||
*/
|
||||
public static <T, V> PageDataVO<V> build(IPage<T> page, Class<V> targetClass) {
|
||||
public static <T, L> PageDataResp<L> build(IPage<T> page, Class<L> targetClass) {
|
||||
if (null == page) {
|
||||
return empty();
|
||||
}
|
||||
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||
pageDataVO.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
|
||||
pageDataVO.setTotal(page.getTotal());
|
||||
return pageDataVO;
|
||||
PageDataResp<L> pageDataResp = new PageDataResp<>();
|
||||
pageDataResp.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
|
||||
pageDataResp.setTotal(page.getTotal());
|
||||
return pageDataResp;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,18 +83,18 @@ public class PageDataVO<V> implements Serializable {
|
||||
*
|
||||
* @param page
|
||||
* MyBatis Plus 分页数据
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表数据类型
|
||||
* @return 分页信息
|
||||
*/
|
||||
public static <V> PageDataVO<V> build(IPage<V> page) {
|
||||
public static <L> PageDataResp<L> build(IPage<L> page) {
|
||||
if (null == page) {
|
||||
return empty();
|
||||
}
|
||||
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||
pageDataVO.setList(page.getRecords());
|
||||
pageDataVO.setTotal(page.getTotal());
|
||||
return pageDataVO;
|
||||
PageDataResp<L> pageDataResp = new PageDataResp<>();
|
||||
pageDataResp.setList(page.getRecords());
|
||||
pageDataResp.setTotal(page.getTotal());
|
||||
return pageDataResp;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -106,39 +106,39 @@ public class PageDataVO<V> implements Serializable {
|
||||
* 每页条数
|
||||
* @param list
|
||||
* 列表数据
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表数据类型
|
||||
* @return 分页信息
|
||||
*/
|
||||
public static <V> PageDataVO<V> build(int page, int size, List<V> list) {
|
||||
public static <L> PageDataResp<L> build(int page, int size, List<L> list) {
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
return empty();
|
||||
}
|
||||
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||
pageDataVO.setTotal(list.size());
|
||||
PageDataResp<L> pageDataResp = new PageDataResp<>();
|
||||
pageDataResp.setTotal(list.size());
|
||||
// 对列表数据进行分页
|
||||
int fromIndex = (page - 1) * size;
|
||||
int toIndex = page * size + size;
|
||||
if (fromIndex > list.size()) {
|
||||
pageDataVO.setList(new ArrayList<>(0));
|
||||
pageDataResp.setList(new ArrayList<>(0));
|
||||
} else if (toIndex >= list.size()) {
|
||||
pageDataVO.setList(list.subList(fromIndex, list.size()));
|
||||
pageDataResp.setList(list.subList(fromIndex, list.size()));
|
||||
} else {
|
||||
pageDataVO.setList(list.subList(fromIndex, toIndex));
|
||||
pageDataResp.setList(list.subList(fromIndex, toIndex));
|
||||
}
|
||||
return pageDataVO;
|
||||
return pageDataResp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 空分页信息
|
||||
*
|
||||
* @param <V>
|
||||
* @param <L>
|
||||
* 列表数据类型
|
||||
* @return 分页信息
|
||||
*/
|
||||
private static <V> PageDataVO<V> empty() {
|
||||
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||
pageDataVO.setList(new ArrayList<>(0));
|
||||
return pageDataVO;
|
||||
private static <L> PageDataResp<L> empty() {
|
||||
PageDataResp<L> pageDataResp = new PageDataResp<>();
|
||||
pageDataResp.setList(new ArrayList<>(0));
|
||||
return pageDataResp;
|
||||
}
|
||||
}
|
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.charles7c.cnadmin.common.model.vo;
|
||||
package top.charles7c.cnadmin.common.model.resp;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -37,7 +37,7 @@ import cn.hutool.core.date.DateUtil;
|
||||
@Data
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@Schema(description = "响应信息")
|
||||
public class R<V> implements Serializable {
|
||||
public class R<T> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -53,9 +53,9 @@ public class R<V> implements Serializable {
|
||||
@Schema(description = "业务状态信息", example = "操作成功")
|
||||
private String msg;
|
||||
|
||||
/** 返回数据 */
|
||||
@Schema(description = "返回数据")
|
||||
private V data;
|
||||
/** 响应数据 */
|
||||
@Schema(description = "响应数据")
|
||||
private T data;
|
||||
|
||||
/** 时间戳 */
|
||||
@Schema(description = "时间戳", example = "1691453288")
|
||||
@@ -66,46 +66,46 @@ public class R<V> implements Serializable {
|
||||
/** 失败状态码 */
|
||||
private static final int FAIL_CODE = HttpStatus.INTERNAL_SERVER_ERROR.value();
|
||||
|
||||
private R(boolean success, int code, String msg, V data) {
|
||||
private R(boolean success, int code, String msg, T data) {
|
||||
this.success = success;
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public static <V> R<V> ok() {
|
||||
public static <T> R<T> ok() {
|
||||
return new R<>(true, SUCCESS_CODE, "操作成功", null);
|
||||
}
|
||||
|
||||
public static <V> R<V> ok(V data) {
|
||||
public static <T> R<T> ok(T data) {
|
||||
return new R<>(true, SUCCESS_CODE, "操作成功", data);
|
||||
}
|
||||
|
||||
public static <V> R<V> ok(String msg) {
|
||||
public static <T> R<T> ok(String msg) {
|
||||
return new R<>(true, SUCCESS_CODE, msg, null);
|
||||
}
|
||||
|
||||
public static <V> R<V> ok(String msg, V data) {
|
||||
public static <T> R<T> ok(String msg, T data) {
|
||||
return new R<>(true, SUCCESS_CODE, msg, data);
|
||||
}
|
||||
|
||||
public static <V> R<V> fail() {
|
||||
public static <T> R<T> fail() {
|
||||
return new R<>(false, FAIL_CODE, "操作失败", null);
|
||||
}
|
||||
|
||||
public static <V> R<V> fail(String msg) {
|
||||
public static <T> R<T> fail(String msg) {
|
||||
return new R<>(false, FAIL_CODE, msg, null);
|
||||
}
|
||||
|
||||
public static <V> R<V> fail(V data) {
|
||||
public static <T> R<T> fail(T data) {
|
||||
return new R<>(false, FAIL_CODE, "操作失败", data);
|
||||
}
|
||||
|
||||
public static <V> R<V> fail(String msg, V data) {
|
||||
public static <T> R<T> fail(String msg, T data) {
|
||||
return new R<>(false, FAIL_CODE, msg, data);
|
||||
}
|
||||
|
||||
public static <V> R<V> fail(int code, String msg) {
|
||||
public static <T> R<T> fail(int code, String msg) {
|
||||
return new R<>(false, code, msg, null);
|
||||
}
|
||||
}
|
@@ -57,7 +57,7 @@ public class ExcelUtils {
|
||||
* @param response
|
||||
* 响应对象
|
||||
*/
|
||||
public static <V> void export(List<V> list, String fileName, Class<V> clazz, HttpServletResponse response) {
|
||||
public static <T> void export(List<T> list, String fileName, Class<T> clazz, HttpServletResponse response) {
|
||||
export(list, fileName, "Sheet1", clazz, response);
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public class ExcelUtils {
|
||||
* @param response
|
||||
* 响应对象
|
||||
*/
|
||||
public static <V> void export(List<V> list, String fileName, String sheetName, Class<V> clazz,
|
||||
public static <T> void export(List<T> list, String fileName, String sheetName, Class<T> clazz,
|
||||
HttpServletResponse response) {
|
||||
try {
|
||||
fileName =
|
||||
|
@@ -61,7 +61,7 @@ public class ServletUtils {
|
||||
* 获取浏览器及其版本信息
|
||||
*
|
||||
* @param request
|
||||
* 请求信息
|
||||
* 请求对象
|
||||
* @return 浏览器及其版本信息
|
||||
*/
|
||||
public static String getBrowser(HttpServletRequest request) {
|
||||
|
Reference in New Issue
Block a user