From a039e0d2b9c36de553430cd1798c7c14325da0db Mon Sep 17 00:00:00 2001 From: jieyuu <645634619@qq.com> Date: Wed, 26 Feb 2025 19:30:34 +0800 Subject: [PATCH] =?UTF-8?q?refactor(server):=20=E9=87=8D=E6=9E=84=20server?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新了多个类的包名,使其更加规范 - 新增了 Economics 和 Label 相关的 mapper、controller 和 model 类 - 更新了 User相关的 mapper 和 model 类- 新增了 Economics 和 Label 的更新请求类 - 新增了 Economics 的 VO 类 - 更新了 LoginInterceptor 中的导入信息 - 新增了 EconomicsController 和 LabelController 控制器类 - 更新了 UserController 中的方法 --- .idea/misc.xml | 2 +- common/pom.xml | 30 ++- .../java/net/carbon/bean/PageRequest.java | 24 +++ .../java/net/carbon/bean/PageResponse.java | 58 ++++++ .../carbon/config/MybatisPlusPageConfig.java | 1 + .../java/net/carbon/config/SwaggerConfig.java | 35 ++++ .../carbon/config/SwaggerConfiguration.java | 118 ----------- .../carbon/config/SwaggerOpenApiConfig.java | 39 ++++ .../carbon/interceptor/LoginInterceptor.java | 6 +- .../main/java/net/carbon/model/LoginUser.java | 12 +- .../java/net/carbon/utils/CommonUtil.java | 4 +- pom.xml | 74 +++++-- server/pom.xml | 31 ++- .../net/carbon/config/InterceptorConfig.java | 2 +- .../controller/EconomicsController.java | 118 +++++++++++ .../carbon/controller/LabelController.java | 71 +++++++ .../net/carbon/controller/UserController.java | 37 ++-- .../carbon/mapper/CarbonEmissionMapper.java | 4 +- .../net/carbon/mapper/EconomicsMapper.java | 20 ++ .../java/net/carbon/mapper/LabelMapper.java | 18 ++ .../java/net/carbon/mapper/UserMapper.java | 4 +- .../main/java/net/carbon/model/UserDO.java | 31 --- .../model/{ => po}/CarbonEmissionDO.java | 4 +- .../java/net/carbon/model/po/EconomicsDO.java | 65 +++++++ .../java/net/carbon/model/po/LabelDO.java | 66 +++++++ .../main/java/net/carbon/model/po/UserDO.java | 88 +++++++++ .../model/request/EconomicsUpdateRequest.java | 18 ++ .../model/request/LabelUpdateRequest.java | 37 ++++ .../model/request/UserLoginRequest.java | 20 ++ .../model/request/UserRegisterRequest.java | 14 ++ .../java/net/carbon/model/vo/EconomicsVO.java | 35 ++++ .../java/net/carbon/model/vo/LabelVO.java | 39 ++++ .../main/java/net/carbon/model/vo/UserVO.java | 45 +++++ .../net/carbon/request/UserLoginRequest.java | 20 -- .../carbon/request/UserRegisterRequest.java | 17 -- .../carbon/service/CarbonEmissionService.java | 4 +- .../net/carbon/service/EconomicsService.java | 24 +++ .../java/net/carbon/service/LabelService.java | 28 +++ .../java/net/carbon/service/UserService.java | 9 +- .../impl/CarbonEmissionServiceImpl.java | 3 +- .../service/impl/EconomicsServiceImpl.java | 74 +++++++ .../carbon/service/impl/LabelServiceImpl.java | 76 ++++++++ .../carbon/service/impl/UserServiceImpl.java | 33 +++- server/src/main/resources/application.yml | 17 +- .../resources/mapper/CarbonEmissionMapper.xml | 2 +- .../main/resources/mapper/EconomicsMapper.xml | 6 + .../src/main/resources/mapper/LabelMapper.xml | 7 + .../src/main/resources/mapper/UserMapper.xml | 13 +- .../test/java/biz/MyBatisPlusGenerator.java | 183 ++++++++++-------- 49 files changed, 1340 insertions(+), 346 deletions(-) create mode 100644 common/src/main/java/net/carbon/bean/PageRequest.java create mode 100644 common/src/main/java/net/carbon/bean/PageResponse.java create mode 100644 common/src/main/java/net/carbon/config/SwaggerConfig.java delete mode 100644 common/src/main/java/net/carbon/config/SwaggerConfiguration.java create mode 100644 common/src/main/java/net/carbon/config/SwaggerOpenApiConfig.java create mode 100644 server/src/main/java/net/carbon/controller/EconomicsController.java create mode 100644 server/src/main/java/net/carbon/controller/LabelController.java create mode 100644 server/src/main/java/net/carbon/mapper/EconomicsMapper.java create mode 100644 server/src/main/java/net/carbon/mapper/LabelMapper.java delete mode 100644 server/src/main/java/net/carbon/model/UserDO.java rename server/src/main/java/net/carbon/model/{ => po}/CarbonEmissionDO.java (96%) create mode 100644 server/src/main/java/net/carbon/model/po/EconomicsDO.java create mode 100644 server/src/main/java/net/carbon/model/po/LabelDO.java create mode 100644 server/src/main/java/net/carbon/model/po/UserDO.java create mode 100644 server/src/main/java/net/carbon/model/request/EconomicsUpdateRequest.java create mode 100644 server/src/main/java/net/carbon/model/request/LabelUpdateRequest.java create mode 100644 server/src/main/java/net/carbon/model/request/UserLoginRequest.java create mode 100644 server/src/main/java/net/carbon/model/request/UserRegisterRequest.java create mode 100644 server/src/main/java/net/carbon/model/vo/EconomicsVO.java create mode 100644 server/src/main/java/net/carbon/model/vo/LabelVO.java create mode 100644 server/src/main/java/net/carbon/model/vo/UserVO.java delete mode 100644 server/src/main/java/net/carbon/request/UserLoginRequest.java delete mode 100644 server/src/main/java/net/carbon/request/UserRegisterRequest.java create mode 100644 server/src/main/java/net/carbon/service/EconomicsService.java create mode 100644 server/src/main/java/net/carbon/service/LabelService.java create mode 100644 server/src/main/java/net/carbon/service/impl/EconomicsServiceImpl.java create mode 100644 server/src/main/java/net/carbon/service/impl/LabelServiceImpl.java create mode 100644 server/src/main/resources/mapper/EconomicsMapper.xml create mode 100644 server/src/main/resources/mapper/LabelMapper.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 385fcc6..f3962d1 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index b5d1982..fbbcb36 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -16,6 +16,11 @@ lombok + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + org.springframework.boot @@ -24,14 +29,9 @@ com.baomidou - mybatis-plus-boot-starter + mybatis-plus-spring-boot3-starter - - - io.springfox - springfox-boot-starter - @@ -63,11 +63,25 @@ fastjson + + com.baomidou + mybatis-plus-jsqlparser + + + + javax.xml.bind + jaxb-api + + + org.glassfish.jaxb + jaxb-runtime + + - 8 - 8 + 17 + 17 UTF-8 diff --git a/common/src/main/java/net/carbon/bean/PageRequest.java b/common/src/main/java/net/carbon/bean/PageRequest.java new file mode 100644 index 0000000..9c01324 --- /dev/null +++ b/common/src/main/java/net/carbon/bean/PageRequest.java @@ -0,0 +1,24 @@ +package net.carbon.bean; + +import lombok.Data; +import lombok.Setter; + +@Setter +public class PageRequest { + private Long pageNo = 1L; + private Long pageSize = 10L; + + public Long getPageNo() { + if (pageNo == null || pageNo < 1) { + return 1L; + } + return pageNo; + } + + public Long getPageSize() { + if (pageSize == null || pageSize < 1 || pageSize > Long.MAX_VALUE) { + return 10L; + } + return pageSize; + } +} diff --git a/common/src/main/java/net/carbon/bean/PageResponse.java b/common/src/main/java/net/carbon/bean/PageResponse.java new file mode 100644 index 0000000..1c1b860 --- /dev/null +++ b/common/src/main/java/net/carbon/bean/PageResponse.java @@ -0,0 +1,58 @@ +package net.carbon.bean; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Getter; +import lombok.Setter; + +import java.util.Collections; +import java.util.List; + +@Setter +@Getter +@JsonFormat +public class PageResponse { + private Long pageNo = 1L; + private Long pageSize = 10L; + private Long total = 0L; + private Long totalPages = 0L; + private List records = Collections.emptyList(); + private Long start = 0L; + private Long end = 0L; + + public PageResponse() { + } + + public void setRecords(List records) { + this.records = records; + if (records != null && records.size() > 0 && this.total == 0) { + setTotal(Long.valueOf(records.size())); + } + } + + public void setCurrent(Long pageNo) { + if (pageNo != null && pageNo > 0) { + this.pageNo = pageNo; + } + } + + public void setPageSize(Long pageSize) { + if (pageSize != null && pageSize > 0) { + this.pageSize = pageSize; + } + } + + public void setTotal(Long total) { + this.total = total; + if (total == -1) { + this.pageNo = 1L; + return; + } + if (total > 0) { + this.totalPages = (total / pageSize) + (total % pageSize == 0 ? 0 : 1); + } else { + this.totalPages = 0L; + } + this.start = (this.pageNo > 0) ? (this.pageNo - 1) * this.pageSize : 0; + this.end = (this.start - 1 + this.pageSize * (this.pageNo > 0 ? 1 : 0)); + } +} diff --git a/common/src/main/java/net/carbon/config/MybatisPlusPageConfig.java b/common/src/main/java/net/carbon/config/MybatisPlusPageConfig.java index 4333bdb..68e0a13 100644 --- a/common/src/main/java/net/carbon/config/MybatisPlusPageConfig.java +++ b/common/src/main/java/net/carbon/config/MybatisPlusPageConfig.java @@ -27,4 +27,5 @@ public class MybatisPlusPageConfig { return interceptor; } + } \ No newline at end of file diff --git a/common/src/main/java/net/carbon/config/SwaggerConfig.java b/common/src/main/java/net/carbon/config/SwaggerConfig.java new file mode 100644 index 0000000..06e496e --- /dev/null +++ b/common/src/main/java/net/carbon/config/SwaggerConfig.java @@ -0,0 +1,35 @@ +package net.carbon.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.ExternalDocumentation; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.media.StringSchema; +import io.swagger.v3.oas.models.parameters.HeaderParameter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class SwaggerConfig implements WebMvcConfigurer { + + @Value("${spring.application.name}") + private String applicationName; + + @Bean + public OpenAPI springShopOpenAPI() { + return new OpenAPI() + .components(new Components() + .addParameters("token", new HeaderParameter().description("请填写Token").schema(new StringSchema())) + .addParameters("adminID", new HeaderParameter().description("请填写用户ID").schema(new StringSchema()))) + .info(new Info().title(applicationName) + .description("Knife4j增强文档") + .version("v2.0") + .license(new License().name("Apache 2.0").url("http://springdoc.org"))) + .externalDocs(new ExternalDocumentation() + .description("二饭快速开发框架") + .url("https://gitee.com/StandFast")); + } +} \ No newline at end of file diff --git a/common/src/main/java/net/carbon/config/SwaggerConfiguration.java b/common/src/main/java/net/carbon/config/SwaggerConfiguration.java deleted file mode 100644 index 3647f8a..0000000 --- a/common/src/main/java/net/carbon/config/SwaggerConfiguration.java +++ /dev/null @@ -1,118 +0,0 @@ -package net.carbon.config; - - -import lombok.Data; -import org.springframework.context.annotation.Bean; -import org.springframework.http.HttpMethod; -import org.springframework.stereotype.Component; -import springfox.documentation.builders.*; -import springfox.documentation.oas.annotations.EnableOpenApi; -import springfox.documentation.schema.ScalarType; -import springfox.documentation.service.*; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; - -import java.util.ArrayList; -import java.util.List; - -@Component -@EnableOpenApi -@Data -public class SwaggerConfiguration { - - - /** - * C端文档 - * @return - */ - @Bean - public Docket webApiDoc() { - - - return new Docket(DocumentationType.OAS_30) - .groupName("用户端接口文档") - .pathMapping("/") - // 定义是否开启swagger,false为关闭,可以通过变量控制,线上关闭 - .enable(true) - //配置api文档元信息 - .apiInfo(apiInfo()) - // 选择哪些接口作为swagger的doc发布 - .select() - .apis(RequestHandlerSelectors.basePackage("net.carbon")) - //正则匹配请求路径,并分配至当前分组 - .paths(PathSelectors.ant("/api/**")) - .build() - //新版swagger3.0配置 - .globalRequestParameters(getGlobalRequestParameters()) - .globalResponses(HttpMethod.GET, getGlobalResponseMessage()) - .globalResponses(HttpMethod.POST, getGlobalResponseMessage()); - } - - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("碳中和") - .description("接口文档") - .contact(new Contact("jieyuu", "https://106.52.88.120", "645634619@qq.com")) - .version("12") - .build(); - } - - /** - * 管理端文档 - * @return - */ - @Bean - public Docket adminApiDoc() { - return new Docket(DocumentationType.OAS_30) - .groupName("管理端接口文档") - .pathMapping("/") - // 定义是否开启swagger,false为关闭,可以通过变量控制,线上关闭 - .enable(true) - //配置api文档元信息 - .apiInfo(apiInfo()) - // 选择哪些接口作为swagger的doc发布 - .select() - .apis(RequestHandlerSelectors.basePackage("net.jieyuu")) - //正则匹配请求路径,并分配至当前分组 - .paths(PathSelectors.ant("/admin/**")) - .build(); - } - - /** - * 生成全局通用参数, 支持配置多个响应参数 - * @return - */ - private List getGlobalRequestParameters() { - List parameters = new ArrayList<>(); - parameters.add(new RequestParameterBuilder() - .name("token") - .description("登录令牌") - .in(ParameterType.HEADER) - .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))) - .required(false) - .build()); - -// parameters.add(new RequestParameterBuilder() -// .name("version") -// .description("版本号") -// .required(true) -// .in(ParameterType.HEADER) -// .query(q -> q.model(m -> m.scalarModel(ScalarType.STRING))) -// .required(false) -// .build()); - return parameters; - } - - /** - * 生成通用响应信息 - * - * @return - */ - private List getGlobalResponseMessage() { - List responseList = new ArrayList<>(); - responseList.add(new ResponseBuilder().code("4xx").description("请求错误,根据code和msg检查").build()); - return responseList; - } - -} \ No newline at end of file diff --git a/common/src/main/java/net/carbon/config/SwaggerOpenApiConfig.java b/common/src/main/java/net/carbon/config/SwaggerOpenApiConfig.java new file mode 100644 index 0000000..22f3cca --- /dev/null +++ b/common/src/main/java/net/carbon/config/SwaggerOpenApiConfig.java @@ -0,0 +1,39 @@ +package net.carbon.config; + +import io.swagger.v3.oas.annotations.ExternalDocumentation; +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.info.Contact; +import io.swagger.v3.oas.annotations.info.Info; +import io.swagger.v3.oas.annotations.info.License; +import io.swagger.v3.oas.annotations.servers.Server; +import org.springframework.boot.SpringBootConfiguration; + +/** + * @author jieyuu + **/ +//@SpringBootConfiguration +//@OpenAPIDefinition( +// // ## API的基本信息,包括标题、版本号、描述、联系人等 +// info = @Info( +// title = "双碳项目接口文档", // Api接口文档标题(必填) +// description = "用于双碳项目接口开发文档", // Api接口文档描述 +// version = "1.0", // Api接口版本 +// termsOfService = "https://example.com/", // Api接口的服务条款地址 +// contact = @Contact( +// name = "蚂蚁小哥", // 作者名称 +// email = "xiaofeng@qq.com", // 作者邮箱 +// url = "https://www.cnblogs.com/antLaddie/" // 介绍作者的URL地址 +// ), +// license = @License( // 设置联系人信息 +// name = "Apache 2.0", // 授权名称 +// url = "https://www.apache.org/licenses/LICENSE-2.0.html" // 授权信息 +// ) +// ), +// // ## 表示服务器地址或者URL模板列表,多个服务地址随时切换(只不过是有多台IP有当前的服务API) +// servers = { +// @Server(url = "http://192.168.2.235/demo/", description = "本地服务器一服务"), +// @Server(url = "http://192.168.2.236/demo/", description = "本地服务器二服务"), +// }, +// externalDocs = @ExternalDocumentation(description = "更多内容请查看该链接", url = "xxx")) +//public class SwaggerOpenApiConfig { +//} \ No newline at end of file diff --git a/common/src/main/java/net/carbon/interceptor/LoginInterceptor.java b/common/src/main/java/net/carbon/interceptor/LoginInterceptor.java index 91e3ee7..846902c 100644 --- a/common/src/main/java/net/carbon/interceptor/LoginInterceptor.java +++ b/common/src/main/java/net/carbon/interceptor/LoginInterceptor.java @@ -12,8 +12,8 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; @Slf4j @@ -40,8 +40,6 @@ public class LoginInterceptor implements HandlerInterceptor { long userId = Long.valueOf(claims.get("id").toString()); String name = (String) claims.get("username"); -// LoginUser loginUser = new LoginUser(); - LoginUser loginUser = LoginUser.builder() .id(userId) .username(name) diff --git a/common/src/main/java/net/carbon/model/LoginUser.java b/common/src/main/java/net/carbon/model/LoginUser.java index dc0d3fe..c5f48e7 100644 --- a/common/src/main/java/net/carbon/model/LoginUser.java +++ b/common/src/main/java/net/carbon/model/LoginUser.java @@ -1,23 +1,21 @@ package net.carbon.model; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDateTime; + @Data @AllArgsConstructor @NoArgsConstructor @Builder public class LoginUser { - /** - * 主键 - */ private Long id; - /** - * 名称 - */ private String username; - } diff --git a/common/src/main/java/net/carbon/utils/CommonUtil.java b/common/src/main/java/net/carbon/utils/CommonUtil.java index c5abf48..0f7e160 100644 --- a/common/src/main/java/net/carbon/utils/CommonUtil.java +++ b/common/src/main/java/net/carbon/utils/CommonUtil.java @@ -3,8 +3,8 @@ package net.carbon.utils; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.net.InetAddress; diff --git a/pom.xml b/pom.xml index f3e2ca8..11993f8 100644 --- a/pom.xml +++ b/pom.xml @@ -15,20 +15,23 @@ - 1.8 - 8 - 8 + 17 + 17 + 17 UTF-8 - 2.3.3.RELEASE - 3.4.0 - 1.18.16 + 3.3.0 + 3.5.10.1 + 1.18.24 3.9 1.15 3.0.0 0.7.0 2.0 1.2.62 + 8.0.33 + 6.0.0 + 2.3.1 true @@ -51,10 +54,23 @@ com.baomidou - mybatis-plus-boot-starter - ${mybatisplus.boot.starter.version} + mybatis-plus-spring-boot3-starter + ${mybatisplus.boot3.starter.version} + + com.baomidou + mybatis-plus-jsqlparser + ${mybatisplus.boot3.starter.version} + + + + com.baomidou + mybatis-plus-generator + ${mybatisplus.boot3.starter.version} + + + @@ -80,11 +96,11 @@ - - io.springfox - springfox-boot-starter - ${springfox.boot.starter.version} - + + + + + io.jsonwebtoken @@ -112,11 +128,33 @@ ${fastjson.version} - - io.springfox - springfox-boot-starter - ${springfox.boot.starter.version} + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + 4.1.0 + + + + mysql + mysql-connector-java + ${mysql.connection.version} + + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet.version} + + + + javax.xml.bind + jaxb-api + ${jaxb.version} + + + org.glassfish.jaxb + jaxb-runtime + ${jaxb.version} @@ -136,6 +174,8 @@ fail + + diff --git a/server/pom.xml b/server/pom.xml index da31d9a..b46c191 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -13,8 +13,8 @@ jar - 8 - 8 + 17 + 17 UTF-8 @@ -37,7 +37,11 @@ com.baomidou mybatis-plus-generator - 3.4.1 + + + + com.baomidou + mybatis-plus-jsqlparser @@ -51,6 +55,16 @@ mysql-connector-java + + com.github.xiaoymin + knife4j-openapi3-jakarta-spring-boot-starter + + + + org.freemarker + freemarker + 2.3.31 + @@ -72,7 +86,16 @@ + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + - \ No newline at end of file diff --git a/server/src/main/java/net/carbon/config/InterceptorConfig.java b/server/src/main/java/net/carbon/config/InterceptorConfig.java index 808e23a..828eacd 100644 --- a/server/src/main/java/net/carbon/config/InterceptorConfig.java +++ b/server/src/main/java/net/carbon/config/InterceptorConfig.java @@ -17,7 +17,7 @@ public class InterceptorConfig implements WebMvcConfigurer { //拦截的路径 .addPathPatterns("/api/user/*/**", "/api/carbon/*/**") //放行的路径 - .excludePathPatterns("/api/user/*/register", "/api/user/*/login"); + .excludePathPatterns("/api/user/*/register", "/api/user/*/login", "api/label/*/**"); WebMvcConfigurer.super.addInterceptors(registry); } diff --git a/server/src/main/java/net/carbon/controller/EconomicsController.java b/server/src/main/java/net/carbon/controller/EconomicsController.java new file mode 100644 index 0000000..b35c319 --- /dev/null +++ b/server/src/main/java/net/carbon/controller/EconomicsController.java @@ -0,0 +1,118 @@ +package net.carbon.controller; + +import net.carbon.bean.PageResponse; +import net.carbon.model.request.EconomicsUpdateRequest; +import net.carbon.model.vo.EconomicsVO; +import net.carbon.result.Result; +import net.carbon.service.EconomicsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * (Economics)表控制层 + * + * @author makejava + * @since 2025-02-21 13:44:09 + */ +@RestController +@RequestMapping("/api/economics/v1/") +public class EconomicsController { + + /** + * 分页查询所有数据 + * + * @param page 分页对象 + * @param economics 查询实体 + * @return 所有数据 + */ +// @GetMapping +// public Result selectAll(Page page, Economics economics) { +// return success(this.economicsService.page(page, new QueryWrapper<>(economics))); +// } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ +// @GetMapping("{id}") +// public R selectOne(@PathVariable Serializable id) { +// return success(this.economicsService.getById(id)); +// } + + /** + * 新增数据 + * + * @param economics 实体对象 + * @return 新增结果 + */ +// @PostMapping +// public R insert(@RequestBody Economics economics) { +// return success(this.economicsService.save(economics)); +// } + + /** + * 修改数据 + * + * @param economics 实体对象 + * @return 修改结果 + */ +// @PutMapping +// public R update(@RequestBody Economics economics) { +// return success(this.economicsService.updateById(economics)); +// } + + /** + * 删除数据 + * + * @param idList 主键结合 + * @return 删除结果 + */ +// @DeleteMapping +// public R delete(@RequestParam("idList") List idList) { +// return success(this.economicsService.removeByIds(idList)); +// } + + + @Autowired + private EconomicsService economicsService; + + // 获取所有指标 + @GetMapping("/list") + public Result> getAllIndicators(@RequestParam("pageSize") Long pageSize, @RequestParam("current") Long current) { + return Result.success(economicsService.getPage(pageSize, current)); + } + + // 新增指标 +// @PostMapping("/create") +// public Result createIndicator(@RequestBody EconomicsRequest economicsRequest) { +// +// boolean save = economicsService.save(economicsRequest); +// if (save) { +// return Result.success(); +// } +// return Result.error("创建失败"); +// } + + // 生成编辑接口 + @PostMapping("/update") + public Result updateIndicator(@RequestBody EconomicsUpdateRequest economicsUpdateReq) { + int row = economicsService.updateById(economicsUpdateReq); + if (row > 0) { + return Result.success(); + } + return Result.error("编辑失败"); + } + + // 剔除指标 + @DeleteMapping("/delete/{id}") + public Result delete(@PathVariable("id") Long id) { + int row = economicsService.delete(id); + if (row > 0) { + return Result.success(); + } + return Result.error("删除失败"); + } +} + diff --git a/server/src/main/java/net/carbon/controller/LabelController.java b/server/src/main/java/net/carbon/controller/LabelController.java new file mode 100644 index 0000000..9776aae --- /dev/null +++ b/server/src/main/java/net/carbon/controller/LabelController.java @@ -0,0 +1,71 @@ +package net.carbon.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import net.carbon.bean.PageResponse; +import net.carbon.model.po.LabelDO; +import net.carbon.model.request.LabelUpdateRequest; +import net.carbon.model.vo.LabelVO; +import net.carbon.result.Result; +import net.carbon.service.LabelService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + *

+ * 碳排放-城市高质量发展指标体系-标签表 前端控制器 + *

+ * + * @author jieyuu + * @since 2025-02-19 + */ +@RestController +@RequestMapping("/api/label/v1") +public class LabelController { + @Autowired + private LabelService labelService; + + // 获取所有指标 + @GetMapping("/list") + public Result> getAllIndicators(@RequestParam("pageSize") Long pageSize, @RequestParam("current") Long current) { + return Result.success(labelService.getList(pageSize, current)); + } + +// // 新增指标 +// @PostMapping("/create") +// public Result createIndicator(@RequestBody LabelDO label) { +// boolean save = labelService.save(label); +// if (save) { +// return Result.success(); +// } +// return Result.error("创建失败"); +// } + + // 生成编辑接口 + @PostMapping("/update") + public Result update(@RequestBody LabelUpdateRequest labelUpdateReq) { + int row = labelService.updateById(labelUpdateReq); + if (row > 0) { + return Result.success(); + } + return Result.error("修改失败"); + } + + // 剔除指标 + @DeleteMapping("/delete/{id}") + public Result delete(@PathVariable("id") Long id) { + int row = labelService.delete(id); + if (row > 0) { + return Result.success(); + } + return Result.error("删除失败"); + } + +} + diff --git a/server/src/main/java/net/carbon/controller/UserController.java b/server/src/main/java/net/carbon/controller/UserController.java index f570796..08246f9 100644 --- a/server/src/main/java/net/carbon/controller/UserController.java +++ b/server/src/main/java/net/carbon/controller/UserController.java @@ -1,20 +1,14 @@ - - -// 用户登录demo package net.carbon.controller; +//import io.swagger.annotations.ApiParam; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import net.carbon.request.UserRegisterRequest; -import net.carbon.request.UserLoginRequest; +import net.carbon.model.vo.UserVO; +import net.carbon.model.request.UserRegisterRequest; +import net.carbon.model.request.UserLoginRequest; import net.carbon.service.UserService; import net.carbon.utils.JsonData; import org.springframework.beans.factory.annotation.Autowired; -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 org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/user/v1") @@ -29,11 +23,8 @@ public class UserController { * @param registerRequest * @return */ - @ApiOperation("用户注册") @PostMapping(value = "register") - public JsonData register( - @ApiParam(value = "用户注册对象", required = true) - @RequestBody UserRegisterRequest registerRequest) { + public JsonData register(@RequestBody UserRegisterRequest registerRequest) { JsonData jsonData = userService.register(registerRequest); return jsonData; @@ -46,12 +37,24 @@ public class UserController { * @return */ - @ApiOperation("用户登录") +// @ApiOperation("用户登录") @PostMapping("login") - public JsonData userLogin(@ApiParam("用户登陆对象") @RequestBody UserLoginRequest loginRequest) { + public JsonData userLogin(@RequestBody UserLoginRequest loginRequest) { JsonData jsonData = userService.login(loginRequest); return jsonData; } + @PostMapping("logout") + public JsonData logout() { + // todo jwt退出登录 + return JsonData.buildSuccess("退出成功"); + } + + @GetMapping("userinfo") + public JsonData getUserInfo() { + UserVO userinfo = userService.userinfo(); + return JsonData.buildSuccess(userinfo); + } + } \ No newline at end of file diff --git a/server/src/main/java/net/carbon/mapper/CarbonEmissionMapper.java b/server/src/main/java/net/carbon/mapper/CarbonEmissionMapper.java index d43c724..01e67b2 100644 --- a/server/src/main/java/net/carbon/mapper/CarbonEmissionMapper.java +++ b/server/src/main/java/net/carbon/mapper/CarbonEmissionMapper.java @@ -1,7 +1,8 @@ package net.carbon.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.carbon.model.CarbonEmissionDO; +import net.carbon.model.po.CarbonEmissionDO; +import org.apache.ibatis.annotations.Mapper; /** *

@@ -11,6 +12,7 @@ import net.carbon.model.CarbonEmissionDO; * @author jieyuu * @since 2024-12-29 */ +@Mapper public interface CarbonEmissionMapper extends BaseMapper { } diff --git a/server/src/main/java/net/carbon/mapper/EconomicsMapper.java b/server/src/main/java/net/carbon/mapper/EconomicsMapper.java new file mode 100644 index 0000000..79eb0c0 --- /dev/null +++ b/server/src/main/java/net/carbon/mapper/EconomicsMapper.java @@ -0,0 +1,20 @@ +package net.carbon.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import net.carbon.model.po.EconomicsDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + *

+ * Mapper 接口 + *

+ * + * @author jieyuu + * @since 2025-02-21 + */ +@Mapper +public interface EconomicsMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/server/src/main/java/net/carbon/mapper/LabelMapper.java b/server/src/main/java/net/carbon/mapper/LabelMapper.java new file mode 100644 index 0000000..84d2c53 --- /dev/null +++ b/server/src/main/java/net/carbon/mapper/LabelMapper.java @@ -0,0 +1,18 @@ +package net.carbon.mapper; + +import net.carbon.model.po.LabelDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 碳排放-城市高质量发展指标体系-标签表 Mapper 接口 + *

+ * + * @author jieyuu + * @since 2025-02-19 + */ +@Mapper +public interface LabelMapper extends BaseMapper { + +} diff --git a/server/src/main/java/net/carbon/mapper/UserMapper.java b/server/src/main/java/net/carbon/mapper/UserMapper.java index 615066a..b2c31f5 100644 --- a/server/src/main/java/net/carbon/mapper/UserMapper.java +++ b/server/src/main/java/net/carbon/mapper/UserMapper.java @@ -1,7 +1,8 @@ package net.carbon.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import net.carbon.model.UserDO; +import net.carbon.model.po.UserDO; +import org.apache.ibatis.annotations.Mapper; /** @@ -12,6 +13,7 @@ import net.carbon.model.UserDO; * @author jieyuu * @since 2024-11-23 */ +@Mapper public interface UserMapper extends BaseMapper { } diff --git a/server/src/main/java/net/carbon/model/UserDO.java b/server/src/main/java/net/carbon/model/UserDO.java deleted file mode 100644 index 310a22b..0000000 --- a/server/src/main/java/net/carbon/model/UserDO.java +++ /dev/null @@ -1,31 +0,0 @@ -package net.carbon.model; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.io.Serializable; - -/** - *

- * - *

- * - * @author jieyuu - * @since 2024-11-23 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("user") -public class UserDO implements Serializable { - - private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.AUTO) - private Long id; - - private String username; - - private String password; -} diff --git a/server/src/main/java/net/carbon/model/CarbonEmissionDO.java b/server/src/main/java/net/carbon/model/po/CarbonEmissionDO.java similarity index 96% rename from server/src/main/java/net/carbon/model/CarbonEmissionDO.java rename to server/src/main/java/net/carbon/model/po/CarbonEmissionDO.java index 0d9e62c..342dae7 100644 --- a/server/src/main/java/net/carbon/model/CarbonEmissionDO.java +++ b/server/src/main/java/net/carbon/model/po/CarbonEmissionDO.java @@ -1,4 +1,4 @@ -package net.carbon.model; +package net.carbon.model.po; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -25,7 +25,7 @@ public class CarbonEmissionDO implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) - private Integer id; + private Long id; private String city; diff --git a/server/src/main/java/net/carbon/model/po/EconomicsDO.java b/server/src/main/java/net/carbon/model/po/EconomicsDO.java new file mode 100644 index 0000000..3c9b609 --- /dev/null +++ b/server/src/main/java/net/carbon/model/po/EconomicsDO.java @@ -0,0 +1,65 @@ +package net.carbon.model.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author jieyuu + * @since 2025-02-21 + */ +@Getter +@Setter +@ToString +@TableName("economics") +public class EconomicsDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableField("id") + private Long id; + + /** + * 项目名称 + */ + @TableField("name") + private String name; + + /** + * 指标单位 + */ + @TableField("unit") + private String unit; + + /** + * 数据 + */ + @TableField("data") + private Double data; + + /** + * 指标属性 + */ + @TableField("attribute") + private String attribute; + + /** + * 0代表是系统数据不能删除,1代表是其他数据,可以删除 + */ + @TableField("is_system_date") + private Integer isSystemDate; + + /** + * 逻辑删除标记(默认0,删除1) + */ + @TableField("is_delete") + private Byte isDelete; +} diff --git a/server/src/main/java/net/carbon/model/po/LabelDO.java b/server/src/main/java/net/carbon/model/po/LabelDO.java new file mode 100644 index 0000000..8357d8b --- /dev/null +++ b/server/src/main/java/net/carbon/model/po/LabelDO.java @@ -0,0 +1,66 @@ +package net.carbon.model.po; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; + +import java.io.Serializable; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 碳排放-城市高质量发展指标体系-标签表 + *

+ * + * @author jieyuu + * @since 2025-02-19 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("label") +public class LabelDO implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 指标名称 + */ + @TableField("name") + private String name; + + /** + * 单位 + */ + @TableField("unit") + private String unit; + + /** + * 数据值 + */ + @TableField("data_value") + private BigDecimal dataValue; + + /** + * 指数属性 + */ + @TableField("attribute") + private String attribute; + + /** + * 是否剔除(0-是系统数据不能删除,1-不是系统数据,可以删除) + */ + @TableField("is_system_date") + private Integer isSystemDate; + + /** + * 逻辑删除标记 + */ + @TableField("is_delete") + @TableLogic(value = "0", delval = "1") + private Integer isDeleted; +} diff --git a/server/src/main/java/net/carbon/model/po/UserDO.java b/server/src/main/java/net/carbon/model/po/UserDO.java new file mode 100644 index 0000000..88d5679 --- /dev/null +++ b/server/src/main/java/net/carbon/model/po/UserDO.java @@ -0,0 +1,88 @@ +package net.carbon.model.po; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + *

+ * + *

+ * + * @author jieyuu + * @since 2024-11-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("user") +public class UserDO implements Serializable { + + private static final long serialVersionUID = 1L; + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @TableField("username") + private String username; + + @TableField("password") + private String password; + + /** + * 用户照片 + */ + @TableField("avatar") + private String avatar; + + /** + * 用户角色,1代表管理员,2代表普通用户 + */ + @TableField("role") + private Integer role; + + /** + * 描述 + */ + @TableField("description") + private String description; + + /** + * 用户的名字 + */ + @TableField("name") + private String name; + + /** + * 用户的电话号码 + */ + @TableField("phone") + private String phone; + + /** + * 用户地址 + */ + @TableField("address") + private String address; + + /** + * 用户创建时间 + */ + @TableField("creationTime") + private LocalDateTime creationTime; + + /** + * 用户更新时间 + */ + @TableField("updateTime") + private LocalDateTime updateTime; + + /** + * 逻辑删除标记 + */ + @TableField("is_delete") + @TableLogic(value = "0", delval = "1") + private Byte isDelete; +} diff --git a/server/src/main/java/net/carbon/model/request/EconomicsUpdateRequest.java b/server/src/main/java/net/carbon/model/request/EconomicsUpdateRequest.java new file mode 100644 index 0000000..df8941e --- /dev/null +++ b/server/src/main/java/net/carbon/model/request/EconomicsUpdateRequest.java @@ -0,0 +1,18 @@ +package net.carbon.model.request; + + +import lombok.Data; + +@Data +public class EconomicsUpdateRequest { + private Long id; + private String name; + + private String unit; + + private Double data; + + private String attribute; + + private Integer isSystemDate; +} diff --git a/server/src/main/java/net/carbon/model/request/LabelUpdateRequest.java b/server/src/main/java/net/carbon/model/request/LabelUpdateRequest.java new file mode 100644 index 0000000..f133d43 --- /dev/null +++ b/server/src/main/java/net/carbon/model/request/LabelUpdateRequest.java @@ -0,0 +1,37 @@ +package net.carbon.model.request; + +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +public class LabelUpdateRequest { + + private Long id; + /** + * 指标名称 + */ + private String name; + + /** + * 单位 + */ + private String unit; + + /** + * 数据值 + */ + private BigDecimal dataValue; + + /** + * 指数属性 + */ + private String attribute; + + /** + * 是否剔除(0-是系统数据不能删除,1-不是系统数据,可以删除) + */ + private Integer isSystemDate; + +} diff --git a/server/src/main/java/net/carbon/model/request/UserLoginRequest.java b/server/src/main/java/net/carbon/model/request/UserLoginRequest.java new file mode 100644 index 0000000..ab4c1ef --- /dev/null +++ b/server/src/main/java/net/carbon/model/request/UserLoginRequest.java @@ -0,0 +1,20 @@ +package net.carbon.model.request; + +//import io.swagger.annotations.ApiModel; +//import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +//@ApiModel(value = "登录对象", description = "用户登录请求对象") +@AllArgsConstructor +@NoArgsConstructor +public class UserLoginRequest { + +// @ApiModelProperty(value = "用户名", example = "jieyuu") + private String username; + +// @ApiModelProperty(value = "密码", example = "123456") + private String password; +} diff --git a/server/src/main/java/net/carbon/model/request/UserRegisterRequest.java b/server/src/main/java/net/carbon/model/request/UserRegisterRequest.java new file mode 100644 index 0000000..5d721f2 --- /dev/null +++ b/server/src/main/java/net/carbon/model/request/UserRegisterRequest.java @@ -0,0 +1,14 @@ +package net.carbon.model.request; + +//import io.swagger.annotations.ApiModel; +//import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserRegisterRequest { + + private String username; + + private String password; + +} diff --git a/server/src/main/java/net/carbon/model/vo/EconomicsVO.java b/server/src/main/java/net/carbon/model/vo/EconomicsVO.java new file mode 100644 index 0000000..a384ead --- /dev/null +++ b/server/src/main/java/net/carbon/model/vo/EconomicsVO.java @@ -0,0 +1,35 @@ +package net.carbon.model.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author jieyuu + * @since 2025-02-21 + */ +@Getter +@Setter +public class EconomicsVO implements Serializable { + private Long id; + + private String name; + + private String unit; + + private Double data; + + private String attribute; + + private Integer isSystemDate; + + private Byte isDelete; +} diff --git a/server/src/main/java/net/carbon/model/vo/LabelVO.java b/server/src/main/java/net/carbon/model/vo/LabelVO.java new file mode 100644 index 0000000..2954328 --- /dev/null +++ b/server/src/main/java/net/carbon/model/vo/LabelVO.java @@ -0,0 +1,39 @@ +package net.carbon.model.vo; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class LabelVO { + private Long id; + + /** + * 指标名称 + */ + private String name; + + /** + * 单位 + */ + private String unit; + + /** + * 数据值 + */ + private BigDecimal dataValue; + + /** + * 指数属性 + */ + private String attribute; + + /** + * 是否剔除(0-是系统数据不能删除,1-不是系统数据,可以删除) + */ + private Integer isSystemDate; +} diff --git a/server/src/main/java/net/carbon/model/vo/UserVO.java b/server/src/main/java/net/carbon/model/vo/UserVO.java new file mode 100644 index 0000000..272db3a --- /dev/null +++ b/server/src/main/java/net/carbon/model/vo/UserVO.java @@ -0,0 +1,45 @@ +package net.carbon.model.vo; + + +import lombok.Data; + +@Data +public class UserVO { + private Long id; + + + private String username; + + + private String password; + + /** + * 用户照片 + */ + private String avatar; + + /** + * 用户角色,1代表管理员,2代表普通用户 + */ + private Integer role; + + /** + * 描述 + */ + private String description; + + /** + * 用户的名字 + */ + private String name; + + /** + * 用户的电话号码 + */ + private String phone; + + /** + * 用户地址 + */ + private String address; +} diff --git a/server/src/main/java/net/carbon/request/UserLoginRequest.java b/server/src/main/java/net/carbon/request/UserLoginRequest.java deleted file mode 100644 index 1da367b..0000000 --- a/server/src/main/java/net/carbon/request/UserLoginRequest.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.carbon.request; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@ApiModel(value = "登录对象", description = "用户登录请求对象") -@AllArgsConstructor -@NoArgsConstructor -public class UserLoginRequest { - - @ApiModelProperty(value = "用户名", example = "jieyuu") - private String username; - - @ApiModelProperty(value = "密码", example = "123456") - private String password; -} diff --git a/server/src/main/java/net/carbon/request/UserRegisterRequest.java b/server/src/main/java/net/carbon/request/UserRegisterRequest.java deleted file mode 100644 index d285996..0000000 --- a/server/src/main/java/net/carbon/request/UserRegisterRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.carbon.request; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -@ApiModel(value = "用户注册实体类") -public class UserRegisterRequest { - - @ApiModelProperty(value = "用户名", example = "123456") - private String username; - - @ApiModelProperty(value = "密码", example = "123456") - private String password; - -} diff --git a/server/src/main/java/net/carbon/service/CarbonEmissionService.java b/server/src/main/java/net/carbon/service/CarbonEmissionService.java index de251c5..9a54b37 100644 --- a/server/src/main/java/net/carbon/service/CarbonEmissionService.java +++ b/server/src/main/java/net/carbon/service/CarbonEmissionService.java @@ -1,7 +1,7 @@ package net.carbon.service; import com.baomidou.mybatisplus.extension.service.IService; -import net.carbon.model.CarbonEmissionDO; +import net.carbon.model.po.CarbonEmissionDO; import net.carbon.vo.CarbonTimelyAlertVO; import net.carbon.vo.CarbonVO; @@ -16,7 +16,7 @@ import net.carbon.vo.CarbonVO; */ public interface CarbonEmissionService extends IService { - public CarbonTimelyAlertVO timelyAlert(String city); + CarbonTimelyAlertVO timelyAlert(String city); CarbonVO getCarbonEmissionData(String city); diff --git a/server/src/main/java/net/carbon/service/EconomicsService.java b/server/src/main/java/net/carbon/service/EconomicsService.java new file mode 100644 index 0000000..ec18d8f --- /dev/null +++ b/server/src/main/java/net/carbon/service/EconomicsService.java @@ -0,0 +1,24 @@ +package net.carbon.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import net.carbon.bean.PageResponse; +import net.carbon.model.po.EconomicsDO; +import net.carbon.model.request.EconomicsUpdateRequest; +import net.carbon.model.vo.EconomicsVO; + +/** + * (Economics)表服务接口 + * + * @author jieyuu + * @since 2025-02-21 13:37:17 + */ +public interface EconomicsService extends IService { + + PageResponse getPage(Long pageSize, Long current); + + Integer delete(Long id); + + Integer updateById(EconomicsUpdateRequest economicsUpdateReq); + +} + diff --git a/server/src/main/java/net/carbon/service/LabelService.java b/server/src/main/java/net/carbon/service/LabelService.java new file mode 100644 index 0000000..6791d59 --- /dev/null +++ b/server/src/main/java/net/carbon/service/LabelService.java @@ -0,0 +1,28 @@ +package net.carbon.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import net.carbon.bean.PageResponse; +import net.carbon.model.po.LabelDO; +import net.carbon.model.request.LabelUpdateRequest; +import net.carbon.model.vo.LabelVO; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 碳排放-城市高质量发展指标体系-标签表 服务类 + *

+ * + * @author jieyuu + * @since 2025-02-19 + */ +public interface LabelService extends IService { + + PageResponse getList(Long pageSize, Long current); + + int delete(Long id); + + int updateById(LabelUpdateRequest labelUpdateReq); + +} diff --git a/server/src/main/java/net/carbon/service/UserService.java b/server/src/main/java/net/carbon/service/UserService.java index a0e911c..43ad3fd 100644 --- a/server/src/main/java/net/carbon/service/UserService.java +++ b/server/src/main/java/net/carbon/service/UserService.java @@ -1,10 +1,11 @@ package net.carbon.service; import com.baomidou.mybatisplus.extension.service.IService; -import net.carbon.model.UserDO; +import net.carbon.model.po.UserDO; -import net.carbon.request.UserRegisterRequest; -import net.carbon.request.UserLoginRequest; +import net.carbon.model.vo.UserVO; +import net.carbon.model.request.UserRegisterRequest; +import net.carbon.model.request.UserLoginRequest; import net.carbon.utils.JsonData; @@ -33,4 +34,6 @@ public interface UserService extends IService { * @return */ JsonData login(UserLoginRequest loginRequest); + + UserVO userinfo(); } diff --git a/server/src/main/java/net/carbon/service/impl/CarbonEmissionServiceImpl.java b/server/src/main/java/net/carbon/service/impl/CarbonEmissionServiceImpl.java index 79959b0..875dfb2 100644 --- a/server/src/main/java/net/carbon/service/impl/CarbonEmissionServiceImpl.java +++ b/server/src/main/java/net/carbon/service/impl/CarbonEmissionServiceImpl.java @@ -1,10 +1,9 @@ package net.carbon.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.carbon.mapper.CarbonEmissionMapper; -import net.carbon.model.CarbonEmissionDO; +import net.carbon.model.po.CarbonEmissionDO; import net.carbon.service.CarbonEmissionService; diff --git a/server/src/main/java/net/carbon/service/impl/EconomicsServiceImpl.java b/server/src/main/java/net/carbon/service/impl/EconomicsServiceImpl.java new file mode 100644 index 0000000..349a8c7 --- /dev/null +++ b/server/src/main/java/net/carbon/service/impl/EconomicsServiceImpl.java @@ -0,0 +1,74 @@ +package net.carbon.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import net.carbon.bean.PageResponse; +import net.carbon.mapper.EconomicsMapper; +import net.carbon.model.po.EconomicsDO; +import net.carbon.model.po.LabelDO; +import net.carbon.model.request.EconomicsUpdateRequest; +import net.carbon.model.vo.EconomicsVO; +import net.carbon.model.vo.LabelVO; +import net.carbon.service.EconomicsService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * (Economics)表服务实现类 + * + * @author jieyuu + * @since 2025-02-21 13:37:20 + */ +@Service +public class EconomicsServiceImpl extends ServiceImpl implements EconomicsService { + + @Autowired + private EconomicsMapper economicsMapper; + + @Override + public PageResponse getPage(Long pageSize, Long current) { + + Page pageInfo = new Page<>(current, pageSize); + IPage economicsDOPage = economicsMapper.selectPage(pageInfo, new LambdaQueryWrapper()); + + PageResponse pageResponse = new PageResponse<>(); + + List economicsVOS = economicsDOPage.getRecords().stream().map(obj -> { + EconomicsVO economicsVO = new EconomicsVO(); + BeanUtils.copyProperties(obj, economicsVO); + return economicsVO; + }).collect(Collectors.toList()); + + pageResponse.setPageSize(economicsDOPage.getSize()); + pageResponse.setCurrent(economicsDOPage.getCurrent()); + pageResponse.setTotal(economicsDOPage.getTotal()); + pageResponse.setRecords(economicsVOS); + return pageResponse; + } + + @Override + public Integer delete(Long id) { + + int row = economicsMapper.deleteById(id); + return row; + } + + @Override + public Integer updateById(EconomicsUpdateRequest economicsUpdateReq) { + EconomicsDO economicsDO = new EconomicsDO(); + BeanUtils.copyProperties(economicsUpdateReq, economicsDO); + // 设置为0 + economicsDO.setIsDelete((byte) 0); + int row = economicsMapper.updateById(economicsDO); + return row; + } +} + diff --git a/server/src/main/java/net/carbon/service/impl/LabelServiceImpl.java b/server/src/main/java/net/carbon/service/impl/LabelServiceImpl.java new file mode 100644 index 0000000..b0dafcd --- /dev/null +++ b/server/src/main/java/net/carbon/service/impl/LabelServiceImpl.java @@ -0,0 +1,76 @@ +package net.carbon.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.annotation.Resource; +import net.carbon.bean.PageResponse; +import net.carbon.mapper.LabelMapper; +import net.carbon.model.po.LabelDO; +import net.carbon.model.request.LabelUpdateRequest; +import net.carbon.model.vo.LabelVO; +import net.carbon.service.LabelService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 碳排放-城市高质量发展指标体系-标签表 服务实现类 + *

+ * + * @author jieyuu + * @since 2025-02-19 + */ +@Service +public class LabelServiceImpl extends ServiceImpl implements LabelService { + + @Autowired + private LabelMapper labelMapper; + + @Override + public PageResponse getList(Long pageSize, Long current) { + + Page pageInfo = new Page<>(current, pageSize); + IPage labelDOPage = labelMapper.selectPage(pageInfo, new LambdaQueryWrapper()); + + PageResponse pageResponse = new PageResponse<>(); + + List labelVOS = labelDOPage.getRecords().stream().map(obj -> { + LabelVO labelVO = new LabelVO(); + BeanUtils.copyProperties(obj, labelVO); + return labelVO; + }).collect(Collectors.toList()); + + pageResponse.setPageSize(labelDOPage.getSize()); + pageResponse.setCurrent(labelDOPage.getCurrent()); + pageResponse.setTotal(labelDOPage.getTotal()); + pageResponse.setRecords(labelVOS); + return pageResponse; + } + + @Override + public int delete(Long id) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LabelDO::getId, id); + return labelMapper.delete(queryWrapper); + } + + @Override + public int updateById(LabelUpdateRequest labelUpdateReq) { + LabelDO labelDO = new LabelDO(); + + BeanUtils.copyProperties(labelUpdateReq, labelDO); + labelDO.setIsDeleted(0); + + int row = labelMapper.updateById(labelDO); + return row; + } +} diff --git a/server/src/main/java/net/carbon/service/impl/UserServiceImpl.java b/server/src/main/java/net/carbon/service/impl/UserServiceImpl.java index 0d82257..a81c26e 100644 --- a/server/src/main/java/net/carbon/service/impl/UserServiceImpl.java +++ b/server/src/main/java/net/carbon/service/impl/UserServiceImpl.java @@ -1,22 +1,24 @@ package net.carbon.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import net.carbon.enums.BizCodeEnum; +import net.carbon.interceptor.LoginInterceptor; import net.carbon.mapper.UserMapper; import net.carbon.model.LoginUser; -import net.carbon.model.UserDO; +import net.carbon.model.po.UserDO; -import net.carbon.request.UserRegisterRequest; -import net.carbon.request.UserLoginRequest; +import net.carbon.model.vo.UserVO; +import net.carbon.model.request.UserRegisterRequest; +import net.carbon.model.request.UserLoginRequest; import net.carbon.service.UserService; import net.carbon.utils.CheckUtil; import net.carbon.utils.CommonUtil; import net.carbon.utils.JWTUtil; import net.carbon.utils.JsonData; -import org.apache.commons.codec.digest.Md5Crypt; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -92,12 +94,12 @@ public class UserServiceImpl extends ServiceImpl implements */ @Override public JsonData login(UserLoginRequest loginRequest) { - List userDOList = userMapper.selectList(new QueryWrapper().eq("username", loginRequest.getUsername())); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(UserDO::getUsername, loginRequest.getUsername()); - if (userDOList != null && userDOList.size() == 1) { - //已经注册 - UserDO userDO = userDOList.get(0); + UserDO userDO = userMapper.selectOne(queryWrapper); + if (userDO != null) { String cryptPwd = CommonUtil.MD5(loginRequest.getPassword()); if (cryptPwd.equals(userDO.getPassword())) { //登陆成功 @@ -119,4 +121,19 @@ public class UserServiceImpl extends ServiceImpl implements return JsonData.buildResult(BizCodeEnum.ACCOUNT_PWD_ERROR); } } + + @Override + public UserVO userinfo() { + + LoginUser loginUser = LoginInterceptor.threadLocal.get(); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(UserDO::getId, loginUser.getId()); + + UserDO userDO = userMapper.selectOne(queryWrapper); + UserVO userVO = new UserVO(); + BeanUtils.copyProperties(userDO, userVO); + + return userVO; + } } diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 2b8f03b..ba0216b 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -2,9 +2,11 @@ server: port: 8089 spring: + application: + name: 双碳 datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai + url: jdbc:mysql://106.52.88.120:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 59ae8683c59fead903132a8d440bd7d9fd4936529d1d6f45f9d41111d7537bdd @@ -17,3 +19,16 @@ mybatis-plus: logging: level: root: INFO + + +knife4j: + enable: true + setting: + language: zh_cn +springdoc: + api-docs: + path: /v3/api-docs + group-configs: + - group: 'default' + paths-to-match: '/**' + packages-to-scan: net.carbon \ No newline at end of file diff --git a/server/src/main/resources/mapper/CarbonEmissionMapper.xml b/server/src/main/resources/mapper/CarbonEmissionMapper.xml index 649a828..2bac339 100644 --- a/server/src/main/resources/mapper/CarbonEmissionMapper.xml +++ b/server/src/main/resources/mapper/CarbonEmissionMapper.xml @@ -3,7 +3,7 @@ - + diff --git a/server/src/main/resources/mapper/EconomicsMapper.xml b/server/src/main/resources/mapper/EconomicsMapper.xml new file mode 100644 index 0000000..0916d9e --- /dev/null +++ b/server/src/main/resources/mapper/EconomicsMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/server/src/main/resources/mapper/LabelMapper.xml b/server/src/main/resources/mapper/LabelMapper.xml new file mode 100644 index 0000000..5f30117 --- /dev/null +++ b/server/src/main/resources/mapper/LabelMapper.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/server/src/main/resources/mapper/UserMapper.xml b/server/src/main/resources/mapper/UserMapper.xml index 10f4150..9f79a86 100644 --- a/server/src/main/resources/mapper/UserMapper.xml +++ b/server/src/main/resources/mapper/UserMapper.xml @@ -3,16 +3,25 @@ - + + + + + + + + + + id - , username, password + , username, password, avatar, role, description, name, phone, address, creationTime, updateTime, is_delete diff --git a/server/src/test/java/biz/MyBatisPlusGenerator.java b/server/src/test/java/biz/MyBatisPlusGenerator.java index e4f5ffc..d016bea 100644 --- a/server/src/test/java/biz/MyBatisPlusGenerator.java +++ b/server/src/test/java/biz/MyBatisPlusGenerator.java @@ -1,91 +1,122 @@ -package net.jieyuu.db; +package biz; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.AutoGenerator; -import com.baomidou.mybatisplus.generator.config.DataSourceConfig; -import com.baomidou.mybatisplus.generator.config.GlobalConfig; -import com.baomidou.mybatisplus.generator.config.PackageConfig; -import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.FastAutoGenerator; +import com.baomidou.mybatisplus.generator.config.*; import com.baomidou.mybatisplus.generator.config.rules.DateType; +import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; + +import java.nio.file.Paths; +import java.sql.Types; +import java.util.Collections; public class MyBatisPlusGenerator { public static void main(String[] args) { - //1. 全局配置 - GlobalConfig config = new GlobalConfig(); - // 是否支持AR模式 - config.setActiveRecord(true) - // 作者 - .setAuthor("jieyuu") - // 生成路径,最好使用绝对路径,window路径是不一样的 - .setOutputDir("D:\\workspace\\project\\CarbonNeutrality\\server\\src\\main\\java") - // 文件覆盖 - .setFileOverride(true) - // 主键策略 - .setIdType(IdType.AUTO) +// //1. 全局配置 +// GlobalConfig config = new GlobalConfig(); +// // 是否支持AR模式 +// config.setActiveRecord(true) +// // 作者 +// .setAuthor("jieyuu") +// // 生成路径,最好使用绝对路径,window路径是不一样的 +// .setOutputDir("D:\\workspace\\project\\CarbonNeutrality\\server\\src\\test\\temp") +// // 文件覆盖 +// .setFileOverride(true) +// // 主键策略 +// .setIdType(IdType.AUTO) +// +// .setDateType(DateType.ONLY_DATE) +// // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的 +// .setServiceName("%sService") +// +// //实体类结尾名称 +// .setEntityName("%sDO") +// +// //生成基本的resultMap +// .setBaseResultMap(true) +// +// //不使用AR模式 +// .setActiveRecord(false) +// +// //生成基本的SQL片段 +// .setBaseColumnList(true); +// +// //2. 数据源配置 +// DataSourceConfig dsConfig = new DataSourceConfig(); +// // 设置数据库类型 +// dsConfig.setDbType(DbType.MYSQL) +// .setDriverName("com.mysql.cj.jdbc.Driver") +// .setUrl("jdbc:mysql://106.52.88.120:3306/demo?useSSL=false") +// .setUsername("root") +// .setPassword("59ae8683c59fead903132a8d440bd7d9fd4936529d1d6f45f9d41111d7537bdd"); +// +// //3. 策略配置globalConfiguration中 +// StrategyConfig stConfig = new StrategyConfig(); +// +// //全局大写命名 +// stConfig.setCapitalMode(true) +// // 数据库表映射到实体的命名策略 +// .setNaming(NamingStrategy.underline_to_camel) +// +// //使用lombok +// .setEntityLombokModel(true) +// +// //使用restcontroller注解 +// .setRestControllerStyle(true) +// +// // 生成的表, 支持多表一起生成,以数组形式填写 +// .setInclude("label"); +// +// //4. 包名策略配置 +// PackageConfig pkConfig = new PackageConfig(); +// pkConfig.setParent("net.carbon") +// .setMapper("mapper") +// .setService("service") +// .setController("controller") +// .setEntity("model") +// .setXml("mapper"); +// +// //5. 整合配置 +// AutoGenerator ag = new AutoGenerator(); +// ag.setGlobalConfig(config) +// .setDataSource(dsConfig) +// .setStrategy(stConfig) +// .setPackageInfo(pkConfig); +// +// //6. 执行操作 +// ag.execute(); - .setDateType(DateType.ONLY_DATE) - // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的 - .setServiceName("%sService") + // 使用 FastAutoGenerator 快速配置代码生成器 + FastAutoGenerator.create("jdbc:mysql://106.52.88.120:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", "root", "59ae8683c59fead903132a8d440bd7d9fd4936529d1d6f45f9d41111d7537bdd") + .globalConfig(builder -> { + builder.author("jieyuu") // 设置作者 + .outputDir("D:\\workspace\\project\\CarbonNeutrality\\server\\src\\test\\java"); // 输出目录 + }) + .packageConfig(builder -> { + builder.parent("net.carbon") // 设置父包名 + .entity("model") // 设置实体类包名 + .controller("controller") + .mapper("mapper") // 设置 Mapper 接口包名 + .service("service") // 设置 Service 接口包名 + .serviceImpl("service.impl") // 设置 Service 实现类包名 + .xml("mappers"); // 设置 Mapper XML 文件包名 + }) + .strategyConfig(builder -> { + builder.addInclude("user", "label" , "economics") // 设置需要生成的表名 + .entityBuilder() + .enableLombok() // 启用 Lombok + .enableTableFieldAnnotation() // 启用字段注解 + .controllerBuilder() + .enableRestStyle(); // 启用 REST 风格 + }) + .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎 + .execute(); // 执行生成 - //实体类结尾名称 - .setEntityName("%sDO") - - //生成基本的resultMap - .setBaseResultMap(true) - - //不使用AR模式 - .setActiveRecord(false) - - //生成基本的SQL片段 - .setBaseColumnList(true); - - //2. 数据源配置 - DataSourceConfig dsConfig = new DataSourceConfig(); - // 设置数据库类型 - dsConfig.setDbType(DbType.MYSQL) - .setDriverName("com.mysql.cj.jdbc.Driver") - .setUrl("jdbc:mysql://106.52.88.120:3306/demo?useSSL=false") - .setUsername("root") - .setPassword("59ae8683c59fead903132a8d440bd7d9fd4936529d1d6f45f9d41111d7537bdd"); - - //3. 策略配置globalConfiguration中 - StrategyConfig stConfig = new StrategyConfig(); - - //全局大写命名 - stConfig.setCapitalMode(true) - // 数据库表映射到实体的命名策略 - .setNaming(NamingStrategy.underline_to_camel) - - //使用lombok - .setEntityLombokModel(true) - - //使用restcontroller注解 - .setRestControllerStyle(true) - - // 生成的表, 支持多表一起生成,以数组形式填写 - .setInclude("carbon_emission"); - - //4. 包名策略配置 - PackageConfig pkConfig = new PackageConfig(); - pkConfig.setParent("net.jieyuu") - .setMapper("mapper") - .setService("service") - .setController("controller") - .setEntity("model") - .setXml("mapper"); - - //5. 整合配置 - AutoGenerator ag = new AutoGenerator(); - ag.setGlobalConfig(config) - .setDataSource(dsConfig) - .setStrategy(stConfig) - .setPackageInfo(pkConfig); - - //6. 执行操作 - ag.execute(); System.out.println("======= Done 相关代码生成完毕 ========"); } } \ No newline at end of file