refactor: 💥 调整后端请求、响应参数模型命名风格

XxxRequest => XxxReq
XxxVO => XxxResp
This commit is contained in:
2023-11-04 17:19:00 +08:00
parent 598dd3991c
commit 87f90567db
136 changed files with 828 additions and 832 deletions

View File

@@ -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("修改成功");
}

View File

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

View File

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

View File

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

View File

@@ -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);
/**
* 删除

View File

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

View File

@@ -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> {
/**
* 枚举描述

View File

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

View File

@@ -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;
/**
* 全局错误处理器

View File

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

View File

@@ -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;
/**
* 全局响应结果处理器

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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 =

View File

@@ -61,7 +61,7 @@ public class ServletUtils {
* 获取浏览器及其版本信息
*
* @param request
* 请求信息
* 请求对象
* @return 浏览器及其版本信息
*/
public static String getBrowser(HttpServletRequest request) {