Commit 075d9c0d by zhaoqingwei

阿拉丁-魔登

parent 170092de
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
<poi.version>4.1.2</poi.version> <poi.version>4.1.2</poi.version>
<oshi.version>6.4.8</oshi.version> <oshi.version>6.4.8</oshi.version>
<velocity.version>2.3</velocity.version> <velocity.version>2.3</velocity.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
</properties> </properties>
<dependencies> <dependencies>
...@@ -236,6 +237,17 @@ ...@@ -236,6 +237,17 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- mybatis-plus 增强CRUD -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.ruoyi.adsdesk.business.user;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.adsdesk.domain.AdsUser;
import com.ruoyi.adsdesk.param.UserListParam;
import org.apache.commons.compress.utils.Lists;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* Ads登录用户
*
* @author Xingbz
*/
@Service
public class AdsUserBusiness {
public IPage<AdsUser> list(UserListParam param) {
AdsUser u1 = new AdsUser();
u1.setId(1L);
u1.setCustomerId(1L);
u1.setName("zqw");
u1.setRole("MANAGER");
u1.setEmail("zhaoqingwei@reyun.com");
List<AdsUser> list = Lists.newArrayList();
list.add(u1);
Page result = new Page<>(1, 10, 1);
result.setRecords(list);
return result;
}
}
package com.ruoyi.adsdesk.common;
import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* Ads实体通用信息
* @author Xingbz
* 006 06-06
*/
@Data
public class AdsBaseEntity<T> implements Serializable {
/**
* 主键ID
*/
@TableId(type = IdType.AUTO)
private T id;
/**
* 创建人
*/
@TableField(value = "create_by", fill = FieldFill.INSERT)
private Long createBy;
/**
* 创建时间
*/
@TableField(value = "gmt_create", fill = FieldFill.INSERT)
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime gmtCreate;
/**
* 修改人
*/
@TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
private Long updateBy;
/**
* 修改时间
*/
@TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime gmtModified;
/**
* 是否删除(1是 0否)
*/
@TableLogic
@TableField(value = "is_delete")
private Boolean isDelete;
}
package com.ruoyi.adsdesk.config.web;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.adsdesk.util.AdsPageUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* 全局响应处理器
* 由于Ads编码风格和若依略有不同, 为复用前端逻辑, 在此做下转换处理
* @author Xingbz
* 007 06-07
*/
@Slf4j
@ControllerAdvice("com.ruoyi.adsdesk.controller")
public class GlobalResponseBodyHandler implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(@NotNull MethodParameter returnType, @NotNull Class<? extends HttpMessageConverter<?>> converterType) {
// Class<?> returnClass = Optional.ofNullable(returnType.getMethod()).map(Method::getReturnType).orElse(null);
// return Objects.nonNull(returnClass) && Objects.equals(returnClass, IPage.class);
return true;
}
@Override
public Object beforeBodyWrite(Object body, @NotNull MethodParameter returnType, @NotNull MediaType selectedContentType, @NotNull Class<? extends HttpMessageConverter<?>> selectedConverterType, @NotNull ServerHttpRequest request, @NotNull ServerHttpResponse response) {
if (body instanceof AjaxResult) {
return body;
}
if (body instanceof IPage) {
return AdsPageUtil.transformToTableData((IPage<?>)body);
}
// String需要特殊处理, 否则会抛出java.lang.ClassCastException
if (body instanceof String) {
return JSON.toJSONString(AjaxResult.success(body));
}
return AjaxResult.success(body);
}
}
package com.ruoyi.adsdesk.controller.user;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.adsdesk.business.user.AdsUserBusiness;
import com.ruoyi.adsdesk.domain.AdsUser;
import com.ruoyi.adsdesk.param.UserListParam;
import com.ruoyi.adsdesk.vo.AdsUserVo;
import com.ruoyi.common.core.controller.BaseController;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* Ads 用户控制层
*
* @author Xingbz
* 030 06-30
*/
@RestController
@RequestMapping("/adsdesk/ads_user")
public class AdsUserController{
@Resource
private AdsUserBusiness userBusiness;
@PostMapping("/list")
public IPage<AdsUser> list(@RequestBody UserListParam param) {
return userBusiness.list(param);
}
}
package com.ruoyi.adsdesk.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.adsdesk.common.AdsBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* Ads登录用户
* @author Xingbz
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ads_user")
public class AdsUser extends AdsBaseEntity<Long> {
/**
* 客户id
*/
@TableField(value = "customer_id")
private Long customerId;
/**
* email
*/
@TableField(value = "email")
private String email;
/**
* 密码
*/
@TableField(value = "`password`")
private String password;
/**
* 姓名
*/
@TableField(value = "`name`")
private String name;
/**
* 角色(OPERATE 优化师,MANAGER 优化经理,DESIGNER 设计师,ADMIN 默认主账号)
*/
@TableField(value = "`role`")
private String role;
/**
* 组id
*/
@TableField(value = "group_id")
private Long groupId;
/**
* 状态(DISABLE 暂停,ENABLE 启用)
*/
@TableField(value = "`status`")
private String status;
/**
* 查看tkio数据(1是,0否)
*/
@TableField(value = "show_tkio")
private Boolean showTkio;
/**
* 内部管理员
*/
@TableField(value = "is_super")
private Boolean isSuper;
/**
* 是否设计经理(1是 0否)
*/
@TableField(value = "is_design_manager")
private Boolean isDesignManager;
/**
* 查看返点数据(1是,0否)
*/
@TableField(value = "show_rebates")
private Boolean showRebates;
public static final String COL_ID = "id";
public static final String COL_CUSTOMER_ID = "customer_id";
public static final String COL_EMAIL = "email";
public static final String COL_PASSWORD = "password";
public static final String COL_NAME = "name";
public static final String COL_ROLE = "role";
public static final String COL_GROUP_ID = "group_id";
public static final String COL_STATUS = "status";
public static final String COL_CREATE_BY = "create_by";
public static final String COL_GMT_CREATE = "gmt_create";
public static final String COL_UPDATE_BY = "update_by";
public static final String COL_GMT_MODIFIED = "gmt_modified";
public static final String COL_IS_DELETE = "is_delete";
public static final String COL_SHOW_TKIO = "show_tkio";
public static final String COL_IS_SUPER = "is_super";
public static final String COL_IS_DESIGN_MANAGER = "is_design_manager";
public static final String COL_SHOW_REBATES = "show_rebates";
}
\ No newline at end of file
package com.ruoyi.adsdesk.param;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* Ads查询接口通用参数
* 分页字段
* 排序字段
* @author Xingbz
* 007 06-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class AdsListBaseParam extends PageDomain {
public void initMaxPage() {
this.setPageNum(1);
this.setPageSize(Integer.MAX_VALUE);
}
}
package com.ruoyi.adsdesk.param;
import com.ruoyi.common.utils.StringUtils;
/**
* 分页数据
*
* @author ruoyi
*/
public class PageDomain {
/** 当前记录起始索引 */
private Integer pageNum;
/** 每页显示记录数 */
private Integer pageSize;
/** 排序列 */
private String orderByColumn;
/** 排序的方向desc或者asc */
private String isAsc = "asc";
/** 分页参数合理化 */
private Boolean reasonable = true;
public String getOrderBy() {
if (StringUtils.isEmpty(orderByColumn)) {
return "";
}
return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getOrderByColumn() {
return orderByColumn;
}
public String getOrderByColumnUnderScore() {
return StringUtils.toUnderScoreCase(this.getOrderByColumn());
}
public void setOrderByColumn(String orderByColumn) {
this.orderByColumn = orderByColumn;
}
public String getIsAsc() {
return isAsc;
}
public void setIsAsc(String isAsc) {
if (StringUtils.isNotEmpty(isAsc)) {
// 兼容前端排序类型
if ("ascending".equals(isAsc)) {
isAsc = "asc";
} else if ("descending".equals(isAsc)) {
isAsc = "desc";
}
this.isAsc = isAsc;
}
}
public boolean isAscSort() {
return StringUtils.equalsAnyIgnoreCase(this.isAsc, "asc");
}
public Boolean getReasonable() {
if (StringUtils.isNull(reasonable)) {
return Boolean.TRUE;
}
return reasonable;
}
public void setReasonable(Boolean reasonable) {
this.reasonable = reasonable;
}
}
package com.ruoyi.adsdesk.param;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 用户查询param
* @author Xingbz
* 007 06-30
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserListParam extends AdsListBaseParam {
private String ids;
private Long customerId;
private List<Long> customerIds;
private String customerName;
private String email;
private String name;
private String role;
private String beginCreateTime;
private String endCreateTime;
}
package com.ruoyi.adsdesk.util;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.adsdesk.param.AdsListBaseParam;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.List;
import java.util.function.BiFunction;
import static java.util.stream.Collectors.toList;
/**
* Ads分页相关工具
* @author Xingbz
* 2022-6-7
*/
public interface AdsPageUtil {
static <T> Page<T> buildPage(AdsListBaseParam baseParam) {
return new Page<T>(baseParam.getPageNum(), baseParam.getPageSize());
}
static <T, R> IPage<R> convert(IPage<T> page, List<R> rList) {
return new Page<R>(page.getCurrent(), page.getSize(), page.getTotal()).setRecords(rList);
}
/**
* IPage 的泛型转换
*
* @param mapper 转换函数
* @param <R> 转换后的泛型
* @return 转换泛型后的 IPage
*/
@SuppressWarnings("unchecked")
static <T, U, R> IPage<R> convert(IPage<T> page, U u, BiFunction<? super T, U, ? extends R> mapper) {
List<R> collect = page.getRecords().stream().map(item -> mapper.apply(item, u)).collect(toList());
return ((IPage<R>) page).setRecords(collect);
}
/**
* 根据全量集合进行内存分页, 适用于API端没有分页的数据
* @param list 全量数据集合(如果频繁使用一定要缓存)
* @param current 当前页数
* @param size 每页大小
* @return 分页结果
*/
static <T> Page<T> pageByList(List<T> list, Integer current, Integer size) {
int total = list.size();
Page<T> page = new Page<>(current, size, total);
// 如果仅有一页或一页不到的数据, 但是查询了第二页之后的 , 直接返回空数据(但是要附上总记录数)
if (total <= size && current > 1) {
return page;
}
// 如果有一页以上的数据, 则根据前端的分页参数计算本页数据
if (total > size) {
int fromIndex = (current - 1) * size;
// 如果仅有100条 , 但查询了11页(从101开始), 则直接返回空数据(附上总记录数)
if (fromIndex > total) {
return page;
}
int toIndex = fromIndex + size;
// Math.min 是为了预防记录数超出时(最后一页时记录数不满一页)报异常
list = list.subList(fromIndex, Math.min(toIndex, total));
}
page.setRecords(list);
return page;
}
static TableDataInfo transformToTableData(IPage<?> pageResult) {
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功");
tableDataInfo.setRows(pageResult.getRecords());
tableDataInfo.setTotal(pageResult.getTotal());
return tableDataInfo;
}
}
package com.ruoyi.adsdesk.vo;
import com.ruoyi.adsdesk.common.AdsBaseEntity;
import lombok.Data;
/**
* @author :zhaoqingwei
* @date :Created in 2023/12/10 12:04
* @description:${description}
*/
@Data
public class AdsUserVo extends AdsBaseEntity {
/**
* 客户id
*/
private Long customerId;
/**
* email
*/
private String email;
/**
* 密码
*/
private String password;
/**
* 姓名
*/
private String name;
/**
* 角色(OPERATE 优化师,MANAGER 优化经理,DESIGNER 设计师,ADMIN 默认主账号)
*/
private String role;
/**
* 组id
*/
private Long groupId;
/**
* 状态(DISABLE 暂停,ENABLE 启用)
*/
private String status;
/**
* 查看tkio数据(1是,0否)
*/
private Boolean showTkio;
/**
* 内部管理员
*/
private Boolean isSuper;
/**
* 是否设计经理(1是 0否)
*/
private Boolean isDesignManager;
/**
* 查看返点数据(1是,0否)
*/
private Boolean showRebates;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment