diff --git a/pom.xml b/pom.xml index 6dadccd..216c74b 100644 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,11 @@ org.springframework.boot spring-boot-starter-data-redis + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.6 + diff --git a/src/main/java/com/example/demo/Util/BusinessException.java b/src/main/java/com/example/demo/Util/BusinessException.java new file mode 100644 index 0000000..956bcec --- /dev/null +++ b/src/main/java/com/example/demo/Util/BusinessException.java @@ -0,0 +1,31 @@ +package com.example.demo.Util; + +/** + * @program: GOLD + * @ClassName BusinessException + * @description: + * @author: huangqizhen + * @create: 2025−06-23 14:58 + * @Version 1.0 + **/ + +import lombok.Getter; + +/** + * 业务异常,可抛出到前端 + */ +@Getter +public class BusinessException extends RuntimeException { + private int code; // 业务状态码 + // 使用默认状态码0的构造方法 + public BusinessException(String message) { + this(400, message); // 默认状态码400 + } + + // 指定状态码的构造方法 + public BusinessException(int code, String message) { + super(message); + this.code = code; + } + +} diff --git a/src/main/java/com/example/demo/controller/GoldDetailController.java b/src/main/java/com/example/demo/controller/GoldDetailController.java new file mode 100644 index 0000000..f01bc53 --- /dev/null +++ b/src/main/java/com/example/demo/controller/GoldDetailController.java @@ -0,0 +1,45 @@ +package com.example.demo.controller; + +import com.example.demo.domain.vo.GoldDetail; +import com.example.demo.domain.vo.Page; +import com.example.demo.domain.vo.Result; +import com.example.demo.service.GoldDetailService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; + +/** + * @program: GOLD + * @ClassName GoldDetailController + * @description: + * @author: huangqizhen + * @create: 2025−06-23 14:41 + * @Version 1.0 + **/ + +@RestController +@RequestMapping("/goldDetail") +@RequiredArgsConstructor +@Slf4j +@CrossOrigin +public class GoldDetailController { + private final GoldDetailService goldDetailService; + @PostMapping("/getGoldDetail") + public Result getGoldDetail(@RequestBody Page page){ + + if(ObjectUtils.isEmpty(page.getPageNum())){ + return Result.error("页码数为空!"); + } + if(ObjectUtils.isEmpty(page.getPageSize())){ + return Result.error("页大小为空!"); + } + else{ + return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail())); + } + } + @PostMapping("/getTotal") + public Result getTotal(@RequestBody GoldDetail goldDetail) { + return Result.success(goldDetailService.getTotal(goldDetail)); + } +} diff --git a/src/main/java/com/example/demo/domain/vo/GoldDetail.java b/src/main/java/com/example/demo/domain/vo/GoldDetail.java new file mode 100644 index 0000000..d1ee6ca --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/GoldDetail.java @@ -0,0 +1,44 @@ +package com.example.demo.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @program: GOLD + * @ClassName GoldDetail + * @description: + * @author: huangqizhen + * @create: 2025−06-23 13:03 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class GoldDetail { + private static final long serialVersionUID = 1L; + + private String token; + private String name; // 名称 + private Integer jwcode; // 精网号 + private String market; // 所属地区 + private String payPlatform; // 支付平台 + private Integer type; // 类型 + private Integer sumGold; // 总金币 + private Integer permentGold; //永久金币 + private Integer freeJune; // 免费金币六月到期 + private Integer freeDecember; // 免费金币七月到期 + private Integer taskGold; // 任务金币 + private String adminName; //提交人 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startTime; // 开始时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endTime; // 结束时间 + private String sortField; //排序字段 + private String sortOrder; //排序顺序 + +} diff --git a/src/main/java/com/example/demo/domain/vo/Page.java b/src/main/java/com/example/demo/domain/vo/Page.java new file mode 100644 index 0000000..36d7d9d --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/Page.java @@ -0,0 +1,23 @@ +package com.example.demo.domain.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName Page + * @description: + * @author: huangqizhen + * @create: 2025−06-23 16:23 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Page { + private static final long serialVersionUID = 1L; + + private Integer pageNum; + private Integer pageSize; + private GoldDetail goldDetail; + +} diff --git a/src/main/java/com/example/demo/domain/vo/Result.java b/src/main/java/com/example/demo/domain/vo/Result.java index 09089da..9de7ea5 100644 --- a/src/main/java/com/example/demo/domain/vo/Result.java +++ b/src/main/java/com/example/demo/domain/vo/Result.java @@ -1,5 +1,6 @@ package com.example.demo.domain.vo; +import com.example.demo.Util.BusinessException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.AllArgsConstructor; @@ -8,40 +9,67 @@ import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.HashMap; @Data @NoArgsConstructor @AllArgsConstructor public class Result implements Serializable { private static final long serialVersionUID = 1L; - private Integer code; - private String msg; - private Object data; + private Integer code; // 响应码,200 代表成功;401 代表未授权 + private String msg; // 响应消息 + private Object data; // 返回的数据 - public static Result success(Integer code, String msg, Object data) { - return new Result(code, msg, data); + // 成功响应(不需要给前端返回数据) + public static Result success() { + return new Result(200, "success", new HashMap<>()); } - public static Result success(Integer code, Object data) { - return success(code, "操作成功", data); + + // 查询成功响应(把查询结果作为返回数据响应给前端) + public static Result success(Object data) { + return new Result(200, "success", data); } - public static Result success(String msg, Object data) {return success(200, msg, data);} - public static Result success(Object data){ - return success(200, data); + + // 失败响应 + public static Result error(String msg) { + return new Result(0, msg, new HashMap<>()); } - public static Result success(){ - return success(null); + + // 失败响应,可以自定义错误码 + public static Result error(int code, String msg) { + return new Result(code, msg, new HashMap<>()); } - public static Result error(Integer code, String msg, Object data){ - return new Result(code, msg, data); + // 成功响应,可以自定义消息和数据 + public static Result success(String msg, HashMap resultData) { + return new Result(200, msg, resultData); // 返回成功响应,状态码为 200 } - public static Result error(Integer code, String msg){ - return error(code, msg, null); + + // 未授权响应,可以自定义错误码 + public static Result unauthorized(int code, String msg) { + return new Result(code, msg, new HashMap<>()); } - public static Result error(String msg){ - return error(0, msg); + + // 错误响应,状态码为200,code为401 + public static Result unauthorized(String msg) { + return new Result(401, msg, new HashMap<>()); } + //失败响应 自定义状态码 默认为500 + public static Result error(BusinessException e) { + Result response = new Result(); + // 定义默认错误码映射 + final int defaultErrorCode = 400; + // 检查 getCode() 是否为 null(如果是 Integer) + Integer code = e.getCode(); + if (code == null || code == 0) { + response.setCode(defaultErrorCode); // 默认错误码 + } else { + response.setCode(code); + } + response.setMsg(e.getMessage()); + return response; + } public String toJson() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); return mapper.writeValueAsString(this); diff --git a/src/main/java/com/example/demo/domain/vo/Total.java b/src/main/java/com/example/demo/domain/vo/Total.java new file mode 100644 index 0000000..a7e9f18 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/Total.java @@ -0,0 +1,25 @@ +package com.example.demo.domain.vo; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName Total + * @description: + * @author: huangqizhen + * @create: 2025−06-23 16:53 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class Total { + private static final long serialVersionUID = 1L; + + private String token; + private Integer Goldtotal; + private Integer permanentGold; + private Integer freeGold; + private Integer taskGold; + +} diff --git a/src/main/java/com/example/demo/mapper/GoldDetailMapper.java b/src/main/java/com/example/demo/mapper/GoldDetailMapper.java new file mode 100644 index 0000000..faebecb --- /dev/null +++ b/src/main/java/com/example/demo/mapper/GoldDetailMapper.java @@ -0,0 +1,21 @@ +package com.example.demo.mapper; + +import com.example.demo.domain.vo.GoldDetail; +import com.example.demo.domain.vo.Total; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @program: GOLD + * @ClassName GoldDetailMapper + * @description: + * @author: huangqizhen + * @create: 2025−06-23 13:47 + * @Version 1.0 + **/ +@Mapper +public interface GoldDetailMapper { + List getGoldDetail(GoldDetail goldDetail); + Total getTotal(GoldDetail goldDetail); +} diff --git a/src/main/java/com/example/demo/security/TokenFilter.java b/src/main/java/com/example/demo/security/TokenFilter.java index 15abb56..7652567 100644 --- a/src/main/java/com/example/demo/security/TokenFilter.java +++ b/src/main/java/com/example/demo/security/TokenFilter.java @@ -228,8 +228,8 @@ public class TokenFilter extends OncePerRequestFilter { // 检查是否是上传请求 boolean isErpRequest = request.getRequestURI().startsWith("/ERP") || request.getRequestURI().contains("ERP"); boolean isUploadRequest = request.getRequestURI().startsWith("/upload"); - System.out.println(request.getRequestURI()); - System.out.println(isUploadRequest); +// System.out.println(request.getRequestURI()); +// System.out.println(isUploadRequest); if (isUploadRequest ) { // 如果是上传请求,直接将请求传递给下一个过滤器或目标资源 filterChain.doFilter(request, response); @@ -237,7 +237,7 @@ public class TokenFilter extends OncePerRequestFilter { } else { // 使用RequestWrapper包装原始的HttpServletRequest,使其输入流可以被重复读取 RequestWrapper requestWrapper = new RequestWrapper(request); - System.out.println(request); +// System.out.println(request); // 确保请求体只被读取一次 boolean hasRequestBody = "POST".equals(requestWrapper.getMethod()); diff --git a/src/main/java/com/example/demo/service/GoldDetailService.java b/src/main/java/com/example/demo/service/GoldDetailService.java new file mode 100644 index 0000000..7095f16 --- /dev/null +++ b/src/main/java/com/example/demo/service/GoldDetailService.java @@ -0,0 +1,18 @@ +package com.example.demo.service; + +import com.example.demo.domain.vo.GoldDetail; +import com.example.demo.domain.vo.Total; +import com.github.pagehelper.PageInfo; + +/** + * @program: GOLD + * @ClassName GoldDetailService + * @description: + * @author: huangqizhen + * @create: 2025−06-23 11:59 + * @Version 1.0 + **/ +public interface GoldDetailService { + PageInfo getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail); + Total getTotal(GoldDetail goldDetail); +} diff --git a/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java new file mode 100644 index 0000000..96cbd1c --- /dev/null +++ b/src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java @@ -0,0 +1,39 @@ +package com.example.demo.serviceImpl; + +import com.example.demo.domain.vo.GoldDetail; +import com.example.demo.domain.vo.Total; +import com.example.demo.mapper.GoldDetailMapper; +import com.example.demo.service.GoldDetailService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @program: GOLD + * @ClassName GoldDetailServiceImpl + * @description: + * @author: huangqizhen + * @create: 2025−06-23 13:44 + * @Version 1.0 + **/ +@Service +public class GoldDetailServiceImpl implements GoldDetailService { + + @Autowired + private GoldDetailMapper goldDetailMapper; + @Override + public PageInfo getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { + PageHelper.startPage(pageNum, pageSize); + List list= goldDetailMapper.getGoldDetail(goldDetail); + return new PageInfo<>(list); + } + + @Override + public Total getTotal(GoldDetail goldDetail) { + + return goldDetailMapper.getTotal(goldDetail); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 6d2229c..4ddfebc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -62,9 +62,9 @@ spring: data: redis: database: 0 - host: 54.251.137.151 - port: 10703 - password: 8912h12jhhajsd + host: 192.168.8.220 + port: 6379 + password: timeout: 1000 lettuce: pool: diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml new file mode 100644 index 0000000..c0c6acf --- /dev/null +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -0,0 +1,58 @@ + + + + + + +