From 50a01b33093e5981e81ddd33d9424d4ded0459b0 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 1 Apr 2024 21:44:38 +0800 Subject: [PATCH 01/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- .idea/dataSources.xml | 18 +++ .idea/uiDesigner.xml | 124 ++++++++++++++++++ .../java/com/atguigu/common/utils/MD5.java | 30 +++++ common/pom.xml | 6 + .../common/config/RedisConfiguration.java | 99 ++++++++++++++ ...gger2Config.java => WebKnife4jConfig.java} | 39 +----- .../common/properties/MinioProperties.java | 27 ++++ .../com/atguigu/ssyx/vo/acl/LoginInfoVo.java | 21 +++ .../java/com/atguigu/ssyx/vo/acl/LoginVo.java | 18 +++ pom.xml | 13 ++ .../ssyx/acl/ServiceAclApplication.java | 2 +- .../ssyx/acl/config/Knife4jConfig.java | 54 ++++++++ .../ssyx/acl/controller/IndexController.java | 28 +++- .../src/main/resources/application-dev.yml | 6 + .../src/main/resources/application.yml | 13 +- 16 files changed, 452 insertions(+), 50 deletions(-) create mode 100644 .idea/dataSources.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 common/common-util/src/main/java/com/atguigu/common/utils/MD5.java create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/config/RedisConfiguration.java rename common/service-util/src/main/java/com/atguigu/ssyx/common/config/{Swagger2Config.java => WebKnife4jConfig.java} (61%) create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/properties/MinioProperties.java create mode 100644 model/src/main/java/com/atguigu/ssyx/vo/acl/LoginInfoVo.java create mode 100644 model/src/main/java/com/atguigu/ssyx/vo/acl/LoginVo.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/config/Knife4jConfig.java diff --git a/.gitignore b/.gitignore index 5ff6309..2ebe1c7 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,6 @@ build/ .vscode/ ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store + +logs \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..a57e5fc --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,18 @@ + + + + + mysql.8 + true + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://106.15.251.123:3305/shequ-acl?serverTimezone=GMT + + + + + + $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/common-util/src/main/java/com/atguigu/common/utils/MD5.java b/common/common-util/src/main/java/com/atguigu/common/utils/MD5.java new file mode 100644 index 0000000..6f7230d --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/common/utils/MD5.java @@ -0,0 +1,30 @@ +package com.atguigu.common.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + + +public final class MD5 { + public static String encrypt(String strSrc) { + try { + char[] hexChars = {'0', '1', '2', '3', '4', '5', '6', '7', '8', + '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + byte[] bytes = strSrc.getBytes(); + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(bytes); + bytes = md.digest(); + int j = bytes.length; + char[] chars = new char[j * 2]; + int k = 0; + for (int i = 0; i < bytes.length; i++) { + byte b = bytes[i]; + chars[k++] = hexChars[b >>> 4 & 0xf]; + chars[k++] = hexChars[b & 0xf]; + } + return new String(chars); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + throw new RuntimeException("MD5加密出错!!+" + e); + } + } +} diff --git a/common/pom.xml b/common/pom.xml index f90885c..bff215d 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -50,5 +50,11 @@ org.springframework.cloud spring-cloud-starter-openfeign + + + + io.minio + minio + diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/RedisConfiguration.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/RedisConfiguration.java new file mode 100644 index 0000000..c3d6ca5 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/RedisConfiguration.java @@ -0,0 +1,99 @@ +package com.atguigu.ssyx.common.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cache.CacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Configuration +@Slf4j +public class RedisConfiguration { + /** + * 使用StringRedisSerializer序列化为字符串 + */ + @Bean + public RedisTemplate redisTemplate(LettuceConnectionFactory connectionFactory) { + log.info("RedisConfiguration===>使用StringRedisSerializer序列化为字符串"); + + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(connectionFactory); + // 设置key序列化为string + redisTemplate.setKeySerializer(new StringRedisSerializer()); + // 设置value序列化为JSON,使用GenericJackson2JsonRedisSerializer替换默认序列化 + redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); + + return redisTemplate; + } + + /** + * 解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题 + */ + @Bean + @SuppressWarnings("all") + public CacheManager cacheManager(RedisConnectionFactory factory) { + log.info("RedisConfiguration===>解决cache(@Cacheable)把数据缓存到redis中的value是乱码问题"); + + StringRedisSerializer redisSerializer = new StringRedisSerializer(); + // 配置序列化 + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + RedisCacheConfiguration redisCacheConfiguration = config + .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jsonRedisSerializer())); + + RedisCacheManager cacheManager = RedisCacheManager.builder(factory) + .cacheDefaults(redisCacheConfiguration).build(); + return cacheManager; + } + + /** + * 指定的日期模式 + */ + public Jackson2JsonRedisSerializer jsonRedisSerializer() { + log.info("RedisConfiguration===>指定的日期模式"); + + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper mapper = new ObjectMapper(); + // 设置ObjectMapper访问权限 + mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // 记录序列化之后的数据类型,方便反序列化 + mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); + // LocalDatetime序列化,默认不兼容jdk8日期序列化 + JavaTimeModule timeModule = new JavaTimeModule(); + timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + timeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + + timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + // 关闭默认的日期格式化方式,默认UTC日期格式 yyyy-MM-dd’T’HH:mm:ss.SSS + mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + mapper.registerModule(timeModule); + + serializer.setObjectMapper(mapper); + return serializer; + } +} \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java similarity index 61% rename from common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java rename to common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java index 39d48b1..4d2ef87 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/Swagger2Config.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java @@ -17,13 +17,9 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; import java.util.ArrayList; import java.util.List; -/** - * Swagger2配置信息 - */ @Configuration @EnableSwagger2WebMvc -public class Swagger2Config { - +public class WebKnife4jConfig { @Bean public Docket webApiConfig() { List pars = new ArrayList<>(); @@ -49,30 +45,6 @@ public class Swagger2Config { .globalOperationParameters(pars); } - @Bean - public Docket adminApiConfig() { - List pars = new ArrayList<>(); - ParameterBuilder tokenPar = new ParameterBuilder(); - tokenPar.name("adminId") - .description("用户token") - .defaultValue("1") - .modelRef(new ModelRef("string")) - .parameterType("header") - .required(false) - .build(); - pars.add(tokenPar.build()); - - return new Docket(DocumentationType.SWAGGER_2) - .groupName("adminApi") - .apiInfo(adminApiInfo()) - .select() - // 只显示admin路径下的页面 - .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx")) - .paths(PathSelectors.regex("/admin/.*")) - .build() - .globalOperationParameters(pars); - } - private ApiInfo webApiInfo() { return new ApiInfoBuilder() .title("网站-API文档") @@ -81,13 +53,4 @@ public class Swagger2Config { .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) .build(); } - - private ApiInfo adminApiInfo() { - return new ApiInfoBuilder() - .title("后台管理系统-API文档") - .description("本文档描述了尚上优选后台系统服务接口定义") - .version("1.0") - .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) - .build(); - } } \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/properties/MinioProperties.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/properties/MinioProperties.java new file mode 100644 index 0000000..9605787 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/properties/MinioProperties.java @@ -0,0 +1,27 @@ +package com.atguigu.ssyx.common.properties; + +import io.minio.MinioClient; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConfigurationProperties(prefix = "bunny.minio") +@ConditionalOnProperty(name = "bunny.minio.bucket-name")// 当属性有值时这个配置才生效 +@Data +@Slf4j +public class MinioProperties { + private String endpointUrl; + private String accessKey; + private String secretKey; + private String bucketName; + + @Bean + public MinioClient minioClient() { + log.info("注册MinioClient..."); + return MinioClient.builder().endpoint(endpointUrl).credentials(accessKey, secretKey).build(); + } +} diff --git a/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginInfoVo.java b/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginInfoVo.java new file mode 100644 index 0000000..e66ce22 --- /dev/null +++ b/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginInfoVo.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.vo.acl; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "返回用户信息") +public class LoginInfoVo { + @ApiModelProperty(value = "用户名") + private String name; + + @ApiModelProperty(value = "头像") + private String avatar; +} diff --git a/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginVo.java b/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginVo.java new file mode 100644 index 0000000..e7a00b2 --- /dev/null +++ b/model/src/main/java/com/atguigu/ssyx/vo/acl/LoginVo.java @@ -0,0 +1,18 @@ +package com.atguigu.ssyx.vo.acl; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "登录成功后返回") +public class LoginVo { + @ApiModelProperty(value = "token") + private String token; +} diff --git a/pom.xml b/pom.xml index c927133..c89e45a 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,7 @@ 2.0.8 2.10.1 2.3.0 + 8.4.3 @@ -108,6 +109,18 @@ xxl-job-core ${xxl-job.version} + + + io.minio + minio + ${minio.version} + + + + com.squareup.okhttp3 + okhttp + 4.9.3 + diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index 676c091..57c62a3 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication -@ComponentScan("com.atguigu.ssyx.common") +@ComponentScan(basePackages = {"com.atguigu.ssyx", "com.atguigu.ssyx.acl"}) @MapperScan("com.atguigu.ssyx.*.mapper") public class ServiceAclApplication { public static void main(String[] args) { diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/config/Knife4jConfig.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/config/Knife4jConfig.java new file mode 100644 index 0000000..94da04c --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/config/Knife4jConfig.java @@ -0,0 +1,54 @@ +package com.atguigu.ssyx.acl.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@EnableSwagger2WebMvc +public class Knife4jConfig { + @Bean + public Docket adminApiConfig() { + List pars = new ArrayList<>(); + ParameterBuilder tokenPar = new ParameterBuilder(); + tokenPar.name("adminId") + .description("用户token") + .defaultValue("1") + .modelRef(new ModelRef("string")) + .parameterType("header") + .required(false) + .build(); + pars.add(tokenPar.build()); + + return new Docket(DocumentationType.SWAGGER_2) + .groupName("adminApi") + .apiInfo(adminApiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.acl.controller")) + .paths(PathSelectors.regex("/admin/.*")) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo adminApiInfo() { + return new ApiInfoBuilder() + .title("后台管理系统-API文档") + .description("本文档描述了尚上优选后台系统服务接口定义") + .version("1.0") + .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) + .build(); + } +} \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/IndexController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/IndexController.java index d072253..459c039 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/IndexController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/IndexController.java @@ -1,22 +1,36 @@ package com.atguigu.ssyx.acl.controller; import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.vo.acl.LoginInfoVo; +import com.atguigu.ssyx.vo.acl.LoginVo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.HashMap; -import java.util.Map; - @Api(tags = "登录相关管理") @RestController @RequestMapping("/admin/acl/index") public class IndexController { + @ApiOperation(value = "请求登陆的login") @PostMapping("login") - public Result> login() { - Map map = new HashMap<>(); - map.put("token", "admin-token"); - return Result.success(map); + public Result login() { + LoginVo vo = LoginVo.builder().token("admin-token").build(); + return Result.success(vo); + } + + @ApiOperation(value = "获取用户信息") + @GetMapping("info") + public Result info() { + LoginInfoVo vo = LoginInfoVo.builder().name("admin").avatar("").build(); + return Result.success(vo); + } + + @ApiOperation(value = "退出登录") + @PostMapping("logout") + public Result logout() { + return Result.success(); } } \ No newline at end of file diff --git a/service/service-acl/src/main/resources/application-dev.yml b/service/service-acl/src/main/resources/application-dev.yml index fbcd6bf..ce202f2 100644 --- a/service/service-acl/src/main/resources/application-dev.yml +++ b/service/service-acl/src/main/resources/application-dev.yml @@ -20,6 +20,12 @@ bunny: database: 2 password: "02120212" + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: ssyx + accessKey: bunny + secretKey: "02120212" + logging: level: com.atguigu.ssyx.acl.mapper: debug diff --git a/service/service-acl/src/main/resources/application.yml b/service/service-acl/src/main/resources/application.yml index 0c1c95a..53c407d 100644 --- a/service/service-acl/src/main/resources/application.yml +++ b/service/service-acl/src/main/resources/application.yml @@ -38,10 +38,17 @@ mybatis-plus: # db-config: # 设置表名前缀,不用在每个tableName添加前缀 # table-prefix: t_ - # 全局配置主键值方式 - # id-type: assign_id + # 全局配置主键值方式 + # id-type: assign_id # 指定逻辑删除-未删除 # logic-not-delete-value: 0 # 未删除默认为0 # 指定逻辑删除-删除 # logic-delete-value: 1 # 删除 - # logic-delete-field: deleted # 全局配置逻辑删除 \ No newline at end of file + # logic-delete-field: deleted # 全局配置逻辑删除 + +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file From e7784e7ae682bbefce31f38512ab5518321a3eba Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 1 Apr 2024 22:29:10 +0800 Subject: [PATCH 02/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86CURD=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 1 + .../ssyx/common/config/MybatisPlusConfig.java | 4 +- .../com/atguigu/ssyx/vo/acl/RoleQueryVo.java | 8 +-- service/service-acl/pom.xml | 49 ++++++++++++++ .../ssyx/acl/ServiceAclApplication.java | 2 - .../ssyx/acl/controller/RoleController.java | 66 +++++++++++++++++++ .../atguigu/ssyx/acl/service/RoleService.java | 4 ++ .../acl/service/impl/RoleServiceImpl.java | 19 ++++++ .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/application.yml | 6 +- 10 files changed, 150 insertions(+), 13 deletions(-) create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java diff --git a/.idea/misc.xml b/.idea/misc.xml index 5755a99..132404b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,6 @@ + diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index 57c62a3..3154812 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -1,13 +1,11 @@ package com.atguigu.ssyx.acl; -import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.atguigu.ssyx", "com.atguigu.ssyx.acl"}) -@MapperScan("com.atguigu.ssyx.*.mapper") public class ServiceAclApplication { public static void main(String[] args) { SpringApplication.run(ServiceAclApplication.class, args); diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java new file mode 100644 index 0000000..1be568f --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java @@ -0,0 +1,66 @@ +package com.atguigu.ssyx.acl.controller; + +import com.atguigu.ssyx.acl.service.RoleService; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.acl.Role; +import com.atguigu.ssyx.vo.acl.RoleQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/admin/acl/role") +@Api(tags = "用户管理") +@Slf4j +public class RoleController { + @Autowired + private RoleService roleService; + + @ApiOperation(value = "获取角色分页列表") + @GetMapping("{page}/{limit}") + public Result> index(@ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + + @ApiParam(name = "roleQueryVo", value = "查询对象") + RoleQueryVo vo) { + IPage roleIPage = roleService.selectPage(page, limit, vo); + return Result.success(roleIPage); + } + + @ApiOperation(value = "获取角色") + @GetMapping("get/{id}") + public Result getRole(@PathVariable Long id) { + Role role = roleService.getById(id); + return Result.success(role); + } + + @ApiOperation(value = "新增角色") + @PostMapping("save") + public Result saveRole(@RequestBody Role role) { + roleService.updateById(role); + return Result.success(); + } + + @ApiOperation(value = "删除角色") + @DeleteMapping("remove/{id}") + public Result removeRole(@PathVariable Long id) { + roleService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除角色") + @DeleteMapping("batchRemove") + public Result> batchRemove(@RequestBody List ids) { + roleService.removeByIds(ids); + return Result.success(); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java index 163b99c..deacfb8 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java @@ -1,7 +1,11 @@ package com.atguigu.ssyx.acl.service; import com.atguigu.ssyx.model.acl.Role; +import com.atguigu.ssyx.vo.acl.RoleQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface RoleService extends IService { + // 获取角色分页列表 + IPage selectPage(Long page, Long limit, RoleQueryVo vo); } diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java index 5b83ba0..a7fc7e8 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java @@ -3,11 +3,30 @@ package com.atguigu.ssyx.acl.service.impl; import com.atguigu.ssyx.acl.mapper.RoleMapper; import com.atguigu.ssyx.acl.service.RoleService; import com.atguigu.ssyx.model.acl.Role; +import com.atguigu.ssyx.vo.acl.RoleQueryVo; +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 lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; @Service @Slf4j public class RoleServiceImpl extends ServiceImpl implements RoleService { + @Override + public IPage selectPage(Long page, Long limit, RoleQueryVo vo) { + Page rolePage = new Page<>(page, limit); + // 获取条件值 + String roleName = vo.getRoleName(); + // 创建mp对象 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 判断条件值是否为空 + if (StringUtils.isEmpty(roleName)) { + wrapper.like(Role::getRoleName, rolePage); + } + // 调用犯法实现分页查询 + return baseMapper.selectPage(rolePage, wrapper); + } } diff --git a/service/service-acl/src/main/resources/application-dev.yml b/service/service-acl/src/main/resources/application-dev.yml index ce202f2..3c17f1f 100644 --- a/service/service-acl/src/main/resources/application-dev.yml +++ b/service/service-acl/src/main/resources/application-dev.yml @@ -1,6 +1,6 @@ server: - port: 8201 - + port: 8200 + bunny: datasource: host: 106.15.251.123 diff --git a/service/service-acl/src/main/resources/application.yml b/service/service-acl/src/main/resources/application.yml index 53c407d..bcaf9b2 100644 --- a/service/service-acl/src/main/resources/application.yml +++ b/service/service-acl/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8291 + port: 8200 spring: application: name: service-acl @@ -36,8 +36,8 @@ mybatis-plus: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 # global-config: # db-config: - # 设置表名前缀,不用在每个tableName添加前缀 - # table-prefix: t_ + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ # 全局配置主键值方式 # id-type: assign_id # 指定逻辑删除-未删除 From b321755bffaa11617a3dc65dc2c8ba32ea71980e Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 09:06:35 +0800 Subject: [PATCH 03/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=A7=92=E8=89=B2=E4=B8=80=E4=BA=9Bbug=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86CRUD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../ssyx/common/result/ResultCodeEnum.java | 2 +- pom.xml | 48 ++++++------- .../ssyx/acl/controller/AdminController.java | 68 ++++++++++++++++++- .../ssyx/acl/controller/RoleController.java | 9 ++- .../ssyx/acl/service/AdminService.java | 3 + .../acl/service/impl/AdminServiceImpl.java | 18 ++++- .../acl/service/impl/RoleServiceImpl.java | 8 +-- 8 files changed, 123 insertions(+), 35 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 132404b..fd42907 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/result/ResultCodeEnum.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/result/ResultCodeEnum.java index 1fd6b5b..850005c 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/result/ResultCodeEnum.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/result/ResultCodeEnum.java @@ -8,7 +8,7 @@ import lombok.Getter; @Getter public enum ResultCodeEnum { - SUCCESS(200, "成功"), + SUCCESS(200, "操作成功"), FAIL(201, "失败"), SERVICE_ERROR(2012, "服务异常"), DATA_ERROR(204, "数据异常"), diff --git a/pom.xml b/pom.xml index c89e45a..708b841 100644 --- a/pom.xml +++ b/pom.xml @@ -123,28 +123,28 @@ - - - nexus-aliyun - Nexus aliyun - default - https://maven.aliyun.com/repository/public - - false - - - true - - - - spring - https://maven.aliyun.com/repository/spring - - true - - - true - - - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java index aead02e..a54fe44 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java @@ -1,12 +1,76 @@ package com.atguigu.ssyx.acl.controller; +import com.atguigu.ssyx.acl.service.AdminService; +import com.atguigu.ssyx.acl.service.RoleService; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.acl.Admin; +import com.atguigu.ssyx.vo.acl.AdminQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/admin/acl/user") @Api(tags = "用户管理") public class AdminController { + @Autowired + private AdminService adminService; + @Autowired + private RoleService roleService; + @ApiOperation(value = "获取管理用户分页列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + + @ApiParam(name = "userQueryVo", value = "查询对象") + AdminQueryVo userQueryVo + ) { + IPage pageModel = adminService.selectPage(page, limit, userQueryVo); + return Result.success(pageModel); + } + + @ApiOperation(value = "获取管理用户") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + Admin admin = adminService.getById(id); + return Result.success(admin); + } + + @ApiOperation(value = "新增管理用户") + @PostMapping("save") + public Result save(@RequestBody Admin admin) { + boolean isSuccess = adminService.save(admin); + return isSuccess ? Result.success() : Result.error(); + } + + @ApiOperation(value = "修改管理用户") + @PutMapping("update") + public Result updateById(Admin admin) { + adminService.updateById(admin); + return Result.success(); + } + + @ApiOperation(value = "删除管理用户") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + adminService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除管理用户") + @DeleteMapping("batchRemove") + public Result> batchRemove(@PathVariable List ids) { + adminService.removeByIds(ids); + return Result.success(); + } } \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java index 1be568f..bd4b0a8 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java @@ -46,10 +46,17 @@ public class RoleController { @ApiOperation(value = "新增角色") @PostMapping("save") public Result saveRole(@RequestBody Role role) { - roleService.updateById(role); + roleService.save(role); return Result.success(); } + @ApiOperation(value = "更新角色") + @PutMapping("update") + public Result updateRole(@RequestBody Role role) { + boolean isSuccess = roleService.updateById(role); + return isSuccess ? Result.success() : Result.error(); + } + @ApiOperation(value = "删除角色") @DeleteMapping("remove/{id}") public Result removeRole(@PathVariable Long id) { diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java index 47cfd0c..98f3c60 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java @@ -1,8 +1,11 @@ package com.atguigu.ssyx.acl.service; import com.atguigu.ssyx.model.acl.Admin; +import com.atguigu.ssyx.vo.acl.AdminQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface AdminService extends IService { + IPage selectPage(Long page, Long limit, AdminQueryVo userQueryVo); } \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java index 074c580..3f03a9e 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java @@ -3,15 +3,29 @@ package com.atguigu.ssyx.acl.service.impl; import com.atguigu.ssyx.acl.mapper.AdminMapper; import com.atguigu.ssyx.acl.service.AdminService; import com.atguigu.ssyx.model.acl.Admin; +import com.atguigu.ssyx.vo.acl.AdminQueryVo; +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 lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; @Service @Slf4j public class AdminServiceImpl extends ServiceImpl implements AdminService { @Override - public boolean save(Admin entity) { - return super.save(entity); + public IPage selectPage(Long page, Long limit, AdminQueryVo vo) { + Page pageParam = new Page(page, limit); + String name = vo.getName(); + String username = vo.getUsername(); + + // 封装条件进行返回 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(!StringUtils.isEmpty(username), Admin::getUsername, username); + wrapper.like(!StringUtils.isEmpty(name), Admin::getName, name); + + return baseMapper.selectPage(pageParam, wrapper); } } \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java index a7fc7e8..ba0052c 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java @@ -17,16 +17,16 @@ import org.springframework.stereotype.Service; public class RoleServiceImpl extends ServiceImpl implements RoleService { @Override public IPage selectPage(Long page, Long limit, RoleQueryVo vo) { - Page rolePage = new Page<>(page, limit); + Page roleParam = new Page<>(page, limit); // 获取条件值 String roleName = vo.getRoleName(); // 创建mp对象 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); // 判断条件值是否为空 - if (StringUtils.isEmpty(roleName)) { - wrapper.like(Role::getRoleName, rolePage); + if (!StringUtils.isEmpty(roleName)) { + wrapper.like(Role::getRoleName, roleParam); } // 调用犯法实现分页查询 - return baseMapper.selectPage(rolePage, wrapper); + return baseMapper.selectPage(roleParam, wrapper); } } From 7d7cbced2308e5ec55c7c57f1aafc739c4a5c89d Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 09:12:42 +0800 Subject: [PATCH 04/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E6=88=B7bug=E6=97=A0=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/atguigu/ssyx/acl/controller/AdminController.java | 4 ++-- .../java/com/atguigu/ssyx/acl/controller/RoleController.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java index a54fe44..7959f7d 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java @@ -55,7 +55,7 @@ public class AdminController { @ApiOperation(value = "修改管理用户") @PutMapping("update") - public Result updateById(Admin admin) { + public Result updateById(@RequestBody Admin admin) { adminService.updateById(admin); return Result.success(); } @@ -69,7 +69,7 @@ public class AdminController { @ApiOperation(value = "根据id列表删除管理用户") @DeleteMapping("batchRemove") - public Result> batchRemove(@PathVariable List ids) { + public Result> batchRemove(@RequestBody List ids) { adminService.removeByIds(ids); return Result.success(); } diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java index bd4b0a8..d3c51cf 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/RoleController.java @@ -16,7 +16,7 @@ import java.util.List; @RestController @RequestMapping("/admin/acl/role") -@Api(tags = "用户管理") +@Api(tags = "角色管理") @Slf4j public class RoleController { @Autowired From 1b22f6dca02c8b20a80ef83bdddc37c382e93d47 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 09:18:02 +0800 Subject: [PATCH 05/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=94=A8=E6=88=B7=E5=8A=A0=E5=AF=86=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssyx/acl/controller/AdminController.java | 2 +- .../ssyx/acl/service/AdminService.java | 15 ++++++++++++ .../acl/service/impl/AdminServiceImpl.java | 24 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java index 7959f7d..367d90e 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java @@ -49,7 +49,7 @@ public class AdminController { @ApiOperation(value = "新增管理用户") @PostMapping("save") public Result save(@RequestBody Admin admin) { - boolean isSuccess = adminService.save(admin); + boolean isSuccess = adminService.saveByAdmin(admin); return isSuccess ? Result.success() : Result.error(); } diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java index 98f3c60..c53fa1b 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminService.java @@ -6,6 +6,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface AdminService extends IService { + /** + * * 条件分页查询 + * + * @param page 当前页码 + * @param limit 每页记录数 + * @param userQueryVo 查询对象 + * @return 分页结果 + */ IPage selectPage(Long page, Long limit, AdminQueryVo userQueryVo); + + /** + * 新增管理用户 + * + * @param admin 用户管理员 + */ + Boolean saveByAdmin(Admin admin); } \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java index 3f03a9e..c2b88a6 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminServiceImpl.java @@ -10,11 +10,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; import org.springframework.util.StringUtils; @Service @Slf4j public class AdminServiceImpl extends ServiceImpl implements AdminService { + /** + * * 条件分页查询 + * + * @param page 当前页码 + * @param limit 每页记录数 + * @param vo 查询对象 + * @return 分页结果 + */ @Override public IPage selectPage(Long page, Long limit, AdminQueryVo vo) { Page pageParam = new Page(page, limit); @@ -28,4 +37,19 @@ public class AdminServiceImpl extends ServiceImpl implements return baseMapper.selectPage(pageParam, wrapper); } + + /** + * 新增管理用户 + * + * @param admin 用户管理员 + */ + @Override + public Boolean saveByAdmin(Admin admin) { + // 获取密码并加密 + String password = admin.getPassword(); + String encryptPassword = DigestUtils.md5DigestAsHex(password.getBytes()); + // 设置密码 + admin.setPassword(encryptPassword); + return save(admin); + } } \ No newline at end of file From 5139c4459f0c420025f808e412a5bef22d7100f7 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 13:17:45 +0800 Subject: [PATCH 06/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E7=94=A8=E6=88=B7=E8=8E=B7=E5=8F=96=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=92=8C=E6=A0=B9=E6=8D=AE=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=86=E9=85=8D=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssyx/vo/acl/AssignAdminRoleVo.java | 24 ++++++++ .../ssyx/acl/ServiceAclApplication.java | 2 + .../acl/controller/AdminRoleController.java | 31 ++++++++++ .../ssyx/acl/mapper/AdminRoleMapper.java | 17 ++++++ .../ssyx/acl/service/AdminRoleService.java | 23 +++++++ .../atguigu/ssyx/acl/service/RoleService.java | 9 ++- .../service/impl/AdminRoleServiceImpl.java | 61 +++++++++++++++++++ .../acl/service/impl/RoleServiceImpl.java | 8 +++ .../main/resources/mapper/AdminRoleMapper.xml | 12 ++++ 9 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 model/src/main/java/com/atguigu/ssyx/vo/acl/AssignAdminRoleVo.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminRoleController.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/AdminRoleMapper.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminRoleService.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java create mode 100644 service/service-acl/src/main/resources/mapper/AdminRoleMapper.xml diff --git a/model/src/main/java/com/atguigu/ssyx/vo/acl/AssignAdminRoleVo.java b/model/src/main/java/com/atguigu/ssyx/vo/acl/AssignAdminRoleVo.java new file mode 100644 index 0000000..d8939b8 --- /dev/null +++ b/model/src/main/java/com/atguigu/ssyx/vo/acl/AssignAdminRoleVo.java @@ -0,0 +1,24 @@ +package com.atguigu.ssyx.vo.acl; + +import com.atguigu.ssyx.model.acl.Role; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "所有角色数据") +public class AssignAdminRoleVo { + @ApiModelProperty(value = "角色列表数据") + private List assignRoles; + + @ApiModelProperty(value = "所有角色数据") + private List allRolesList; +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index 3154812..878caaa 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -3,9 +3,11 @@ package com.atguigu.ssyx.acl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @ComponentScan(basePackages = {"com.atguigu.ssyx", "com.atguigu.ssyx.acl"}) +@EnableTransactionManagement public class ServiceAclApplication { public static void main(String[] args) { SpringApplication.run(ServiceAclApplication.class, args); diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminRoleController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminRoleController.java new file mode 100644 index 0000000..c6277b7 --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminRoleController.java @@ -0,0 +1,31 @@ +package com.atguigu.ssyx.acl.controller; + +import com.atguigu.ssyx.acl.service.AdminRoleService; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/admin/acl/user") +@Api(tags = "用户和角色管理") +public class AdminRoleController { + @Autowired + private AdminRoleService adminRoleService; + + @ApiOperation(value = "根据用户获取角色数据") + @GetMapping("/toAssign/{adminId}") + public Result toAssign(@PathVariable Long adminId) { + AssignAdminRoleVo vo = adminRoleService.findRoleByUserId(adminId); + return Result.success(vo); + } + + @ApiOperation(value = "根据用户分配角色") + @PostMapping("/doAssign") + public Result doAssign(@RequestParam Long adminId, @RequestParam Long[] roleId) { + adminRoleService.saveUserRoleShip(adminId, roleId); + return Result.success(); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/AdminRoleMapper.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/AdminRoleMapper.java new file mode 100644 index 0000000..da34f49 --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/AdminRoleMapper.java @@ -0,0 +1,17 @@ +package com.atguigu.ssyx.acl.mapper; + +import com.atguigu.ssyx.model.acl.AdminRole; +import com.atguigu.ssyx.model.acl.Role; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +public interface AdminRoleMapper extends BaseMapper { + /** + * * 根据用户ID查找角色 + * + * @param adminId 用户ID + * @return 角色列表 + */ + List findRoleByUserId(Long adminId); +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminRoleService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminRoleService.java new file mode 100644 index 0000000..dfbc256 --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/AdminRoleService.java @@ -0,0 +1,23 @@ +package com.atguigu.ssyx.acl.service; + +import com.atguigu.ssyx.model.acl.AdminRole; +import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface AdminRoleService extends IService { + /** + * * 根据用户获取角色数据 + * + * @param adminId 用户ID + * @return 分配集合 + */ + AssignAdminRoleVo findRoleByUserId(Long adminId); + + /** + * * 根据用户分配角色 + * + * @param adminId 用户ID + * @param roleId 角色ID + */ + void saveUserRoleShip(Long adminId, Long[] roleId); +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java index deacfb8..efa866f 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/RoleService.java @@ -6,6 +6,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; public interface RoleService extends IService { - // 获取角色分页列表 + /** + * * 获取角色分页列表 + * + * @param page 当前页码 + * @param limit 每页记录数 + * @param vo 角色查询实体 + * @return 分页结果 + */ IPage selectPage(Long page, Long limit, RoleQueryVo vo); } diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java new file mode 100644 index 0000000..bb6418f --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java @@ -0,0 +1,61 @@ +package com.atguigu.ssyx.acl.service.impl; + +import com.atguigu.ssyx.acl.mapper.AdminRoleMapper; +import com.atguigu.ssyx.acl.service.AdminRoleService; +import com.atguigu.ssyx.acl.service.RoleService; +import com.atguigu.ssyx.model.acl.AdminRole; +import com.atguigu.ssyx.model.acl.Role; +import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class AdminRoleServiceImpl extends ServiceImpl implements AdminRoleService { + @Autowired + private RoleService roleService; + + /** + * 根据用户获取角色数据 + * + * @param adminId 用户ID + * @return 分配集合 + */ + @Override + public AssignAdminRoleVo findRoleByUserId(Long adminId) { + // 查询所有的角色 + List allRolesList = roleService.list(null); + List roleList = baseMapper.findRoleByUserId(adminId); + + return AssignAdminRoleVo.builder().assignRoles(roleList).allRolesList(allRolesList).build(); + } + + /** + * * 根据用户分配角色 + * + * @param adminId 用户ID + * @param roleIds 角色ID + */ + @Override + @Transactional + public void saveUserRoleShip(Long adminId, Long[] roleIds) { + remove(Wrappers.lambdaQuery().eq(AdminRole::getAdminId, adminId)); + ArrayList adminRoles = new ArrayList<>(); + + // 循环遍历并插入 + for (Long roleId : roleIds) { + AdminRole adminRole = new AdminRole(); + adminRole.setAdminId(adminId); + adminRole.setRoleId(roleId); + adminRoles.add(adminRole); + } + + // 插入整体数据 + saveBatch(adminRoles); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java index ba0052c..b93e32d 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/RoleServiceImpl.java @@ -15,6 +15,14 @@ import org.springframework.stereotype.Service; @Service @Slf4j public class RoleServiceImpl extends ServiceImpl implements RoleService { + /** + * 获取角色分页列表 + * + * @param page 当前页码 + * @param limit 每页记录数 + * @param vo 角色查询实体 + * @return 分页结果 + */ @Override public IPage selectPage(Long page, Long limit, RoleQueryVo vo) { Page roleParam = new Page<>(page, limit); diff --git a/service/service-acl/src/main/resources/mapper/AdminRoleMapper.xml b/service/service-acl/src/main/resources/mapper/AdminRoleMapper.xml new file mode 100644 index 0000000..b8f52fe --- /dev/null +++ b/service/service-acl/src/main/resources/mapper/AdminRoleMapper.xml @@ -0,0 +1,12 @@ + + + + + + From 123542d51f860f110e41d433c128977432e271fb Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 14:43:25 +0800 Subject: [PATCH 07/23] =?UTF-8?q?feat(=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?):=20=E6=96=B0=E5=A2=9E=E8=8F=9C=E5=8D=95\=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=8F=9C=E5=8D=95\=E9=80=92=E5=BD=92=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/utils/PermissionHelper.java | 40 ++++++++++++++++ .../acl/controller/PermissionController.java | 42 ++++++++++++++++ .../ssyx/acl/mapper/PermissionMapper.java | 10 ++++ .../ssyx/acl/service/PermissionService.java | 23 +++++++++ .../service/impl/PermissionServiceImpl.java | 48 +++++++++++++++++++ .../module/PermissionServiceModule.java | 31 ++++++++++++ 6 files changed, 194 insertions(+) create mode 100644 common/common-util/src/main/java/com/atguigu/common/utils/PermissionHelper.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/PermissionMapper.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/PermissionService.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java create mode 100644 service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/module/PermissionServiceModule.java diff --git a/common/common-util/src/main/java/com/atguigu/common/utils/PermissionHelper.java b/common/common-util/src/main/java/com/atguigu/common/utils/PermissionHelper.java new file mode 100644 index 0000000..f0ab2f7 --- /dev/null +++ b/common/common-util/src/main/java/com/atguigu/common/utils/PermissionHelper.java @@ -0,0 +1,40 @@ +package com.atguigu.common.utils; + +import com.atguigu.ssyx.model.acl.Permission; + +import java.util.ArrayList; +import java.util.List; + +public class PermissionHelper { + public static List buildPermissions(List permissionList) { + ArrayList trees = new ArrayList<>(); + + permissionList.forEach(permission -> { + if (permission.getPid() == 0) { + permission.setLevel(1); + trees.add(findChildren(permission, permissionList)); + } + }); + + return trees; + } + + private static Permission findChildren(Permission permission, List allList) { + permission.setChildren(new ArrayList<>()); + + allList.forEach(p -> { + if (p.getId().equals(permission.getPid())) { + int level = permission.getLevel() + 1; + p.setLevel(level); + + if (permission.getChildren() == null) { + permission.setChildren(new ArrayList<>()); + } + // 封装下层数据 + permission.getChildren().add(findChildren(p, allList)); + } + }); + + return permission; + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java new file mode 100644 index 0000000..303adfc --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java @@ -0,0 +1,42 @@ +package com.atguigu.ssyx.acl.controller; + + +import com.atguigu.ssyx.acl.service.PermissionService; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.acl.Permission; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +@RestController +@RequestMapping("/admin/acl/permission") +@Api(tags = "菜单管理") +@Slf4j +public class PermissionController { + @Autowired + private PermissionService permissionService; + + @ApiOperation(value = "新增菜单") + @PostMapping("save") + public Result save(@RequestBody Permission permission) { + permissionService.save(permission); + return Result.success(); + } + + @ApiOperation(value = "修改菜单") + @PutMapping("update") + public Result updateById(@RequestBody Permission permission) { + permissionService.updateById(permission); + return Result.success(); + } + + @ApiOperation(value = "递归删除菜单") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + permissionService.removeChildById(id); + return Result.success(); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/PermissionMapper.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/PermissionMapper.java new file mode 100644 index 0000000..5fc8c5a --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/mapper/PermissionMapper.java @@ -0,0 +1,10 @@ +package com.atguigu.ssyx.acl.mapper; + +import com.atguigu.ssyx.model.acl.Permission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface PermissionMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/PermissionService.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/PermissionService.java new file mode 100644 index 0000000..7cc67b0 --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/PermissionService.java @@ -0,0 +1,23 @@ +package com.atguigu.ssyx.acl.service; + +import com.atguigu.ssyx.model.acl.Permission; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +public interface PermissionService extends IService { + + /** + * 获取所有菜单列表 + * + * @return 权限列表 + */ + List queryAllMenu(); + + /** + * 递归删除 + * + * @param id 删除ID + */ + void removeChildById(Long id); +} \ No newline at end of file diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java new file mode 100644 index 0000000..1bc619b --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java @@ -0,0 +1,48 @@ +package com.atguigu.ssyx.acl.service.impl; + +import com.atguigu.common.utils.PermissionHelper; +import com.atguigu.ssyx.acl.mapper.PermissionMapper; +import com.atguigu.ssyx.acl.service.PermissionService; +import com.atguigu.ssyx.acl.service.module.PermissionServiceModule; +import com.atguigu.ssyx.model.acl.Permission; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class PermissionServiceImpl extends ServiceImpl implements PermissionService { + @Autowired + private PermissionServiceModule permissionServiceModule; + + /** + * 获取所有菜单列表 + * + * @return 权限列表 + */ + @Override + public List queryAllMenu() { + // 查询所有菜单 + List permissions = baseMapper.selectList(null); + // 转换要求数据格式 + return PermissionHelper.buildPermissions(permissions); + } + + /** + * 递归删除 + * + * @param id 删除ID + */ + @Override + public void removeChildById(Long id) { + ArrayList idList = new ArrayList<>(); + + // 获取菜单下子菜单 + permissionServiceModule.getAllPermissionId(id, idList); + + // 调用方法根据多个菜单ID删除 + baseMapper.deleteBatchIds(idList); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/module/PermissionServiceModule.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/module/PermissionServiceModule.java new file mode 100644 index 0000000..abef83b --- /dev/null +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/module/PermissionServiceModule.java @@ -0,0 +1,31 @@ +package com.atguigu.ssyx.acl.service.module; + +import com.atguigu.ssyx.acl.mapper.PermissionMapper; +import com.atguigu.ssyx.model.acl.Permission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class PermissionServiceModule { + @Autowired + private PermissionMapper permissionMapper; + + /** + * 获取菜单下子菜单 + * + * @param id 菜单ID + * @param idList IDList + */ + public void getAllPermissionId(Long id, ArrayList idList) { + List permissions = permissionMapper.selectList(Wrappers.lambdaQuery().eq(Permission::getId, id)); + + permissions.forEach(item -> { + idList.add(item.getId()); + getAllPermissionId(item.getId(), idList); + }); + } +} From 197d203685d5784597ac302347acba2df5048a39 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 15:27:57 +0800 Subject: [PATCH 08/23] =?UTF-8?q?feat(=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?):=20service-sys=E9=A1=B9=E7=9B=AE=E7=8E=AF=E5=A2=83=E6=90=AD?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 1 + service/pom.xml | 1 + .../src/main/resources/application-dev.yml | 14 +---- .../src/main/resources/application.yml | 30 +++++---- service/service-sys/pom.xml | 23 +++++++ .../src/main/resources/application-dev.yml | 27 ++++++++ .../src/main/resources/application.yml | 63 +++++++++++++++++++ 7 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 service/service-sys/pom.xml create mode 100644 service/service-sys/src/main/resources/application-dev.yml create mode 100644 service/service-sys/src/main/resources/application.yml diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 69af3a4..cf5b385 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -14,6 +14,7 @@ + diff --git a/service/pom.xml b/service/pom.xml index 09b45e7..9e711c9 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -14,6 +14,7 @@ https://maven.apache.org service-acl + service-sys diff --git a/service/service-acl/src/main/resources/application-dev.yml b/service/service-acl/src/main/resources/application-dev.yml index 3c17f1f..5f1e5ac 100644 --- a/service/service-acl/src/main/resources/application-dev.yml +++ b/service/service-acl/src/main/resources/application-dev.yml @@ -1,6 +1,6 @@ server: port: 8200 - + bunny: datasource: host: 106.15.251.123 @@ -24,14 +24,4 @@ bunny: endpointUrl: "http://129.211.31.58:9000" bucket-name: ssyx accessKey: bunny - secretKey: "02120212" - -logging: - level: - com.atguigu.ssyx.acl.mapper: debug - com.atguigu.ssyx.acl.controller: info - com.atguigu.ssyx.acl.service: info - pattern: - dateformat: HH:mm:ss:SSS - file: - path: "logs/${spring.application.name}" \ No newline at end of file + secretKey: "02120212" \ No newline at end of file diff --git a/service/service-acl/src/main/resources/application.yml b/service/service-acl/src/main/resources/application.yml index bcaf9b2..4b98984 100644 --- a/service/service-acl/src/main/resources/application.yml +++ b/service/service-acl/src/main/resources/application.yml @@ -34,17 +34,25 @@ mybatis-plus: map-underscore-to-camel-case: true auto-mapping-behavior: full log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 - # global-config: - # db-config: - # 设置表名前缀,不用在每个tableName添加前缀 - # table-prefix: t_ - # 全局配置主键值方式 - # id-type: assign_id - # 指定逻辑删除-未删除 - # logic-not-delete-value: 0 # 未删除默认为0 - # 指定逻辑删除-删除 - # logic-delete-value: 1 # 删除 - # logic-delete-field: deleted # 全局配置逻辑删除 + global-config: + db-config: + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ + # 全局配置主键值方式 + id-type: assign_id + logic-not-delete-value: 0 # 未删除默认为0 + logic-delete-value: 1 # 删除 + logic-delete-field: deleted # 全局配置逻辑删除 + +logging: + level: + com.atguigu.ssyx.acl.mapper: debug + com.atguigu.ssyx.acl.controller: info + com.atguigu.ssyx.acl.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" bunny: minio: diff --git a/service/service-sys/pom.xml b/service/service-sys/pom.xml new file mode 100644 index 0000000..9d4d320 --- /dev/null +++ b/service/service-sys/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service + 1.0-SNAPSHOT + + + service-sys + jar + + service-sys + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service/service-sys/src/main/resources/application-dev.yml b/service/service-sys/src/main/resources/application-dev.yml new file mode 100644 index 0000000..5f1e5ac --- /dev/null +++ b/service/service-sys/src/main/resources/application-dev.yml @@ -0,0 +1,27 @@ +server: + port: 8200 + +bunny: + datasource: + host: 106.15.251.123 + port: 3305 + sqlData: shequ-acl + username: root + password: "02120212" + + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx + + redis: + host: 47.120.65.66 + port: 6379 + database: 2 + password: "02120212" + + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: ssyx + accessKey: bunny + secretKey: "02120212" \ No newline at end of file diff --git a/service/service-sys/src/main/resources/application.yml b/service/service-sys/src/main/resources/application.yml new file mode 100644 index 0000000..35787e2 --- /dev/null +++ b/service/service-sys/src/main/resources/application.yml @@ -0,0 +1,63 @@ +server: + port: 8202 + +spring: + application: + name: service-sys + profiles: + active: dev + + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true + username: ${bunny.datasource.username} + password: "${bunny.datasource.password}" + + cloud: + sentinel: + log: + dir: logs/${spring.application.name}/sentinel + nacos: + discovery: + namespace: ${bunny.nacos.discovery.namespace} + server-addr: ${bunny.nacos.server-addr} + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + +mybatis-plus: + type-aliases-package: com.atguigu.model # 配置每个包前缀 + mapper-locations: classpath:mapper/*.xml + configuration: + map-underscore-to-camel-case: true + auto-mapping-behavior: full + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 + global-config: + db-config: + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ + # 全局配置主键值方式 + id-type: assign_id + logic-not-delete-value: 0 # 未删除默认为0 + logic-delete-value: 1 # 删除 + logic-delete-field: deleted # 全局配置逻辑删除 + +logging: + level: + com.atguigu.ssyx.acl.mapper: debug + com.atguigu.ssyx.acl.controller: info + com.atguigu.ssyx.acl.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" + +# bunny: +# minio: +# endpointUrl: ${bunny.minio.endpointUrl} +# accessKey: ${bunny.minio.accessKey} +# secretKey: ${bunny.minio.secretKey} +# bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file From 735d06024110494ea17dda9af2bbc3558af9ba26 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 16:02:51 +0800 Subject: [PATCH 09/23] =?UTF-8?q?feat(=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?= =?UTF-8?q?):=20=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssyx/acl/controller/PermissionController.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java index 303adfc..6dde174 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/PermissionController.java @@ -1,6 +1,5 @@ package com.atguigu.ssyx.acl.controller; - import com.atguigu.ssyx.acl.service.PermissionService; import com.atguigu.ssyx.common.result.Result; import com.atguigu.ssyx.model.acl.Permission; @@ -10,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; @RestController @RequestMapping("/admin/acl/permission") @@ -19,6 +19,13 @@ public class PermissionController { @Autowired private PermissionService permissionService; + @ApiOperation(value = "获取菜单") + @GetMapping + public Result> index() { + List list = permissionService.queryAllMenu(); + return Result.success(list); + } + @ApiOperation(value = "新增菜单") @PostMapping("save") public Result save(@RequestBody Permission permission) { From 8dd0cd6c5a5e38cfe19894116e2342b5543ba004 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 16:57:54 +0800 Subject: [PATCH 10/23] =?UTF-8?q?feat(sys):=20=E8=8E=B7=E5=8F=96=E5=BC=80?= =?UTF-8?q?=E9=80=9A=E5=8C=BA=E7=AE=A1=E7=90=86,=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=BC=80=E9=80=9A=E5=8C=BA=E5=9F=9F=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/service-util/pom.xml | 18 ++++++ .../main/java/com/atguigu/ssyx/CodeGet.java | 60 ++++++++++++++++++ .../ssyx/acl/ServiceAclApplication.java | 2 +- service/service-sys/Dockerfile | 21 ++++++ service/service-sys/pom.xml | 2 +- .../ssyx/sys/ServiceSysApplication.java | 15 +++++ .../ssyx/sys/config/Knife4jConfig.java | 10 +-- .../ssyx/sys/controller/RegionController.java | 43 +++++++++++++ .../sys/controller/RegionWareController.java | 12 ++++ .../ssyx/sys/controller/WareController.java | 20 ++++++ .../atguigu/ssyx/sys/mapper/RegionMapper.java | 16 +++++ .../ssyx/sys/mapper/RegionWareMapper.java | 16 +++++ .../atguigu/ssyx/sys/mapper/WareMapper.java | 16 +++++ .../ssyx/sys/service/RegionService.java | 16 +++++ .../ssyx/sys/service/RegionWareService.java | 15 +++++ .../atguigu/ssyx/sys/service/WareService.java | 16 +++++ .../sys/service/impl/RegionServiceImpl.java | 20 ++++++ .../service/impl/RegionWareServiceImpl.java | 30 +++++++++ .../sys/service/impl/WareServiceImpl.java | 20 ++++++ .../src/main/resources/application-dev.yml | 4 +- .../service-sys/src/main/resources/banner.txt | 16 +++++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes .../main/resources/mapper/RegionMapper.xml | 5 ++ .../resources/mapper/RegionWareMapper.xml | 5 ++ .../src/main/resources/mapper/WareMapper.xml | 5 ++ 25 files changed, 394 insertions(+), 9 deletions(-) create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java create mode 100644 service/service-sys/Dockerfile create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java rename common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java => service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java (90%) create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionMapper.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionWareMapper.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/WareMapper.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/WareService.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java create mode 100644 service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/WareServiceImpl.java create mode 100644 service/service-sys/src/main/resources/banner.txt create mode 100644 service/service-sys/src/main/resources/favicon.ico create mode 100644 service/service-sys/src/main/resources/mapper/RegionMapper.xml create mode 100644 service/service-sys/src/main/resources/mapper/RegionWareMapper.xml create mode 100644 service/service-sys/src/main/resources/mapper/WareMapper.xml diff --git a/common/service-util/pom.xml b/common/service-util/pom.xml index 42c8fe1..8662030 100644 --- a/common/service-util/pom.xml +++ b/common/service-util/pom.xml @@ -55,5 +55,23 @@ mybatis-plus-boot-starter provided + + + com.baomidou + mybatis-plus-generator + 3.4.1 + + + + org.apache.velocity + velocity-engine-core + 2.0 + + + + + mysql + mysql-connector-java + diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java b/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java new file mode 100644 index 0000000..982bb3e --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java @@ -0,0 +1,60 @@ +package com.atguigu.ssyx; + +import com.baomidou.mybatisplus.annotation.DbType; +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.config.rules.NamingStrategy; + +public class CodeGet { + + public static void main(String[] args) { + // 1、创建代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 2、全局配置 + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir("F:\\File\\Java\\ssyx\\guigu-ssyx-parent\\service\\service-sys" + "/src/main/java\\com\\atguigu\\ssyx\\sys"); + + gc.setServiceName("%sService"); // 去掉Service接口的首字母I + gc.setAuthor("atguigu"); + gc.setOpen(false); + mpg.setGlobalConfig(gc); + + // 3、数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl("jdbc:mysql://106.15.251.123:3305/shequ-sys?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true"); + dsc.setDriverName("com.mysql.cj.jdbc.Driver"); + dsc.setUsername("root"); + dsc.setPassword("02120212"); + dsc.setDbType(DbType.MYSQL); + mpg.setDataSource(dsc); + + // 4、包配置 + PackageConfig pc = new PackageConfig(); + pc.setParent("com.atguigu"); + pc.setModuleName("system"); // 模块名 + pc.setController("controller"); + pc.setService("service"); + pc.setMapper("mapper"); + mpg.setPackageInfo(pc); + + // 5、策略配置 + StrategyConfig strategy = new StrategyConfig(); + + strategy.setInclude("region", "region_ware", "ware"); + strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 + strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 + strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 + strategy.setRestControllerStyle(true); // restful api风格控制器 + strategy.setControllerMappingHyphenStyle(true); // url中驼峰转连字符 + + mpg.setStrategy(strategy); + + // 6、执行 + mpg.execute(); + } +} diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index 878caaa..f38d0d9 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx", "com.atguigu.ssyx.acl"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx"}) @EnableTransactionManagement public class ServiceAclApplication { public static void main(String[] args) { diff --git a/service/service-sys/Dockerfile b/service/service-sys/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service/service-sys/Dockerfile @@ -0,0 +1,21 @@ +FROM openjdk:17 +MAINTAINER bunny + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/bunny + +# 复制jar包 +COPY target/*.jar /home/bunny/app.jar + +#启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] + +#暴露 8080 端口 +EXPOSE 8080 \ No newline at end of file diff --git a/service/service-sys/pom.xml b/service/service-sys/pom.xml index 9d4d320..ec1ceaf 100644 --- a/service/service-sys/pom.xml +++ b/service/service-sys/pom.xml @@ -18,6 +18,6 @@ - + diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java new file mode 100644 index 0000000..5f5c71b --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java @@ -0,0 +1,15 @@ +package com.atguigu.ssyx.sys; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication +@EnableTransactionManagement +@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +public class ServiceSysApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceSysApplication.class, args); + } +} diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java similarity index 90% rename from common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java rename to service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java index 4d2ef87..8c01a06 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebKnife4jConfig.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java @@ -1,4 +1,4 @@ -package com.atguigu.ssyx.common.config; +package com.atguigu.ssyx.sys.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -19,7 +19,7 @@ import java.util.List; @Configuration @EnableSwagger2WebMvc -public class WebKnife4jConfig { +public class Knife4jConfig { @Bean public Docket webApiConfig() { List pars = new ArrayList<>(); @@ -35,12 +35,12 @@ public class WebKnife4jConfig { pars.add(tokenPar.build()); return new Docket(DocumentationType.SWAGGER_2) - .groupName("webApi") + .groupName("区域查询API") .apiInfo(webApiInfo()) .select() // 只显示api路径下的页面 - .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx")) - .paths(PathSelectors.regex("/api/.*")) + .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.sys")) + .paths(PathSelectors.regex("/admin/sys/regionWare/.*|/system/.*")) .build() .globalOperationParameters(pars); } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java new file mode 100644 index 0000000..d08a6ac --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java @@ -0,0 +1,43 @@ +package com.atguigu.ssyx.sys.controller; + + +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.sys.RegionWare; +import com.atguigu.ssyx.sys.service.RegionWareService; +import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(value = "获取开通区管理", tags = "获取开通区管理") +@RestController +@RequestMapping(value = "/admin/sys/regionWare") +public class RegionController { + @Resource + private RegionWareService regionWareService; + + @ApiOperation(value = "获取开通区域列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + @ApiParam(name = "regionWareVo", value = "查询对象", required = false) + RegionWareQueryVo regionWareQueryVo) { + + Page pageParam = new Page<>(page, limit); + IPage pageModel = regionWareService.selectPage(pageParam, regionWareQueryVo); + + return Result.success(pageModel); + } +} + diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java new file mode 100644 index 0000000..c0d7221 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java @@ -0,0 +1,12 @@ +package com.atguigu.ssyx.sys.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/system/region-ware") +public class RegionWareController { + +} + diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java new file mode 100644 index 0000000..1bc9640 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.sys.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 仓库表 前端控制器 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +@RestController +@RequestMapping("/system/ware") +public class WareController { + +} + diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionMapper.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionMapper.java new file mode 100644 index 0000000..ffb7879 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.sys.mapper; + +import com.atguigu.ssyx.model.sys.Region; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 地区表 Mapper 接口 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +public interface RegionMapper extends BaseMapper { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionWareMapper.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionWareMapper.java new file mode 100644 index 0000000..2176497 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/RegionWareMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.sys.mapper; + +import com.atguigu.ssyx.model.sys.RegionWare; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 城市仓库关联表 Mapper 接口 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +public interface RegionWareMapper extends BaseMapper { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/WareMapper.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/WareMapper.java new file mode 100644 index 0000000..a0704b2 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/mapper/WareMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.sys.mapper; + +import com.atguigu.ssyx.model.sys.Ware; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 仓库表 Mapper 接口 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +public interface WareMapper extends BaseMapper { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java new file mode 100644 index 0000000..82234ae --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.sys.service; + +import com.atguigu.ssyx.model.sys.Region; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 地区表 服务类 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +public interface RegionService extends IService { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java new file mode 100644 index 0000000..e90a91c --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java @@ -0,0 +1,15 @@ +package com.atguigu.ssyx.sys.service; + +import com.atguigu.ssyx.model.sys.RegionWare; +import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface RegionWareService extends IService { + + /** + * 开通区域列表 + */ + IPage selectPage(Page pageParam, RegionWareQueryVo regionWareQueryVo); +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/WareService.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/WareService.java new file mode 100644 index 0000000..8fc37a7 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/WareService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.sys.service; + +import com.atguigu.ssyx.model.sys.Ware; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 仓库表 服务类 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +public interface WareService extends IService { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java new file mode 100644 index 0000000..2bfe14e --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.sys.service.impl; + +import com.atguigu.ssyx.model.sys.Region; +import com.atguigu.ssyx.sys.mapper.RegionMapper; +import com.atguigu.ssyx.sys.service.RegionService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 地区表 服务实现类 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +@Service +public class RegionServiceImpl extends ServiceImpl implements RegionService { + +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java new file mode 100644 index 0000000..df3058f --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java @@ -0,0 +1,30 @@ +package com.atguigu.ssyx.sys.service.impl; + +import com.atguigu.ssyx.model.sys.RegionWare; +import com.atguigu.ssyx.sys.mapper.RegionWareMapper; +import com.atguigu.ssyx.sys.service.RegionWareService; +import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; +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 org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +@Service +public class RegionWareServiceImpl extends ServiceImpl implements RegionWareService { + + /** + * 开通区域列表 + */ + @Override + public IPage selectPage(Page pageParam, RegionWareQueryVo regionWareQueryVo) { + String keyword = regionWareQueryVo.getKeyword(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + // 查询 + wrapper.like(!StringUtils.isEmpty(keyword), RegionWare::getRegionName, keyword).or().like(!StringUtils.isEmpty(keyword), RegionWare::getWareName, keyword); + + return baseMapper.selectPage(pageParam, wrapper); + } +} diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/WareServiceImpl.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/WareServiceImpl.java new file mode 100644 index 0000000..471ddf3 --- /dev/null +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/WareServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.sys.service.impl; + +import com.atguigu.ssyx.model.sys.Ware; +import com.atguigu.ssyx.sys.mapper.WareMapper; +import com.atguigu.ssyx.sys.service.WareService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 仓库表 服务实现类 + *

+ * + * @author atguigu + * @since 2024-04-02 + */ +@Service +public class WareServiceImpl extends ServiceImpl implements WareService { + +} diff --git a/service/service-sys/src/main/resources/application-dev.yml b/service/service-sys/src/main/resources/application-dev.yml index 5f1e5ac..f56edaf 100644 --- a/service/service-sys/src/main/resources/application-dev.yml +++ b/service/service-sys/src/main/resources/application-dev.yml @@ -1,11 +1,11 @@ server: - port: 8200 + port: 8202 bunny: datasource: host: 106.15.251.123 port: 3305 - sqlData: shequ-acl + sqlData: shequ-sys username: root password: "02120212" diff --git a/service/service-sys/src/main/resources/banner.txt b/service/service-sys/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service/service-sys/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service/service-sys/src/main/resources/favicon.ico b/service/service-sys/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ba397c45de65f92b238bb9f94608320bf32209b GIT binary patch literal 13342 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 literal 0 HcmV?d00001 diff --git a/service/service-sys/src/main/resources/mapper/RegionMapper.xml b/service/service-sys/src/main/resources/mapper/RegionMapper.xml new file mode 100644 index 0000000..639a34d --- /dev/null +++ b/service/service-sys/src/main/resources/mapper/RegionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-sys/src/main/resources/mapper/RegionWareMapper.xml b/service/service-sys/src/main/resources/mapper/RegionWareMapper.xml new file mode 100644 index 0000000..ea74838 --- /dev/null +++ b/service/service-sys/src/main/resources/mapper/RegionWareMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-sys/src/main/resources/mapper/WareMapper.xml b/service/service-sys/src/main/resources/mapper/WareMapper.xml new file mode 100644 index 0000000..0a302a7 --- /dev/null +++ b/service/service-sys/src/main/resources/mapper/WareMapper.xml @@ -0,0 +1,5 @@ + + + + + From 67c42f59b39dbca59c1eb8f278c8a7eafa97e857 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 20:40:51 +0800 Subject: [PATCH 11/23] =?UTF-8?q?feat(sys):=20=E6=B7=BB=E5=8A=A0=E5=BC=80?= =?UTF-8?q?=E9=80=9A=E5=8C=BA=E5=9F=9F=EF=BC=9B=E5=88=A0=E9=99=A4=EF=BC=9B?= =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=BC=80=E9=80=9A=E5=8C=BA=E5=9F=9F=EF=BC=9B?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=85=A8=E9=83=A8=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- .../ssyx/sys/controller/RegionController.java | 33 +---------- .../sys/controller/RegionWareController.java | 56 ++++++++++++++++++- .../ssyx/sys/controller/WareController.java | 31 ++++++---- .../ssyx/sys/service/RegionWareService.java | 10 ++++ .../service/impl/RegionWareServiceImpl.java | 28 ++++++++++ 6 files changed, 114 insertions(+), 46 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index fd42907..132404b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@
- + \ No newline at end of file diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java index d08a6ac..adc211d 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java @@ -1,43 +1,14 @@ package com.atguigu.ssyx.sys.controller; -import com.atguigu.ssyx.common.result.Result; -import com.atguigu.ssyx.model.sys.RegionWare; -import com.atguigu.ssyx.sys.service.RegionWareService; -import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; - -@Api(value = "获取开通区管理", tags = "获取开通区管理") +@Api(tags = "区域接口") @RestController -@RequestMapping(value = "/admin/sys/regionWare") +@RequestMapping("/admin/sys/region") public class RegionController { - @Resource - private RegionWareService regionWareService; - @ApiOperation(value = "获取开通区域列表") - @GetMapping("{page}/{limit}") - public Result> index( - @ApiParam(name = "page", value = "当前页码", required = true) - @PathVariable Long page, - @ApiParam(name = "limit", value = "每页记录数", required = true) - @PathVariable Long limit, - @ApiParam(name = "regionWareVo", value = "查询对象", required = false) - RegionWareQueryVo regionWareQueryVo) { - - Page pageParam = new Page<>(page, limit); - IPage pageModel = regionWareService.selectPage(pageParam, regionWareQueryVo); - - return Result.success(pageModel); - } } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java index c0d7221..9bfb120 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java @@ -1,12 +1,62 @@ package com.atguigu.ssyx.sys.controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.sys.RegionWare; +import com.atguigu.ssyx.model.sys.Ware; +import com.atguigu.ssyx.sys.service.RegionWareService; +import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; + +@Api(value = "RegionWare管理", tags = "RegionWare管理") @RestController -@RequestMapping("/system/region-ware") +@RequestMapping(value = "/admin/sys/regionWare") public class RegionWareController { + @Resource + private RegionWareService regionWareService; + @ApiOperation(value = "获取开通区域列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + @ApiParam(name = "regionWareVo", value = "查询对象", required = false) + RegionWareQueryVo regionWareQueryVo) { + + Page pageParam = new Page<>(page, limit); + IPage pageModel = regionWareService.selectPage(pageParam, regionWareQueryVo); + + return Result.success(pageModel); + } + + @ApiOperation(value = "添加开通区域") + @PostMapping("save") + public Result save(@RequestBody RegionWare regionWare) { + regionWareService.saveRegionWare(regionWare); + return Result.success(); + } + + @ApiOperation(value = "删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + regionWareService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "取消开通区域") + @PostMapping("updateStatus/{id}/{status}") + public Result updateStatus(@PathVariable Long id, @PathVariable Integer status) { + regionWareService.updateStatus(id, status); + return Result.success(); + } } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java index 1bc9640..56abc39 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/WareController.java @@ -1,20 +1,29 @@ package com.atguigu.ssyx.sys.controller; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.sys.Ware; +import com.atguigu.ssyx.sys.service.WareService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -/** - *

- * 仓库表 前端控制器 - *

- * - * @author atguigu - * @since 2024-04-02 - */ -@RestController -@RequestMapping("/system/ware") -public class WareController { +import java.util.List; +@Api(value = "Ware管理", tags = "Ware管理") +@RestController +@RequestMapping(value = "/admin/sys/ware") +public class WareController { + @Autowired + private WareService wareService; + + @ApiOperation(value = "获取全部仓库") + @GetMapping("findAllList") + public Result> findAllList() { + return Result.success(wareService.list()); + } } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java index e90a91c..1b261c1 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionWareService.java @@ -12,4 +12,14 @@ public interface RegionWareService extends IService { * 开通区域列表 */ IPage selectPage(Page pageParam, RegionWareQueryVo regionWareQueryVo); + + /** + * 添加开通区域 + */ + void saveRegionWare(RegionWare regionWare); + + /** + * 取消开通区域 + */ + void updateStatus(Long id, Integer status); } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java index df3058f..ea9035d 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionWareServiceImpl.java @@ -1,11 +1,14 @@ package com.atguigu.ssyx.sys.service.impl; +import com.atguigu.ssyx.common.exception.BunnyException; +import com.atguigu.ssyx.common.result.ResultCodeEnum; import com.atguigu.ssyx.model.sys.RegionWare; import com.atguigu.ssyx.sys.mapper.RegionWareMapper; import com.atguigu.ssyx.sys.service.RegionWareService; import com.atguigu.ssyx.vo.sys.RegionWareQueryVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -27,4 +30,29 @@ public class RegionWareServiceImpl extends ServiceImpllambdaQuery().eq(RegionWare::getRegionId, regionWare.getRegionId())); + if (count > 0) { + throw new BunnyException(ResultCodeEnum.REGION_OPEN); + } + + baseMapper.insert(regionWare); + } + + /** + * 取消开通区域 + */ + @Override + public void updateStatus(Long id, Integer status) { + RegionWare regionWare = baseMapper.selectById(id); + regionWare.setStatus(status); + // 更新数据 + baseMapper.updateById(regionWare); + } } From ea44df334024e3fb1b1cf20ffabab04c9ed591da Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 2 Apr 2024 21:16:04 +0800 Subject: [PATCH 12/23] =?UTF-8?q?feat(sys):=20=E6=A0=B9=E6=8D=AE=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E5=AD=97=E8=8E=B7=E5=8F=96=E5=9C=B0=E5=8C=BA=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssyx/sys/controller/RegionController.java | 17 +++++++++++++++++ .../sys/controller/RegionWareController.java | 5 ++--- .../atguigu/ssyx/sys/service/RegionService.java | 9 +++++++++ .../sys/service/impl/RegionServiceImpl.java | 13 +++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java index adc211d..af9e6ab 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionController.java @@ -1,14 +1,31 @@ package com.atguigu.ssyx.sys.controller; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.sys.Region; +import com.atguigu.ssyx.sys.service.RegionService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @Api(tags = "区域接口") @RestController @RequestMapping("/admin/sys/region") public class RegionController { + @Autowired + private RegionService regionService; + @ApiOperation(value = "根据关键字获取地区列表") + @GetMapping("findRegionByKeyword/{keyword}") + public Result> findRegionByKeyword(@PathVariable("keyword") String keyword) { + List regionList = regionService.findRegionByKeyword(keyword); + return Result.success(regionList); + } } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java index 9bfb120..5cc9bfa 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/controller/RegionWareController.java @@ -11,15 +11,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; - @Api(value = "RegionWare管理", tags = "RegionWare管理") @RestController @RequestMapping(value = "/admin/sys/regionWare") public class RegionWareController { - @Resource + @Autowired private RegionWareService regionWareService; @ApiOperation(value = "获取开通区域列表") diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java index 82234ae..2939567 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/RegionService.java @@ -3,6 +3,8 @@ package com.atguigu.ssyx.sys.service; import com.atguigu.ssyx.model.sys.Region; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 地区表 服务类 @@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface RegionService extends IService { + /** + * 根据关键字获取地区列表 + * + * @param keyword 关键字 + * @return List + */ + List findRegionByKeyword(String keyword); } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java index 2bfe14e..55d6a74 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/service/impl/RegionServiceImpl.java @@ -3,9 +3,12 @@ package com.atguigu.ssyx.sys.service.impl; import com.atguigu.ssyx.model.sys.Region; import com.atguigu.ssyx.sys.mapper.RegionMapper; import com.atguigu.ssyx.sys.service.RegionService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 地区表 服务实现类 @@ -17,4 +20,14 @@ import org.springframework.stereotype.Service; @Service public class RegionServiceImpl extends ServiceImpl implements RegionService { + /** + * 根据关键字获取地区列表 + * + * @param keyword 关键字 + * @return List + */ + @Override + public List findRegionByKeyword(String keyword) { + return baseMapper.selectList(Wrappers.lambdaQuery().like(Region::getName, keyword)); + } } From 04816a35fd341f7f90a0afe48ea787fa11b19242 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Wed, 3 Apr 2024 16:04:56 +0800 Subject: [PATCH 13/23] =?UTF-8?q?feat(product):=20=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 1 + .idea/misc.xml | 2 +- .../main/java/com/atguigu/ssyx/CodeGet.java | 13 ++-- service/pom.xml | 1 + service/service-product/pom.xml | 23 +++++++ .../product/ServiceProductApplication.java | 15 +++++ .../ssyx/product/config/Knife4jConfig.java | 54 +++++++++++++++ .../src/main/resources/application-dev.yml | 27 ++++++++ .../src/main/resources/application.yml | 62 ++++++++++++++++++ .../src/main/resources/banner.txt | 16 +++++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes 11 files changed, 207 insertions(+), 7 deletions(-) create mode 100644 service/service-product/pom.xml create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java create mode 100644 service/service-product/src/main/resources/application-dev.yml create mode 100644 service/service-product/src/main/resources/application.yml create mode 100644 service/service-product/src/main/resources/banner.txt create mode 100644 service/service-product/src/main/resources/favicon.ico diff --git a/.idea/encodings.xml b/.idea/encodings.xml index cf5b385..4534e5f 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -14,6 +14,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 132404b..fd42907 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java b/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java index 982bb3e..665de88 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java @@ -17,16 +17,16 @@ public class CodeGet { // 2、全局配置 // 全局配置 GlobalConfig gc = new GlobalConfig(); - gc.setOutputDir("F:\\File\\Java\\ssyx\\guigu-ssyx-parent\\service\\service-sys" + "/src/main/java\\com\\atguigu\\ssyx\\sys"); + gc.setOutputDir("F:\\File\\Java\\ssyx\\guigu-ssyx-parent\\service\\service-product" + "/src/main/java"); gc.setServiceName("%sService"); // 去掉Service接口的首字母I - gc.setAuthor("atguigu"); + gc.setAuthor("bunny"); gc.setOpen(false); mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://106.15.251.123:3305/shequ-sys?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true"); + dsc.setUrl("jdbc:mysql://106.15.251.123:3305/shequ-product?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("02120212"); @@ -35,8 +35,8 @@ public class CodeGet { // 4、包配置 PackageConfig pc = new PackageConfig(); - pc.setParent("com.atguigu"); - pc.setModuleName("system"); // 模块名 + pc.setParent("com.atguigu.ssyx"); + pc.setModuleName("product"); // 模块名 pc.setController("controller"); pc.setService("service"); pc.setMapper("mapper"); @@ -45,7 +45,8 @@ public class CodeGet { // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); - strategy.setInclude("region", "region_ware", "ware"); + strategy.setInclude("attr", "attr_group", "base_category_trademark", "category", "comment", "comment_replay", "mq_repeat_record", + "region_ware", "sku_attr_value", "sku_detail", "sku_image", "sku_info", "sku_poster", "sku_stock_history", "ware"); strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 diff --git a/service/pom.xml b/service/pom.xml index 9e711c9..1013f23 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -15,6 +15,7 @@ service-acl service-sys + service-product diff --git a/service/service-product/pom.xml b/service/service-product/pom.xml new file mode 100644 index 0000000..921dc11 --- /dev/null +++ b/service/service-product/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service + 1.0-SNAPSHOT + + + service-product + jar + + service-product + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java new file mode 100644 index 0000000..e3b8ff3 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java @@ -0,0 +1,15 @@ +package com.atguigu.ssyx.product; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication +@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@EnableTransactionManagement +public class ServiceProductApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceProductApplication.class, args); + } +} \ No newline at end of file diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java new file mode 100644 index 0000000..99cfe59 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java @@ -0,0 +1,54 @@ +package com.atguigu.ssyx.product.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@EnableSwagger2WebMvc +public class Knife4jConfig { + @Bean + public Docket adminApiConfig() { + List pars = new ArrayList<>(); + ParameterBuilder tokenPar = new ParameterBuilder(); + tokenPar.name("adminId") + .description("用户token") + .defaultValue("1") + .modelRef(new ModelRef("string")) + .parameterType("header") + .required(false) + .build(); + pars.add(tokenPar.build()); + + return new Docket(DocumentationType.SWAGGER_2) + .groupName("adminApi") + .apiInfo(adminApiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.product.controller")) + .paths(PathSelectors.regex("/admin/.*")) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo adminApiInfo() { + return new ApiInfoBuilder() + .title("后台管理系统-API文档") + .description("本文档描述了尚上优选后台系统服务接口定义") + .version("1.0") + .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) + .build(); + } +} \ No newline at end of file diff --git a/service/service-product/src/main/resources/application-dev.yml b/service/service-product/src/main/resources/application-dev.yml new file mode 100644 index 0000000..642acdd --- /dev/null +++ b/service/service-product/src/main/resources/application-dev.yml @@ -0,0 +1,27 @@ +server: + port: 8203 + +bunny: + datasource: + host: 106.15.251.123 + port: 3305 + sqlData: shequ-product + username: root + password: "02120212" + + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx + + redis: + host: 47.120.65.66 + port: 6379 + database: 2 + password: "02120212" + + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: ssyx + accessKey: bunny + secretKey: "02120212" \ No newline at end of file diff --git a/service/service-product/src/main/resources/application.yml b/service/service-product/src/main/resources/application.yml new file mode 100644 index 0000000..1d69fb6 --- /dev/null +++ b/service/service-product/src/main/resources/application.yml @@ -0,0 +1,62 @@ +server: + port: 8203 +spring: + application: + name: service-product + profiles: + active: dev + + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true + username: ${bunny.datasource.username} + password: "${bunny.datasource.password}" + + cloud: + sentinel: + log: + dir: logs/${spring.application.name}/sentinel + nacos: + discovery: + namespace: ${bunny.nacos.discovery.namespace} + server-addr: ${bunny.nacos.server-addr} + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + +mybatis-plus: + type-aliases-package: com.atguigu.model # 配置每个包前缀 + mapper-locations: classpath:mapper/*.xml + configuration: + map-underscore-to-camel-case: true + auto-mapping-behavior: full + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 + global-config: + db-config: + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ + # 全局配置主键值方式 + id-type: assign_id + logic-not-delete-value: 0 # 未删除默认为0 + logic-delete-value: 1 # 删除 + logic-delete-field: deleted # 全局配置逻辑删除 + +logging: + level: + com.atguigu.ssyx.acl.mapper: debug + com.atguigu.ssyx.acl.controller: info + com.atguigu.ssyx.acl.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" + +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file diff --git a/service/service-product/src/main/resources/banner.txt b/service/service-product/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service/service-product/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service/service-product/src/main/resources/favicon.ico b/service/service-product/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ba397c45de65f92b238bb9f94608320bf32209b GIT binary patch literal 13342 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 literal 0 HcmV?d00001 From 2c3df9bb127c2ee5202f1be3fe9d963eaab0b1f5 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Wed, 3 Apr 2024 16:06:46 +0800 Subject: [PATCH 14/23] =?UTF-8?q?feat(product):=20=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E7=AE=A1=E7=90=86=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ssyx/product/config/Knife4jConfig.java | 2 +- .../product/controller/AttrController.java | 21 +++++ .../controller/AttrGroupController.java | 21 +++++ .../controller/CategoryController.java | 82 +++++++++++++++++++ .../controller/SkuAttrValueController.java | 21 +++++ .../controller/SkuImageController.java | 21 +++++ .../product/controller/SkuInfoController.java | 21 +++++ .../controller/SkuPosterController.java | 21 +++++ .../ssyx/product/mapper/AttrGroupMapper.java | 16 ++++ .../ssyx/product/mapper/AttrMapper.java | 16 ++++ .../ssyx/product/mapper/CategoryMapper.java | 16 ++++ .../product/mapper/SkuAttrValueMapper.java | 16 ++++ .../ssyx/product/mapper/SkuImageMapper.java | 16 ++++ .../ssyx/product/mapper/SkuInfoMapper.java | 16 ++++ .../ssyx/product/mapper/SkuPosterMapper.java | 16 ++++ .../product/service/AttrGroupService.java | 16 ++++ .../ssyx/product/service/AttrService.java | 16 ++++ .../ssyx/product/service/CategoryService.java | 30 +++++++ .../product/service/SkuAttrValueService.java | 16 ++++ .../ssyx/product/service/SkuImageService.java | 16 ++++ .../ssyx/product/service/SkuInfoService.java | 16 ++++ .../product/service/SkuPosterService.java | 16 ++++ .../service/impl/AttrGroupServiceImpl.java | 20 +++++ .../product/service/impl/AttrServiceImpl.java | 20 +++++ .../service/impl/CategoryServiceImpl.java | 47 +++++++++++ .../service/impl/SkuAttrValueServiceImpl.java | 20 +++++ .../service/impl/SkuImageServiceImpl.java | 20 +++++ .../service/impl/SkuInfoServiceImpl.java | 20 +++++ .../service/impl/SkuPosterServiceImpl.java | 20 +++++ .../main/resources/mapper/AttrGroupMapper.xml | 5 ++ .../src/main/resources/mapper/AttrMapper.xml | 5 ++ .../mapper/BaseCategoryTrademarkMapper.xml | 5 ++ .../main/resources/mapper/CategoryMapper.xml | 5 ++ .../main/resources/mapper/CommentMapper.xml | 5 ++ .../resources/mapper/CommentReplayMapper.xml | 5 ++ .../resources/mapper/MqRepeatRecordMapper.xml | 5 ++ .../resources/mapper/RegionWareMapper.xml | 5 ++ .../resources/mapper/SkuAttrValueMapper.xml | 5 ++ .../main/resources/mapper/SkuDetailMapper.xml | 5 ++ .../main/resources/mapper/SkuImageMapper.xml | 5 ++ .../main/resources/mapper/SkuInfoMapper.xml | 5 ++ .../main/resources/mapper/SkuPosterMapper.xml | 5 ++ .../mapper/SkuStockHistoryMapper.xml | 5 ++ .../src/main/resources/mapper/WareMapper.xml | 5 ++ 44 files changed, 689 insertions(+), 1 deletion(-) create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/CategoryController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrGroupMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/CategoryMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuAttrValueMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuImageMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuInfoMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuPosterMapper.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/CategoryService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/CategoryServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java create mode 100644 service/service-product/src/main/resources/mapper/AttrGroupMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/AttrMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/BaseCategoryTrademarkMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/CategoryMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/CommentMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/CommentReplayMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/MqRepeatRecordMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/RegionWareMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuAttrValueMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuDetailMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuImageMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuInfoMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuPosterMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/SkuStockHistoryMapper.xml create mode 100644 service/service-product/src/main/resources/mapper/WareMapper.xml diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java index 99cfe59..5ae9d31 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/config/Knife4jConfig.java @@ -34,7 +34,7 @@ public class Knife4jConfig { pars.add(tokenPar.build()); return new Docket(DocumentationType.SWAGGER_2) - .groupName("adminApi") + .groupName("商品相关API") .apiInfo(adminApiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.product.controller")) diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java new file mode 100644 index 0000000..18ad0d9 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 商品属性 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/attr") +public class AttrController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java new file mode 100644 index 0000000..4b0c509 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 属性分组 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/attr-group") +public class AttrGroupController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/CategoryController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/CategoryController.java new file mode 100644 index 0000000..d0557de --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/CategoryController.java @@ -0,0 +1,82 @@ +package com.atguigu.ssyx.product.controller; + + +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.product.service.CategoryService; +import com.atguigu.ssyx.vo.product.CategoryQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(value = "Category管理", tags = "商品分类管理") +@RestController +@RequestMapping(value = "/admin/product/category") +public class CategoryController { + @Autowired + private CategoryService categoryService; + + @ApiOperation(value = "获取商品分类分页列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + @ApiParam(name = "categoryQueryVo", value = "查询对象", required = false) + CategoryQueryVo categoryQueryVo) { + Page pageParam = new Page<>(page, limit); + IPage pageModel = categoryService.selectPage(pageParam, categoryQueryVo); + + return Result.success(pageModel); + } + + @ApiOperation(value = "获取商品分类信息") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + Category category = categoryService.getById(id); + return Result.success(category); + } + + @ApiOperation(value = "新增商品分类") + @PostMapping("save") + public Result save(@RequestBody Category category) { + categoryService.save(category); + return Result.success(); + } + + @ApiOperation(value = "修改商品分类") + @PutMapping("update") + public Result updateById(@RequestBody Category category) { + categoryService.updateById(category); + return Result.success(); + } + + @ApiOperation(value = "删除商品分类") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + categoryService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除商品分类") + @DeleteMapping("batchRemove") + public Result batchRemove(@RequestBody List ids) { + categoryService.removeByIds(ids); + return Result.success(); + } + + @ApiOperation(value = "获取全部商品分类") + @GetMapping("findAllList") + public Result> findAllList() { + List categoryList = categoryService.findAllList(); + return Result.success(categoryList); + } +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java new file mode 100644 index 0000000..c3621f6 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * spu属性值 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/sku-attr-value") +public class SkuAttrValueController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java new file mode 100644 index 0000000..b6f22e7 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 商品图片 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/sku-image") +public class SkuImageController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java new file mode 100644 index 0000000..cd6dbc0 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * sku信息 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/sku-info") +public class SkuInfoController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java new file mode 100644 index 0000000..e699c3f --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.product.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 商品海报表 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@RestController +@RequestMapping("/product/sku-poster") +public class SkuPosterController { + +} + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrGroupMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrGroupMapper.java new file mode 100644 index 0000000..45a30dc --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrGroupMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.AttrGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 属性分组 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface AttrGroupMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrMapper.java new file mode 100644 index 0000000..4ed243d --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/AttrMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.Attr; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 商品属性 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface AttrMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/CategoryMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/CategoryMapper.java new file mode 100644 index 0000000..5ad4010 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/CategoryMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.Category; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 商品三级分类 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface CategoryMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuAttrValueMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuAttrValueMapper.java new file mode 100644 index 0000000..50f336c --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuAttrValueMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.SkuAttrValue; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * spu属性值 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuAttrValueMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuImageMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuImageMapper.java new file mode 100644 index 0000000..06f12b0 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuImageMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.SkuImage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 商品图片 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuImageMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuInfoMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuInfoMapper.java new file mode 100644 index 0000000..7eff652 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuInfoMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.SkuInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * sku信息 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuInfoMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuPosterMapper.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuPosterMapper.java new file mode 100644 index 0000000..d9290f0 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/mapper/SkuPosterMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.mapper; + +import com.atguigu.ssyx.model.product.SkuPoster; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 商品海报表 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuPosterMapper extends BaseMapper { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java new file mode 100644 index 0000000..b026dd2 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.AttrGroup; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 属性分组 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface AttrGroupService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java new file mode 100644 index 0000000..73b265d --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.Attr; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 商品属性 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface AttrService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/CategoryService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/CategoryService.java new file mode 100644 index 0000000..a1c6764 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/CategoryService.java @@ -0,0 +1,30 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.vo.product.CategoryQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + *

+ * 商品三级分类 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface CategoryService extends IService { + + /** + * 获取商品分类分页列表 + */ + IPage selectPage(Page pageParam, CategoryQueryVo categoryQueryVo); + + /** + * 获取全部商品分类 + */ + List findAllList(); +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java new file mode 100644 index 0000000..120f6b1 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.SkuAttrValue; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * spu属性值 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuAttrValueService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java new file mode 100644 index 0000000..26c3e76 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.SkuImage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 商品图片 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuImageService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java new file mode 100644 index 0000000..d9b08c9 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.SkuInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * sku信息 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuInfoService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java new file mode 100644 index 0000000..abf22d1 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.product.service; + +import com.atguigu.ssyx.model.product.SkuPoster; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 商品海报表 服务类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +public interface SkuPosterService extends IService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java new file mode 100644 index 0000000..58b7b92 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.AttrGroup; +import com.atguigu.ssyx.product.mapper.AttrGroupMapper; +import com.atguigu.ssyx.product.service.AttrGroupService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 属性分组 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class AttrGroupServiceImpl extends ServiceImpl implements AttrGroupService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java new file mode 100644 index 0000000..f3ac9c9 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.Attr; +import com.atguigu.ssyx.product.mapper.AttrMapper; +import com.atguigu.ssyx.product.service.AttrService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 商品属性 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class AttrServiceImpl extends ServiceImpl implements AttrService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/CategoryServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..f4c8264 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/CategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.product.mapper.CategoryMapper; +import com.atguigu.ssyx.product.service.CategoryService; +import com.atguigu.ssyx.vo.product.CategoryQueryVo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 商品三级分类 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + + /** + * 获取商品分类分页列表 + */ + @Override + public IPage selectPage(Page pageParam, CategoryQueryVo vo) { + String name = vo.getName(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(!StringUtils.isEmpty(name), Category::getName, name); + + return baseMapper.selectPage(pageParam, wrapper); + } + + /** + * 获取全部商品分类 + */ + @Override + public List findAllList() { + return list(Wrappers.lambdaQuery().orderByAsc(Category::getSort)); + } +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java new file mode 100644 index 0000000..4f84a47 --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.SkuAttrValue; +import com.atguigu.ssyx.product.mapper.SkuAttrValueMapper; +import com.atguigu.ssyx.product.service.SkuAttrValueService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * spu属性值 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class SkuAttrValueServiceImpl extends ServiceImpl implements SkuAttrValueService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java new file mode 100644 index 0000000..c16cc9a --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.SkuImage; +import com.atguigu.ssyx.product.mapper.SkuImageMapper; +import com.atguigu.ssyx.product.service.SkuImageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 商品图片 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class SkuImageServiceImpl extends ServiceImpl implements SkuImageService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java new file mode 100644 index 0000000..a6cb98b --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.product.mapper.SkuInfoMapper; +import com.atguigu.ssyx.product.service.SkuInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * sku信息 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class SkuInfoServiceImpl extends ServiceImpl implements SkuInfoService { + +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java new file mode 100644 index 0000000..35edf9b --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.product.service.impl; + +import com.atguigu.ssyx.model.product.SkuPoster; +import com.atguigu.ssyx.product.mapper.SkuPosterMapper; +import com.atguigu.ssyx.product.service.SkuPosterService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 商品海报表 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-03 + */ +@Service +public class SkuPosterServiceImpl extends ServiceImpl implements SkuPosterService { + +} diff --git a/service/service-product/src/main/resources/mapper/AttrGroupMapper.xml b/service/service-product/src/main/resources/mapper/AttrGroupMapper.xml new file mode 100644 index 0000000..bef7818 --- /dev/null +++ b/service/service-product/src/main/resources/mapper/AttrGroupMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/AttrMapper.xml b/service/service-product/src/main/resources/mapper/AttrMapper.xml new file mode 100644 index 0000000..55a85a3 --- /dev/null +++ b/service/service-product/src/main/resources/mapper/AttrMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/BaseCategoryTrademarkMapper.xml b/service/service-product/src/main/resources/mapper/BaseCategoryTrademarkMapper.xml new file mode 100644 index 0000000..61edfa2 --- /dev/null +++ b/service/service-product/src/main/resources/mapper/BaseCategoryTrademarkMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/CategoryMapper.xml b/service/service-product/src/main/resources/mapper/CategoryMapper.xml new file mode 100644 index 0000000..ed9278f --- /dev/null +++ b/service/service-product/src/main/resources/mapper/CategoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/CommentMapper.xml b/service/service-product/src/main/resources/mapper/CommentMapper.xml new file mode 100644 index 0000000..90b190c --- /dev/null +++ b/service/service-product/src/main/resources/mapper/CommentMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/CommentReplayMapper.xml b/service/service-product/src/main/resources/mapper/CommentReplayMapper.xml new file mode 100644 index 0000000..564d57b --- /dev/null +++ b/service/service-product/src/main/resources/mapper/CommentReplayMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/MqRepeatRecordMapper.xml b/service/service-product/src/main/resources/mapper/MqRepeatRecordMapper.xml new file mode 100644 index 0000000..b961147 --- /dev/null +++ b/service/service-product/src/main/resources/mapper/MqRepeatRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/RegionWareMapper.xml b/service/service-product/src/main/resources/mapper/RegionWareMapper.xml new file mode 100644 index 0000000..ee53825 --- /dev/null +++ b/service/service-product/src/main/resources/mapper/RegionWareMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuAttrValueMapper.xml b/service/service-product/src/main/resources/mapper/SkuAttrValueMapper.xml new file mode 100644 index 0000000..bcf744e --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuAttrValueMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuDetailMapper.xml b/service/service-product/src/main/resources/mapper/SkuDetailMapper.xml new file mode 100644 index 0000000..7df959c --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuImageMapper.xml b/service/service-product/src/main/resources/mapper/SkuImageMapper.xml new file mode 100644 index 0000000..b144efe --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuImageMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuInfoMapper.xml b/service/service-product/src/main/resources/mapper/SkuInfoMapper.xml new file mode 100644 index 0000000..5052dec --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuPosterMapper.xml b/service/service-product/src/main/resources/mapper/SkuPosterMapper.xml new file mode 100644 index 0000000..010e3dd --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuPosterMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/SkuStockHistoryMapper.xml b/service/service-product/src/main/resources/mapper/SkuStockHistoryMapper.xml new file mode 100644 index 0000000..102a7df --- /dev/null +++ b/service/service-product/src/main/resources/mapper/SkuStockHistoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/resources/mapper/WareMapper.xml b/service/service-product/src/main/resources/mapper/WareMapper.xml new file mode 100644 index 0000000..2765aed --- /dev/null +++ b/service/service-product/src/main/resources/mapper/WareMapper.xml @@ -0,0 +1,5 @@ + + + + + From 69fa0ab77d611c6b9a054a559025e3bfe7a2deb4 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Wed, 3 Apr 2024 16:45:08 +0800 Subject: [PATCH 15/23] =?UTF-8?q?feat(product):=20=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E5=88=86=E7=BB=84=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AttrGroupController.java | 75 ++++++++++++++++++- .../product/service/AttrGroupService.java | 11 +++ .../service/impl/AttrGroupServiceImpl.java | 18 +++++ 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java index 4b0c509..b9ba035 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrGroupController.java @@ -1,9 +1,19 @@ package com.atguigu.ssyx.product.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.AttrGroup; +import com.atguigu.ssyx.product.service.AttrGroupService; +import com.atguigu.ssyx.vo.product.AttrGroupQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import java.util.List; /** *

@@ -13,9 +23,68 @@ import org.springframework.web.bind.annotation.RestController; * @author bunny * @since 2024-04-03 */ +@Api(value = "AttrGroup管理", tags = "平台属性分组管理") @RestController -@RequestMapping("/product/attr-group") +@RequestMapping(value = "/admin/product/attrGroup") public class AttrGroupController { + @Autowired + private AttrGroupService attrGroupService; + @ApiOperation(value = "获取分页列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + + @ApiParam(name = "attrGroupQueryVo", value = "查询对象", required = false) + AttrGroupQueryVo attrGroupQueryVo) { + Page pageParam = new Page<>(page, limit); + IPage pageModel = attrGroupService.selectPage(pageParam, attrGroupQueryVo); + return Result.success(pageModel); + } + + @ApiOperation(value = "获取") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + AttrGroup attrGroup = attrGroupService.getById(id); + return Result.success(attrGroup); + } + + @ApiOperation(value = "新增") + @PostMapping("save") + public Result save(@RequestBody AttrGroup group) { + attrGroupService.save(group); + return Result.success(); + } + + @ApiOperation(value = "修改") + @PutMapping("update") + public Result updateById(@RequestBody AttrGroup attrGroup) { + attrGroupService.updateById(attrGroup); + return Result.success(); + } + + @ApiOperation(value = "删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + attrGroupService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除") + @DeleteMapping("batchRemove") + public Result batchRemove(@RequestBody List ids) { + attrGroupService.removeByIds(ids); + return Result.success(); + } + + @ApiOperation(value = "获取全部属性分组") + @GetMapping("findAllList") + public Result> findAllList() { + return Result.success(attrGroupService.list()); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java index b026dd2..c1a9580 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrGroupService.java @@ -1,6 +1,9 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.AttrGroup; +import com.atguigu.ssyx.vo.product.AttrGroupQueryVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -13,4 +16,12 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface AttrGroupService extends IService { + /** + * 获取分页列表 + * + * @param pageParam 分页查询条件 + * @param vo 查询分页参数 + * @return 分页查询结果 + */ + IPage selectPage(Page pageParam, AttrGroupQueryVo vo); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java index 58b7b92..70a4ead 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrGroupServiceImpl.java @@ -3,6 +3,10 @@ package com.atguigu.ssyx.product.service.impl; import com.atguigu.ssyx.model.product.AttrGroup; import com.atguigu.ssyx.product.mapper.AttrGroupMapper; import com.atguigu.ssyx.product.service.AttrGroupService; +import com.atguigu.ssyx.vo.product.AttrGroupQueryVo; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -17,4 +21,18 @@ import org.springframework.stereotype.Service; @Service public class AttrGroupServiceImpl extends ServiceImpl implements AttrGroupService { + /** + * 获取分页列表 + * + * @param pageParam 分页查询条件 + * @param vo 查询分页参数 + * @return 分页查询结果 + */ + @Override + public IPage selectPage(Page pageParam, AttrGroupQueryVo vo) { + QueryWrapper wrapper = new QueryWrapper<>(); + + wrapper.orderByDesc("id"); + return baseMapper.selectPage(pageParam, wrapper); + } } From 916dcab6f04fb6887c718cfe409a314cd07726d7 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Wed, 3 Apr 2024 16:52:25 +0800 Subject: [PATCH 16/23] =?UTF-8?q?feat(product):=20=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/controller/AttrController.java | 59 ++++++++++++++++++- .../ssyx/product/service/AttrService.java | 6 ++ .../product/service/impl/AttrServiceImpl.java | 13 +++- 3 files changed, 74 insertions(+), 4 deletions(-) diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java index 18ad0d9..4054b24 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/AttrController.java @@ -1,9 +1,16 @@ package com.atguigu.ssyx.product.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.Attr; +import com.atguigu.ssyx.product.service.AttrService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import java.util.List; /** *

@@ -13,9 +20,55 @@ import org.springframework.web.bind.annotation.RestController; * @author bunny * @since 2024-04-03 */ +@Api(value = "Attr管理", tags = "平台属性管理") @RestController -@RequestMapping("/product/attr") +@RequestMapping(value = "/admin/product/attr") public class AttrController { + @Autowired + private AttrService attrService; + @ApiOperation(value = "获取列表") + @GetMapping("{attrGroupId}") + public Result> index( + @ApiParam(name = "attrGroupId", value = "分组id", required = true) + @PathVariable Long attrGroupId) { + List attrList = attrService.findByAttrGroupId(attrGroupId); + return Result.success(attrList); + } + + @ApiOperation(value = "获取") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + Attr attr = attrService.getById(id); + return Result.success(attr); + } + + @ApiOperation(value = "新增") + @PostMapping("save") + public Result save(@RequestBody Attr attr) { + attrService.save(attr); + return Result.success(); + } + + @ApiOperation(value = "修改") + @PutMapping("update") + public Result updateById(@RequestBody Attr attr) { + attrService.updateById(attr); + return Result.success(); + } + + @ApiOperation(value = "删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + attrService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除") + @DeleteMapping("batchRemove") + public Result batchRemove(@RequestBody List ids) { + attrService.removeByIds(ids); + return Result.success(); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java index 73b265d..d37b885 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/AttrService.java @@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.Attr; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 商品属性 服务类 @@ -13,4 +15,8 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface AttrService extends IService { + /** + * 获取列表 + */ + List findByAttrGroupId(Long attrGroupId); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java index f3ac9c9..5097704 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java @@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl; import com.atguigu.ssyx.model.product.Attr; import com.atguigu.ssyx.product.mapper.AttrMapper; import com.atguigu.ssyx.product.service.AttrService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 商品属性 服务实现类 @@ -16,5 +19,13 @@ import org.springframework.stereotype.Service; */ @Service public class AttrServiceImpl extends ServiceImpl implements AttrService { - + /** + * 获取列表 + */ + @Override + public List findByAttrGroupId(Long attrGroupId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Attr::getAttrGroupId, attrGroupId); + return baseMapper.selectList(wrapper); + } } From e7eb08ca3bd42a1acc3d5837ee3c1f39270f1a58 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 03:27:33 +0800 Subject: [PATCH 17/23] =?UTF-8?q?feat(=E4=BF=AE=E6=94=B9):=20=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=90=AF=E5=8A=A8=E9=A1=B9=E7=9B=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 30 +++ .idea/encodings.xml | 1 + .idea/misc.xml | 2 +- pom.xml | 7 + service/pom.xml | 1 + .../src/main/resources/application.yml | 2 +- service/service-product/Dockerfile | 21 ++ service/service-product/pom.xml | 5 +- .../product/controller/SkuInfoController.java | 92 +++++++- .../product/service/SkuAttrValueService.java | 9 + .../ssyx/product/service/SkuImageService.java | 9 + .../ssyx/product/service/SkuInfoService.java | 58 +++++ .../product/service/SkuPosterService.java | 9 + .../service/impl/SkuAttrValueServiceImpl.java | 13 ++ .../service/impl/SkuImageServiceImpl.java | 14 +- .../service/impl/SkuInfoServiceImpl.java | 199 ++++++++++++++++++ .../service/impl/SkuPosterServiceImpl.java | 14 +- .../src/main/resources/application.yml | 2 +- service/service-search/Dockerfile | 21 ++ service/service-search/pom.xml | 32 +++ .../src/main/resources/application-dev.yml | 27 +++ .../src/main/resources/application.yml | 62 ++++++ .../src/main/resources/banner.txt | 16 ++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes .../src/main/resources/application.yml | 2 +- 25 files changed, 638 insertions(+), 10 deletions(-) create mode 100644 service/service-product/Dockerfile create mode 100644 service/service-search/Dockerfile create mode 100644 service/service-search/pom.xml create mode 100644 service/service-search/src/main/resources/application-dev.yml create mode 100644 service/service-search/src/main/resources/application.yml create mode 100644 service/service-search/src/main/resources/banner.txt create mode 100644 service/service-search/src/main/resources/favicon.ico diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index a57e5fc..3dab06b 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -7,6 +7,36 @@ true com.mysql.cj.jdbc.Driver jdbc:mysql://106.15.251.123:3305/shequ-acl?serverTimezone=GMT + + + + + + + $ProjectFileDir$ + + + mysql.8 + true + true + $PROJECT_DIR$/service/service-sys/src/main/resources/application.yml + com.mysql.cj.jdbc.Driver + jdbc:mysql://106.15.251.123:3305/shequ-sys?serverTimezone=GMT + + + + + + + $ProjectFileDir$ + + + mysql.8 + true + true + $PROJECT_DIR$/service/service-product/src/main/resources/application.yml + com.mysql.cj.jdbc.Driver + jdbc:mysql://106.15.251.123:3305/shequ-product?serverTimezone=GMT diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 4534e5f..b85319c 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -15,6 +15,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index fd42907..132404b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 708b841..df6b8c1 100644 --- a/pom.xml +++ b/pom.xml @@ -121,6 +121,13 @@ okhttp 4.9.3 + + + + cn.hutool + hutool-all + 5.8.25 + diff --git a/service/pom.xml b/service/pom.xml index 1013f23..c36e6ba 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -16,6 +16,7 @@ service-acl service-sys service-product + service-search diff --git a/service/service-acl/src/main/resources/application.yml b/service/service-acl/src/main/resources/application.yml index 4b98984..5c9022d 100644 --- a/service/service-acl/src/main/resources/application.yml +++ b/service/service-acl/src/main/resources/application.yml @@ -11,7 +11,7 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: ${bunny.datasource.username} - password: "${bunny.datasource.password}" + password: ${bunny.datasource.password} cloud: sentinel: diff --git a/service/service-product/Dockerfile b/service/service-product/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service/service-product/Dockerfile @@ -0,0 +1,21 @@ +FROM openjdk:17 +MAINTAINER bunny + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/bunny + +# 复制jar包 +COPY target/*.jar /home/bunny/app.jar + +#启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] + +#暴露 8080 端口 +EXPOSE 8080 \ No newline at end of file diff --git a/service/service-product/pom.xml b/service/service-product/pom.xml index 921dc11..5683617 100644 --- a/service/service-product/pom.xml +++ b/service/service-product/pom.xml @@ -18,6 +18,9 @@ - + + cn.hutool + hutool-all + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java index cd6dbc0..1f69e01 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuInfoController.java @@ -1,9 +1,20 @@ package com.atguigu.ssyx.product.controller; -import org.springframework.web.bind.annotation.RequestMapping; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.product.service.SkuInfoService; +import com.atguigu.ssyx.vo.product.SkuInfoQueryVo; +import com.atguigu.ssyx.vo.product.SkuInfoVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RestController; +import java.util.List; /** *

@@ -13,9 +24,84 @@ import org.springframework.web.bind.annotation.RestController; * @author bunny * @since 2024-04-03 */ +@Api(value = "SkuInfo管理", tags = "商品Sku管理") @RestController -@RequestMapping("/product/sku-info") +@RequestMapping(value = "/admin/product/skuInfo") public class SkuInfoController { + @Autowired + private SkuInfoService skuInfoService; + @ApiOperation(value = "获取sku分页列表") + @GetMapping("{page}/{limit}") + public Result> index( + @ApiParam(name = "page", value = "当前页码", required = true) + @PathVariable Long page, + + @ApiParam(name = "limit", value = "每页记录数", required = true) + @PathVariable Long limit, + + @ApiParam(name = "skuInfoQueryVo", value = "查询对象", required = false) + SkuInfoQueryVo skuInfoQueryVo) { + Page pageParam = new Page<>(page, limit); + IPage pageModel = skuInfoService.selectPage(pageParam, skuInfoQueryVo); + return Result.success(pageModel); + } + + @ApiOperation(value = "商品添加方法") + @PostMapping("save") + public Result save(@RequestBody SkuInfoVo skuInfoVo) { + skuInfoService.saveSkuInfo(skuInfoVo); + return Result.success(); + } + + @ApiOperation(value = "获取商品SKU信息") + @GetMapping("get/{id}") + public Result get(@PathVariable Long id) { + SkuInfoVo skuInfoVo = skuInfoService.getSkuInfoVo(id); + return Result.success(skuInfoVo); + } + + @ApiOperation(value = "修改商品sku信息") + @PutMapping("update") + public Result updateById(@RequestBody SkuInfoVo skuInfoVo) { + skuInfoService.updateSkuInfo(skuInfoVo); + return Result.success(); + } + + @ApiOperation(value = "商品SKU删除") + @DeleteMapping("remove/{id}") + public Result remove(@PathVariable Long id) { + skuInfoService.removeById(id); + return Result.success(); + } + + @ApiOperation(value = "根据id列表删除") + @DeleteMapping("batchRemove") + public Result batchRemove(@RequestBody List ids) { + skuInfoService.removeByIds(ids); + return Result.success(); + } + + @ApiOperation(value = "商品审核") + @GetMapping("check/{skuId}/{status}") + public Result check(@PathVariable Long skuId, @PathVariable Integer status) { + skuInfoService.check(skuId, status); + return Result.success(); + } + + @ApiOperation(value = "商品上架") + @GetMapping("publish/{skuId}/{status}") + public Result publish(@PathVariable("skuId") Long skuId, + @PathVariable("status") Integer status) { + skuInfoService.publish(skuId, status); + return Result.success(); + } + + @ApiOperation(value = "新人专享") + @GetMapping("isNewPerson/{skuId}/{status}") + public Result isNewPerson(@PathVariable Long skuId, @PathVariable Integer status) { + skuInfoService.isNewPerson(skuId, status); + return Result.success(); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java index 120f6b1..bf55e8e 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuAttrValueService.java @@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.SkuAttrValue; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* spu属性值 服务类 @@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface SkuAttrValueService extends IService { + /** + * 根据id查询商品属性信息列表 + * + * @param id 商品id + * @return 图片列表 + */ + List getAttrValueListBySkuId(Long id); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java index 26c3e76..5ce3529 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuImageService.java @@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.SkuImage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 商品图片 服务类 @@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface SkuImageService extends IService { + /** + * 根据id查询商品图片列表 + * + * @param id 商品id + * @return 商品图片列表 + */ + List getImageListBySkuId(Long id); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java index d9b08c9..a76aa13 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuInfoService.java @@ -1,6 +1,10 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.vo.product.SkuInfoQueryVo; +import com.atguigu.ssyx.vo.product.SkuInfoVo; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; /** @@ -13,4 +17,58 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface SkuInfoService extends IService { + /** + * 获取sku分页列表 + * + * @param pageParam 分页查询条件 + * @param skuInfoQueryVo 商品查询条件 + * @return 分页结果 + */ + IPage selectPage(Page pageParam, SkuInfoQueryVo skuInfoQueryVo); + + /** + * 商品添加方法 + * + * @param skuInfoVo 商品信息 + */ + void saveSkuInfo(SkuInfoVo skuInfoVo); + + /** + * 获取商品SKU信息 + * + * @param id 商品id + * @return 商品信息 + */ + SkuInfoVo getSkuInfoVo(Long id); + + /** + * 修改商品sku信息 + * + * @param skuInfoVo 商品信息 + */ + void updateSkuInfo(SkuInfoVo skuInfoVo); + + /** + * 商品审核 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + void check(Long skuId, Integer status); + + /** + * 商品上架 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + void publish(Long skuId, Integer status); + + /** + * 新人专享 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + void isNewPerson(Long skuId, Integer status); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java index abf22d1..52be52b 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/SkuPosterService.java @@ -3,6 +3,8 @@ package com.atguigu.ssyx.product.service; import com.atguigu.ssyx.model.product.SkuPoster; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 商品海报表 服务类 @@ -13,4 +15,11 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface SkuPosterService extends IService { + /** + * 根据id查询商品海报列表 + * + * @param id 商品id + * @return 图片列表 + */ + List getPosterListBySkuId(Long id); } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java index 4f84a47..e65d7c0 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuAttrValueServiceImpl.java @@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl; import com.atguigu.ssyx.model.product.SkuAttrValue; import com.atguigu.ssyx.product.mapper.SkuAttrValueMapper; import com.atguigu.ssyx.product.service.SkuAttrValueService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* spu属性值 服务实现类 @@ -17,4 +20,14 @@ import org.springframework.stereotype.Service; @Service public class SkuAttrValueServiceImpl extends ServiceImpl implements SkuAttrValueService { + /** + * 根据id查询商品属性信息列表 + * + * @param id 商品id + * @return 图片列表 + */ + @Override + public List getAttrValueListBySkuId(Long id) { + return baseMapper.selectList(Wrappers.lambdaQuery().eq(SkuAttrValue::getSkuId, id)); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java index c16cc9a..b6a363a 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuImageServiceImpl.java @@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl; import com.atguigu.ssyx.model.product.SkuImage; import com.atguigu.ssyx.product.mapper.SkuImageMapper; import com.atguigu.ssyx.product.service.SkuImageService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 商品图片 服务实现类 @@ -16,5 +19,14 @@ import org.springframework.stereotype.Service; */ @Service public class SkuImageServiceImpl extends ServiceImpl implements SkuImageService { - + /** + * 根据id查询商品图片列表 + * + * @param id 商品id + * @return 商品图片列表 + */ + @Override + public List getImageListBySkuId(Long id) { + return baseMapper.selectList(Wrappers.lambdaQuery().eq(SkuImage::getSkuId, id)); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java index a6cb98b..f740277 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java @@ -1,10 +1,29 @@ package com.atguigu.ssyx.product.service.impl; +import com.atguigu.ssyx.model.product.SkuAttrValue; +import com.atguigu.ssyx.model.product.SkuImage; import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.model.product.SkuPoster; import com.atguigu.ssyx.product.mapper.SkuInfoMapper; +import com.atguigu.ssyx.product.service.SkuAttrValueService; +import com.atguigu.ssyx.product.service.SkuImageService; import com.atguigu.ssyx.product.service.SkuInfoService; +import com.atguigu.ssyx.product.service.SkuPosterService; +import com.atguigu.ssyx.vo.product.SkuInfoQueryVo; +import com.atguigu.ssyx.vo.product.SkuInfoVo; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.jsonwebtoken.lang.Collections; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; + +import java.util.List; /** *

@@ -16,5 +35,185 @@ import org.springframework.stereotype.Service; */ @Service public class SkuInfoServiceImpl extends ServiceImpl implements SkuInfoService { + @Autowired + private SkuAttrValueService skuAttrValueService; + @Autowired + private SkuImageService skuImageService; + @Autowired + private SkuPosterService skuPosterService; + + /** + * 获取sku分页列表 + * + * @param pageParam 分页查询条件 + * @param vo 商品查询条件 + * @return 分页结果 + */ + @Override + public IPage selectPage(Page pageParam, SkuInfoQueryVo vo) { + String keyword = vo.getKeyword(); + String skuType = vo.getSkuType(); + Long categoryId = vo.getCategoryId(); + + // 封装查询条件 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(!StringUtils.isEmpty(keyword), SkuInfo::getSkuName, keyword); + wrapper.eq(!StringUtils.isEmpty(skuType), SkuInfo::getSkuType, skuType); + wrapper.eq(categoryId != null, SkuInfo::getCategoryId, categoryId); + + // 返回结果 + return page(pageParam, wrapper); + } + + /** + * 商品添加方法 + * + * @param skuInfoVo 商品信息 + */ + @Override + public void saveSkuInfo(SkuInfoVo skuInfoVo) { + // 添加sku基本信息 + SkuInfo skuInfo = new SkuInfo(); + BeanUtils.copyProperties(skuInfoVo, skuInfo); + baseMapper.insert(skuInfo); + // 保存sku海报 + List skuPosterList = skuInfoVo.getSkuPosterList(); + if (!Collections.isEmpty(skuPosterList)) { + skuPosterList.forEach(skuPoster -> skuPoster.setSkuId(skuInfo.getId())); + skuPosterService.saveBatch(skuPosterList); + } + // 保存sku图片 + List skuImagesList = skuInfoVo.getSkuImagesList(); + if (!Collections.isEmpty(skuImagesList)) { + skuImagesList.forEach(skuImage -> skuImage.setSkuId(skuImage.getId())); + skuImageService.saveBatch(skuImagesList); + } + // 保存sku属性 + List skuAttrValueList = skuInfoVo.getSkuAttrValueList(); + if (!Collections.isEmpty(skuImagesList)) { + skuAttrValueList.forEach(skuAttrValue -> skuAttrValue.setSkuId(skuInfo.getId())); + skuAttrValueService.saveBatch(skuAttrValueList); + } + } + + /** + * 获取商品SKU信息 + * + * @param id 商品id + * @return 商品信息 + */ + @Override + public SkuInfoVo getSkuInfoVo(Long id) { + SkuInfoVo skuInfoVo = new SkuInfoVo(); + + // 根据id查询sku基本信息 + SkuInfo skuInfo = baseMapper.selectById(id); + + // 根据id查询商品图片列表 + List skuImageList = skuImageService.getImageListBySkuId(id); + + // 根据id查询商品海报列表 + List skuPosterList = skuPosterService.getPosterListBySkuId(id); + + // 根据id查询商品属性信息列表 + List skuAttrValueList = skuAttrValueService.getAttrValueListBySkuId(id); + + BeanUtils.copyProperties(skuInfo, skuInfoVo); + skuInfoVo.setSkuAttrValueList(skuAttrValueList); + skuInfoVo.setSkuImagesList(skuImageList); + skuInfoVo.setSkuPosterList(skuPosterList); + + // 封装数据返回 + return skuInfoVo; + } + + /** + * 修改商品sku信息 + * + * @param skuInfoVo 商品信息 + */ + @Override + public void updateSkuInfo(SkuInfoVo skuInfoVo) { + // 修改sku基本信息 + SkuInfo skuInfo = new SkuInfo(); + BeanUtils.copyProperties(skuInfo, skuInfo); + baseMapper.updateById(skuInfo); + + // 海报信息 + Long skuId = skuInfoVo.getId(); + // 创建查询条件,并删除之前的海报内容 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SkuPoster::getSkuId, skuId); + skuPosterService.remove(wrapper); + + // 设置海报图片skuId值,并完成添加 + List skuPosterList = skuInfoVo.getSkuPosterList(); + if (!CollectionUtils.isEmpty(skuPosterList)) { + skuPosterList.forEach(skuPoster -> skuPoster.setSkuId(skuId)); + skuPosterService.saveBatch(skuPosterList); + } + + // 商品图片 + skuImageService.remove(Wrappers.lambdaQuery().eq(SkuImage::getSkuId, skuId)); + List skuImagesList = skuInfoVo.getSkuImagesList(); + if (!Collections.isEmpty(skuImagesList)) { + skuImagesList.forEach(skuImage -> skuImage.setSkuId(skuId)); + skuImageService.saveBatch(skuImagesList); + } + + // 商品属性 + skuAttrValueService.remove(Wrappers.lambdaQuery().eq(SkuAttrValue::getSkuId, skuId)); + List skuAttrValueList = skuInfoVo.getSkuAttrValueList(); + if (!Collections.isEmpty(skuAttrValueList)) { + skuAttrValueList.forEach(skuAttrValue -> skuAttrValue.setSkuId(skuId)); + skuAttrValueService.saveBatch(skuAttrValueList); + } + } + + /** + * 商品审核 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + @Override + public void check(Long skuId, Integer status) { + SkuInfo skuInfo = new SkuInfo(); + skuInfo.setId(skuId); + skuInfo.setCheckStatus(status); + updateById(skuInfo); + } + + /** + * 商品上架 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + @Override + public void publish(Long skuId, Integer status) { + SkuInfo skuInfo = new SkuInfo(); + skuInfo.setId(skuId); + if (status == 1) { + skuInfo.setPublishStatus(status); + } else { + skuInfo.setPublishStatus(0); + } + baseMapper.updateById(skuInfo); + } + + /** + * 新人专享 + * + * @param skuId 商品ID + * @param status 商品状态 + */ + @Override + public void isNewPerson(Long skuId, Integer status) { + SkuInfo skuInfo = new SkuInfo(); + skuInfo.setId(skuId); + skuInfo.setIsNewPerson(status); + baseMapper.updateById(skuInfo); + } } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java index 35edf9b..c7bba8c 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuPosterServiceImpl.java @@ -3,9 +3,12 @@ package com.atguigu.ssyx.product.service.impl; import com.atguigu.ssyx.model.product.SkuPoster; import com.atguigu.ssyx.product.mapper.SkuPosterMapper; import com.atguigu.ssyx.product.service.SkuPosterService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 商品海报表 服务实现类 @@ -16,5 +19,14 @@ import org.springframework.stereotype.Service; */ @Service public class SkuPosterServiceImpl extends ServiceImpl implements SkuPosterService { - + /** + * 根据id查询商品海报列表 + * + * @param id 商品id + * @return 图片列表 + */ + @Override + public List getPosterListBySkuId(Long id) { + return baseMapper.selectList(Wrappers.lambdaQuery().eq(SkuPoster::getSkuId, id)); + } } diff --git a/service/service-product/src/main/resources/application.yml b/service/service-product/src/main/resources/application.yml index 1d69fb6..8d33931 100644 --- a/service/service-product/src/main/resources/application.yml +++ b/service/service-product/src/main/resources/application.yml @@ -11,7 +11,7 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: ${bunny.datasource.username} - password: "${bunny.datasource.password}" + password: ${bunny.datasource.password} cloud: sentinel: diff --git a/service/service-search/Dockerfile b/service/service-search/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service/service-search/Dockerfile @@ -0,0 +1,21 @@ +FROM openjdk:17 +MAINTAINER bunny + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/bunny + +# 复制jar包 +COPY target/*.jar /home/bunny/app.jar + +#启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] + +#暴露 8080 端口 +EXPOSE 8080 \ No newline at end of file diff --git a/service/service-search/pom.xml b/service/service-search/pom.xml new file mode 100644 index 0000000..7d73f9f --- /dev/null +++ b/service/service-search/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + + com.atguigu + service + 1.0-SNAPSHOT + + + service-search + jar + + service-search + https://maven.apache.org + + + UTF-8 + + + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + + + + + + + + + diff --git a/service/service-search/src/main/resources/application-dev.yml b/service/service-search/src/main/resources/application-dev.yml new file mode 100644 index 0000000..642acdd --- /dev/null +++ b/service/service-search/src/main/resources/application-dev.yml @@ -0,0 +1,27 @@ +server: + port: 8203 + +bunny: + datasource: + host: 106.15.251.123 + port: 3305 + sqlData: shequ-product + username: root + password: "02120212" + + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx + + redis: + host: 47.120.65.66 + port: 6379 + database: 2 + password: "02120212" + + minio: + endpointUrl: "http://129.211.31.58:9000" + bucket-name: ssyx + accessKey: bunny + secretKey: "02120212" \ No newline at end of file diff --git a/service/service-search/src/main/resources/application.yml b/service/service-search/src/main/resources/application.yml new file mode 100644 index 0000000..8d33931 --- /dev/null +++ b/service/service-search/src/main/resources/application.yml @@ -0,0 +1,62 @@ +server: + port: 8203 +spring: + application: + name: service-product + profiles: + active: dev + + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true + username: ${bunny.datasource.username} + password: ${bunny.datasource.password} + + cloud: + sentinel: + log: + dir: logs/${spring.application.name}/sentinel + nacos: + discovery: + namespace: ${bunny.nacos.discovery.namespace} + server-addr: ${bunny.nacos.server-addr} + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + +mybatis-plus: + type-aliases-package: com.atguigu.model # 配置每个包前缀 + mapper-locations: classpath:mapper/*.xml + configuration: + map-underscore-to-camel-case: true + auto-mapping-behavior: full + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 + global-config: + db-config: + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ + # 全局配置主键值方式 + id-type: assign_id + logic-not-delete-value: 0 # 未删除默认为0 + logic-delete-value: 1 # 删除 + logic-delete-field: deleted # 全局配置逻辑删除 + +logging: + level: + com.atguigu.ssyx.acl.mapper: debug + com.atguigu.ssyx.acl.controller: info + com.atguigu.ssyx.acl.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" + +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file diff --git a/service/service-search/src/main/resources/banner.txt b/service/service-search/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service/service-search/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service/service-search/src/main/resources/favicon.ico b/service/service-search/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ba397c45de65f92b238bb9f94608320bf32209b GIT binary patch literal 13342 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 literal 0 HcmV?d00001 diff --git a/service/service-sys/src/main/resources/application.yml b/service/service-sys/src/main/resources/application.yml index 35787e2..ae79b49 100644 --- a/service/service-sys/src/main/resources/application.yml +++ b/service/service-sys/src/main/resources/application.yml @@ -12,7 +12,7 @@ spring: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true username: ${bunny.datasource.username} - password: "${bunny.datasource.password}" + password: ${bunny.datasource.password} cloud: sentinel: From 0f06295fc5b6d11a913e512a818ed33063b683b6 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 15:52:54 +0800 Subject: [PATCH 18/23] =?UTF-8?q?feat(search):=20search=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 13 ++++ .../atguigu/ssyx/{ => common}/CodeGet.java | 2 +- .../src/main/resources/application-dev.yml | 6 -- .../controller/FileUploadController.java | 27 +++++++ .../product/service/FileUploadService.java | 13 ++++ .../service/impl/FileUploadServiceImpl.java | 58 ++++++++++++++ .../src/main/resources/application-dev.yml | 6 -- service/service-search/pom.xml | 6 +- .../ssyx/search/ServiceSearchApplication.java | 19 +++++ .../search/controller/SkuApiController.java | 9 +++ .../ssyx/search/repository/SkuRepository.java | 7 ++ .../ssyx/search/service/SkuService.java | 4 + .../search/service/impl/SkuServiceImpl.java | 8 ++ .../src/main/resources/application-dev.yml | 16 ++-- .../src/main/resources/application.yml | 77 +++++++++++-------- .../src/main/resources/application-dev.yml | 6 -- 16 files changed, 218 insertions(+), 59 deletions(-) rename common/service-util/src/main/java/com/atguigu/ssyx/{ => common}/CodeGet.java (98%) create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/FileUploadService.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/FileUploadServiceImpl.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/repository/SkuRepository.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 3dab06b..2f95d82 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -44,5 +44,18 @@ $ProjectFileDir$ + + redis + true + true + jdbc.RedisDriver + jdbc:redis://47.120.65.66:6379/0 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java similarity index 98% rename from common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java rename to common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java index 665de88..46b171a 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/CodeGet.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java @@ -1,4 +1,4 @@ -package com.atguigu.ssyx; +package com.atguigu.ssyx.common; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.generator.AutoGenerator; diff --git a/service/service-acl/src/main/resources/application-dev.yml b/service/service-acl/src/main/resources/application-dev.yml index 5f1e5ac..e5bc728 100644 --- a/service/service-acl/src/main/resources/application-dev.yml +++ b/service/service-acl/src/main/resources/application-dev.yml @@ -14,12 +14,6 @@ bunny: discovery: namespace: ssyx - redis: - host: 47.120.65.66 - port: 6379 - database: 2 - password: "02120212" - minio: endpointUrl: "http://129.211.31.58:9000" bucket-name: ssyx diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java new file mode 100644 index 0000000..c4521da --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java @@ -0,0 +1,27 @@ +package com.atguigu.ssyx.product.controller; + +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.product.service.FileUploadService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.multipart.MultipartFile; + +@Api(tags = "文件上传接口") +@RestController +@RequestMapping("admin/product") +public class FileUploadController { + @Autowired + private FileUploadService fileUploadService; + + @ApiOperation(value = "文件上传") + @PostMapping("fileUpload") + public Result fileUpload(@RequestBody MultipartFile file) { + String filename = fileUploadService.uploadFile(file); + return Result.success(filename); + } +} \ No newline at end of file diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/FileUploadService.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/FileUploadService.java new file mode 100644 index 0000000..4822e1a --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/FileUploadService.java @@ -0,0 +1,13 @@ +package com.atguigu.ssyx.product.service; + +import org.springframework.web.multipart.MultipartFile; + +public interface FileUploadService { + /** + * 文件上传 + * + * @param file 上传的文件 + * @return 文件路径 + */ + String uploadFile(MultipartFile file); +} diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/FileUploadServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/FileUploadServiceImpl.java new file mode 100644 index 0000000..e00268b --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/FileUploadServiceImpl.java @@ -0,0 +1,58 @@ +package com.atguigu.ssyx.product.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.atguigu.ssyx.common.properties.MinioProperties; +import com.atguigu.ssyx.product.service.FileUploadService; +import io.minio.BucketExistsArgs; +import io.minio.MakeBucketArgs; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Date; +import java.util.UUID; + + +@Service +@Slf4j +public class FileUploadServiceImpl implements FileUploadService { + @Autowired + private MinioProperties properties; + @Autowired + private MinioClient minioClient; + + /** + * 文件上传 + * + * @param file 上传的文件 + * @return 文件路径 + */ + @Override + public String uploadFile(MultipartFile file) { + String bucketName = properties.getBucketName(); + String dir = DateUtil.format(new Date(), "yyyy-MM-dd"); + String uuid = UUID.randomUUID().toString(); + String filename = dir + "/" + uuid + "-" + file.getOriginalFilename(); + + try { + boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); + if (!bucketExists) { + log.warn("minio桶不存在:{}", bucketName); + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); + } + + // 存入图片 + minioClient.putObject(PutObjectArgs.builder() + .bucket(bucketName) + .object(filename) + .stream(file.getInputStream(), file.getSize(), -1).build()); + + return properties.getEndpointUrl() + "/" + properties.getBucketName() + "/" + filename; + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/service/service-product/src/main/resources/application-dev.yml b/service/service-product/src/main/resources/application-dev.yml index 642acdd..f955656 100644 --- a/service/service-product/src/main/resources/application-dev.yml +++ b/service/service-product/src/main/resources/application-dev.yml @@ -14,12 +14,6 @@ bunny: discovery: namespace: ssyx - redis: - host: 47.120.65.66 - port: 6379 - database: 2 - password: "02120212" - minio: endpointUrl: "http://129.211.31.58:9000" bucket-name: ssyx diff --git a/service/service-search/pom.xml b/service/service-search/pom.xml index 7d73f9f..3748cb6 100644 --- a/service/service-search/pom.xml +++ b/service/service-search/pom.xml @@ -22,7 +22,11 @@ org.springframework.boot spring-boot-starter-data-elasticsearch - + + + org.springframework.boot + spring-boot-starter-data-redis + diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java new file mode 100644 index 0000000..ef6e58d --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java @@ -0,0 +1,19 @@ +package com.atguigu.ssyx.search; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) +@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceSearchApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceSearchApplication.class, args); + } +} diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java new file mode 100644 index 0000000..b1d7d32 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java @@ -0,0 +1,9 @@ +package com.atguigu.ssyx.search.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/search/sku") +public class SkuApiController { +} diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/repository/SkuRepository.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/repository/SkuRepository.java new file mode 100644 index 0000000..718fb65 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/repository/SkuRepository.java @@ -0,0 +1,7 @@ +package com.atguigu.ssyx.search.repository; + +import com.atguigu.ssyx.model.search.SkuEs; +import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; + +public interface SkuRepository extends ElasticsearchRepository { +} diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java new file mode 100644 index 0000000..529a69b --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java @@ -0,0 +1,4 @@ +package com.atguigu.ssyx.search.service; + +public interface SkuService { +} diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java new file mode 100644 index 0000000..c883203 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java @@ -0,0 +1,8 @@ +package com.atguigu.ssyx.search.service.impl; + +import com.atguigu.ssyx.search.service.SkuService; +import org.springframework.stereotype.Service; + +@Service +public class SkuServiceImpl implements SkuService { +} diff --git a/service/service-search/src/main/resources/application-dev.yml b/service/service-search/src/main/resources/application-dev.yml index 642acdd..87baa8f 100644 --- a/service/service-search/src/main/resources/application-dev.yml +++ b/service/service-search/src/main/resources/application-dev.yml @@ -1,14 +1,16 @@ server: - port: 8203 + port: 8208 bunny: - datasource: - host: 106.15.251.123 - port: 3305 - sqlData: shequ-product - username: root + rabbitmq: + host: 116.196.101.14 + port: 5672 + username: bunny password: "02120212" + elasticsearch: + uris: http://192.168.1.4:9200 + nacos: server-addr: z-bunny.cn:8848 discovery: @@ -17,7 +19,7 @@ bunny: redis: host: 47.120.65.66 port: 6379 - database: 2 + database: 3 password: "02120212" minio: diff --git a/service/service-search/src/main/resources/application.yml b/service/service-search/src/main/resources/application.yml index 8d33931..c74c324 100644 --- a/service/service-search/src/main/resources/application.yml +++ b/service/service-search/src/main/resources/application.yml @@ -1,17 +1,39 @@ server: - port: 8203 + port: 8208 spring: application: - name: service-product + name: service-search profiles: active: dev - datasource: - type: com.zaxxer.hikari.HikariDataSource - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true - username: ${bunny.datasource.username} - password: ${bunny.datasource.password} + redis: + host: ${bunny.redis.host} + port: ${bunny.redis.port} + database: ${bunny.redis.database} + password: ${bunny.redis.password} + lettuce: + pool: + max-active: 20 #最大连接数 + max-wait: -1 #最大阻塞等待时间(负数表示没限制) + max-idle: 5 #最大空闲 + min-idle: 0 #最小空闲 + + elasticsearch: + rest: + uris: ${bunny.elasticsearch.uris} + + rabbitmq: + host: ${bunny.rabbitmq.host} + port: ${bunny.rabbitmq.port} + username: ${bunny.rabbitmq.username} + password: ${bunny.rabbitmq.password} + publisher-confirm-type: CORRELATED + publisher-returns: true + listener: + simple: + prefetch: 1 + concurrency: 3 + acknowledge-mode: manual cloud: sentinel: @@ -26,23 +48,21 @@ spring: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 +bunny: + minio: + endpointUrl: ${bunny.minio.endpointUrl} + accessKey: ${bunny.minio.accessKey} + secretKey: ${bunny.minio.secretKey} + bucket-name: ${bunny.minio.bucket-name} -mybatis-plus: - type-aliases-package: com.atguigu.model # 配置每个包前缀 - mapper-locations: classpath:mapper/*.xml - configuration: - map-underscore-to-camel-case: true - auto-mapping-behavior: full - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 - global-config: - db-config: - # 设置表名前缀,不用在每个tableName添加前缀 - # table-prefix: t_ - # 全局配置主键值方式 - id-type: assign_id - logic-not-delete-value: 0 # 未删除默认为0 - logic-delete-value: 1 # 删除 - logic-delete-field: deleted # 全局配置逻辑删除 +feign: + sentinel: + enabled: true + client: + config: + default: #配置全局的feign的调用超时时间 如果 有指定的服务配置 默认的配置不会生效 + connectTimeout: 30000 # 指定的是 消费者 连接服务提供者的连接超时时间 是否能连接 单位是毫秒 + readTimeout: 50000 # 指定的是调用服务提供者的 服务 的超时时间() 单位是毫秒 logging: level: @@ -52,11 +72,4 @@ logging: pattern: dateformat: HH:mm:ss:SSS file: - path: "logs/${spring.application.name}" - -bunny: - minio: - endpointUrl: ${bunny.minio.endpointUrl} - accessKey: ${bunny.minio.accessKey} - secretKey: ${bunny.minio.secretKey} - bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file + path: "logs/${spring.application.name}" \ No newline at end of file diff --git a/service/service-sys/src/main/resources/application-dev.yml b/service/service-sys/src/main/resources/application-dev.yml index f56edaf..0b0222f 100644 --- a/service/service-sys/src/main/resources/application-dev.yml +++ b/service/service-sys/src/main/resources/application-dev.yml @@ -14,12 +14,6 @@ bunny: discovery: namespace: ssyx - redis: - host: 47.120.65.66 - port: 6379 - database: 2 - password: "02120212" - minio: endpointUrl: "http://129.211.31.58:9000" bucket-name: ssyx From 8207c5269ec6e1920abffb930f3bb077d14b7764 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 16:34:58 +0800 Subject: [PATCH 19/23] =?UTF-8?q?feat(search):=20=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B0ES?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deployment.xml | 6 -- .idea/encodings.xml | 3 + pom.xml | 1 + service-client/pom.xml | 53 ++++++++++++++++++ service-client/service-product-client/pom.xml | 23 ++++++++ .../client/product/ProductFeignClient.java | 17 ++++++ service/pom.xml | 7 --- .../ssyx/acl/ServiceAclApplication.java | 2 +- .../product/ServiceProductApplication.java | 2 +- .../product/api/ProductInnerController.java | 38 +++++++++++++ service/service-search/pom.xml | 13 +++-- .../ssyx/search/ServiceSearchApplication.java | 5 +- .../search/controller/SkuApiController.java | 25 +++++++++ .../ssyx/search/service/SkuService.java | 13 +++++ .../search/service/impl/SkuServiceImpl.java | 56 +++++++++++++++++++ .../ssyx/sys/ServiceSysApplication.java | 2 +- 16 files changed, 241 insertions(+), 25 deletions(-) delete mode 100644 .idea/deployment.xml create mode 100644 service-client/pom.xml create mode 100644 service-client/service-product-client/pom.xml create mode 100644 service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java create mode 100644 service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java diff --git a/.idea/deployment.xml b/.idea/deployment.xml deleted file mode 100644 index 0ebb202..0000000 --- a/.idea/deployment.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index b85319c..7556275 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -13,6 +13,9 @@ + + + diff --git a/pom.xml b/pom.xml index df6b8c1..999a7f3 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ common model service + service-client diff --git a/service-client/pom.xml b/service-client/pom.xml new file mode 100644 index 0000000..b6ad079 --- /dev/null +++ b/service-client/pom.xml @@ -0,0 +1,53 @@ + + 4.0.0 + + com.atguigu + guigu-ssyx-parent + 1.0-SNAPSHOT + + + service-client + pom + + service-client + https://maven.apache.org + + service-product-client + + + + UTF-8 + + + + + com.atguigu + service-util + 1.0-SNAPSHOT + + + + com.atguigu + model + 1.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + org.springframework.cloud + spring-cloud-loadbalancer + + + diff --git a/service-client/service-product-client/pom.xml b/service-client/service-product-client/pom.xml new file mode 100644 index 0000000..f56182b --- /dev/null +++ b/service-client/service-product-client/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service-client + 1.0-SNAPSHOT + + + service-product-client + jar + + service-product-client + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java b/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java new file mode 100644 index 0000000..fb684ca --- /dev/null +++ b/service-client/service-product-client/src/main/java/com/atguigu/ssyx/client/product/ProductFeignClient.java @@ -0,0 +1,17 @@ +package com.atguigu.ssyx.client.product; + +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.model.product.SkuInfo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@FeignClient(value = "service-product", path = "/api/product") +public interface ProductFeignClient { + @GetMapping("inner/getCategory/{categoryId}") + Result getCategory(@PathVariable Long categoryId); + + @GetMapping("inner/getSkuInfo/{skuId}") + Result getSkuInfo(@PathVariable Long skuId); +} diff --git a/service/pom.xml b/service/pom.xml index c36e6ba..8091cd0 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -72,12 +72,5 @@ com.alibaba.cloud spring-cloud-starter-alibaba-sentinel - - - - org.springframework.boot - spring-boot-devtools - true - diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index f38d0d9..dad9e58 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) @EnableTransactionManagement public class ServiceAclApplication { public static void main(String[] args) { diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java index e3b8ff3..9fdb154 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) @EnableTransactionManagement public class ServiceProductApplication { public static void main(String[] args) { diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java new file mode 100644 index 0000000..11f852b --- /dev/null +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java @@ -0,0 +1,38 @@ +package com.atguigu.ssyx.product.api; + +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.product.service.CategoryService; +import com.atguigu.ssyx.product.service.SkuInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(value = "远程调用接口", tags = "远程调用接口") +@RestController +@RequestMapping("/api/product") +public class ProductInnerController { + @Autowired + private CategoryService categoryService; + @Autowired + private SkuInfoService skuInfoService; + + @ApiOperation(value = "根据分类id获取分类信息") + @GetMapping("inner/getCategory/{categoryId}") + public Result getCategory(@PathVariable Long categoryId) { + Category category = categoryService.getById(categoryId); + return Result.success(category); + } + + @ApiOperation(value = "根据skuId获取sku信息") + @GetMapping("inner/getSkuInfo/{skuId}") + public Result getSkuInfo(@PathVariable Long skuId) { + SkuInfo skuInfo = skuInfoService.getById(skuId); + return Result.success(skuInfo); + } +} diff --git a/service/service-search/pom.xml b/service/service-search/pom.xml index 3748cb6..a7554ea 100644 --- a/service/service-search/pom.xml +++ b/service/service-search/pom.xml @@ -1,4 +1,4 @@ - 4.0.0 @@ -18,6 +18,12 @@ + + com.atguigu + service-product-client + 1.0-SNAPSHOT + + org.springframework.boot spring-boot-starter-data-elasticsearch @@ -27,10 +33,5 @@ org.springframework.boot spring-boot-starter-data-redis - - - - - diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java index ef6e58d..eada2c8 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java @@ -6,12 +6,11 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; -import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) -@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) +@EnableFeignClients(basePackages = {"com.atguigu.ssyx.client"}) @EnableDiscoveryClient -@EnableFeignClients public class ServiceSearchApplication { public static void main(String[] args) { SpringApplication.run(ServiceSearchApplication.class, args); diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java index b1d7d32..9e5155c 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/controller/SkuApiController.java @@ -1,9 +1,34 @@ package com.atguigu.ssyx.search.controller; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.search.service.SkuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +@Api(tags = "商品添加到ES") @RestController @RequestMapping("/api/search/sku") public class SkuApiController { + @Autowired + private SkuService skuService; + + @ApiOperation(value = "上架商品") + @GetMapping("inner/upperSku/{skuId}") + public Result upperGoods(@PathVariable Long skuId) { + skuService.upperSku(skuId); + return Result.success(); + } + + @ApiOperation(value = "下架商品") + @GetMapping("inner/lowerSku/{skuId}") + public Result lowerGoods(@PathVariable Long skuId) { + skuService.lowerGoods(skuId); + return Result.success(); + } } diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java index 529a69b..d16d006 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/SkuService.java @@ -1,4 +1,17 @@ package com.atguigu.ssyx.search.service; public interface SkuService { + /** + * 上架商品 + * + * @param skuId 商品ID + */ + void upperSku(Long skuId); + + /** + * 下架商品 + * + * @param skuId 商品ID + */ + void lowerGoods(Long skuId); } diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java index c883203..8cdd3c6 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/service/impl/SkuServiceImpl.java @@ -1,8 +1,64 @@ package com.atguigu.ssyx.search.service.impl; +import com.atguigu.ssyx.client.product.ProductFeignClient; +import com.atguigu.ssyx.enums.SkuType; +import com.atguigu.ssyx.model.product.Category; +import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.model.search.SkuEs; +import com.atguigu.ssyx.search.repository.SkuRepository; import com.atguigu.ssyx.search.service.SkuService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Objects; + @Service public class SkuServiceImpl implements SkuService { + @Autowired + private SkuRepository skuRepository; + @Autowired + private ProductFeignClient productFeignClient; + + /** + * 上架商品 + * + * @param skuId 商品ID + */ + @Override + public void upperSku(Long skuId) { + SkuInfo skuInfo = productFeignClient.getSkuInfo(skuId).getData(); + Category category = productFeignClient.getCategory(skuId).getData(); + // 获取数据封装SkuEs + SkuEs skuEs = new SkuEs(); + if (category != null) { + skuEs.setCategoryId(category.getId()); + skuEs.setCategoryName(category.getName()); + } + if (skuInfo != null) { + skuEs.setId(skuInfo.getId()); + skuEs.setKeyword(skuInfo.getSkuName() + "," + skuEs.getCategoryName()); + skuEs.setWareId(skuInfo.getWareId()); + skuEs.setIsNewPerson(skuInfo.getIsNewPerson()); + skuEs.setImgUrl(skuInfo.getImgUrl()); + skuEs.setTitle(skuInfo.getSkuName()); + if (Objects.equals(skuInfo.getSkuType(), SkuType.COMMON.getCode())) { + skuEs.setSkuType(0); + skuEs.setPrice(skuInfo.getPrice().doubleValue()); + skuEs.setStock(skuInfo.getStock()); + skuEs.setSale(skuInfo.getSale()); + skuEs.setPerLimit(skuInfo.getPerLimit()); + } + skuRepository.save(skuEs); + } + } + + /** + * 下架商品 + * + * @param skuId 商品ID + */ + @Override + public void lowerGoods(Long skuId) { + skuRepository.deleteById(skuId); + } } diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java index 5f5c71b..d7734eb 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java @@ -7,7 +7,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement -@ComponentScan(basePackages = {"com.atguigu.ssyx"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) public class ServiceSysApplication { public static void main(String[] args) { SpringApplication.run(ServiceSysApplication.class, args); From 938d8592423cc9d66a65fe3079e149ab81ef3d7c Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 18:14:22 +0800 Subject: [PATCH 20/23] =?UTF-8?q?feat(search):=20=E6=95=B4=E5=90=88rabbitM?= =?UTF-8?q?Q=E5=8F=91=E6=B6=88=E6=81=AF=EF=BC=8C=E5=95=86=E5=93=81?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 1 + common/pom.xml | 1 + common/rabbit-util/pom.xml | 26 +++++++++ .../ssyx/mq/config/RabbitMQConfiguration.java | 28 ++++++++++ .../com/atguigu/ssyx/mq/constant/MqConst.java | 53 +++++++++++++++++++ .../ssyx/mq/service/RabbitService.java | 22 ++++++++ service/service-product/pom.xml | 6 +++ .../product/ServiceProductApplication.java | 2 +- .../service/impl/SkuInfoServiceImpl.java | 9 +++- .../src/main/resources/application-dev.yml | 6 +++ .../src/main/resources/application.yml | 18 +++++++ service/service-search/pom.xml | 5 ++ .../ssyx/search/MqListener/SkuListener.java | 40 ++++++++++++++ .../ssyx/search/ServiceSearchApplication.java | 2 +- .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application.yml | 8 ++- .../src/main/resources/application-dev.yml | 8 +-- .../src/main/resources/application.yml | 9 +--- 18 files changed, 226 insertions(+), 20 deletions(-) create mode 100644 common/rabbit-util/pom.xml create mode 100644 common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/config/RabbitMQConfiguration.java create mode 100644 common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/constant/MqConst.java create mode 100644 common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/service/RabbitService.java create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/MqListener/SkuListener.java diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 7556275..3a83e53 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -4,6 +4,7 @@ + diff --git a/common/pom.xml b/common/pom.xml index bff215d..721a070 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -15,6 +15,7 @@ common-util service-util + rabbit-util diff --git a/common/rabbit-util/pom.xml b/common/rabbit-util/pom.xml new file mode 100644 index 0000000..1878dfd --- /dev/null +++ b/common/rabbit-util/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + + com.atguigu + common + 1.0-SNAPSHOT + + rabbit-util + Archetype - rabbit-util + https://maven.apache.org + + + + + org.springframework.cloud + spring-cloud-starter-bus-amqp + + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.16.0-rc1 + + + diff --git a/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/config/RabbitMQConfiguration.java b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/config/RabbitMQConfiguration.java new file mode 100644 index 0000000..056e457 --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/config/RabbitMQConfiguration.java @@ -0,0 +1,28 @@ +package com.atguigu.ssyx.mq.config; + +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class RabbitMQConfiguration { + /** + * * 重写,并引入消息转换器 + * + * com.fasterxml.jackson.dataformat + * jackson-dataformat-xml + * 2.16.0-rc1 + * + * + * @return MessageConverter + */ + @Bean + public MessageConverter jsonMessageConverter() { + // 1.定义消息转换器 + Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter(); + // 2.配置自动创建消息id,用于识别不同消息,也可以在业务中基于ID判断是否是重复消息 + converter.setCreateMessageIds(true); + return converter; + } +} \ No newline at end of file diff --git a/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/constant/MqConst.java b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/constant/MqConst.java new file mode 100644 index 0000000..abaf16e --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/constant/MqConst.java @@ -0,0 +1,53 @@ +package com.atguigu.ssyx.mq.constant; + +public class MqConst { + // 消息补偿 + public static final String MQ_KEY_PREFIX = "ssyx.mq:list"; + public static final int RETRY_COUNT = 3; + + // 商品上下架 + public static final String EXCHANGE_GOODS_DIRECT = "ssyx.goods.direct"; + public static final String ROUTING_GOODS_UPPER = "ssyx.goods.upper"; + public static final String ROUTING_GOODS_LOWER = "ssyx.goods.lower"; + // 队列 + public static final String QUEUE_GOODS_UPPER = "ssyx.goods.upper"; + public static final String QUEUE_GOODS_LOWER = "ssyx.goods.lower"; + + // 团长上下线 + public static final String EXCHANGE_LEADER_DIRECT = "ssyx.leader.direct"; + public static final String ROUTING_LEADER_UPPER = "ssyx.leader.upper"; + public static final String ROUTING_LEADER_LOWER = "ssyx.leader.lower"; + // 队列 + public static final String QUEUE_LEADER_UPPER = "ssyx.leader.upper"; + public static final String QUEUE_LEADER_LOWER = "ssyx.leader.lower"; + + // 订单 + public static final String EXCHANGE_ORDER_DIRECT = "ssyx.order.direct"; + public static final String ROUTING_ROLLBACK_STOCK = "ssyx.rollback.stock"; + public static final String ROUTING_MINUS_STOCK = "ssyx.minus.stock"; + + public static final String ROUTING_DELETE_CART = "ssyx.delete.cart"; + // 解锁普通商品库存 + public static final String QUEUE_ROLLBACK_STOCK = "ssyx.rollback.stock"; + public static final String QUEUE_SECKILL_ROLLBACK_STOCK = "ssyx.seckill.rollback.stock"; + public static final String QUEUE_MINUS_STOCK = "ssyx.minus.stock"; + public static final String QUEUE_DELETE_CART = "ssyx.delete.cart"; + + // 支付 + public static final String EXCHANGE_PAY_DIRECT = "ssyx.pay.direct"; + public static final String ROUTING_PAY_SUCCESS = "ssyx.pay.success"; + public static final String QUEUE_ORDER_PAY = "ssyx.order.pay"; + public static final String QUEUE_LEADER_BILL = "ssyx.leader.bill"; + + // 取消订单 + public static final String EXCHANGE_CANCEL_ORDER_DIRECT = "ssyx.cancel.order.direct"; + public static final String ROUTING_CANCEL_ORDER = "ssyx.cancel.order"; + // 延迟取消订单队列 + public static final String QUEUE_CANCEL_ORDER = "ssyx.cancel.order"; + + // 定时任务 + public static final String EXCHANGE_DIRECT_TASK = "ssyx.exchange.direct.task"; + public static final String ROUTING_TASK_23 = "ssyx.task.23"; + // 队列 + public static final String QUEUE_TASK_23 = "ssyx.queue.task.23"; +} \ No newline at end of file diff --git a/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/service/RabbitService.java b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/service/RabbitService.java new file mode 100644 index 0000000..2b88788 --- /dev/null +++ b/common/rabbit-util/src/main/java/com/atguigu/ssyx/mq/service/RabbitService.java @@ -0,0 +1,22 @@ +package com.atguigu.ssyx.mq.service; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class RabbitService { + @Autowired + private RabbitTemplate rabbitTemplate; + + /** + * 发送消息 + * + * @param exchange 交换机 + * @param routerKey 路由 + * @param message 消息 + */ + public void sendMessage(String exchange, String routerKey, Object message) { + rabbitTemplate.convertAndSend(exchange, routerKey, message); + } +} \ No newline at end of file diff --git a/service/service-product/pom.xml b/service/service-product/pom.xml index 5683617..7f9b4ff 100644 --- a/service/service-product/pom.xml +++ b/service/service-product/pom.xml @@ -18,6 +18,12 @@ + + com.atguigu + rabbit-util + 1.0-SNAPSHOT + + cn.hutool hutool-all diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java index 9fdb154..77b7367 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common", "com.atguigu.ssyx.mq"}) @EnableTransactionManagement public class ServiceProductApplication { public static void main(String[] args) { diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java index f740277..26f0f20 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/SkuInfoServiceImpl.java @@ -4,6 +4,8 @@ import com.atguigu.ssyx.model.product.SkuAttrValue; import com.atguigu.ssyx.model.product.SkuImage; import com.atguigu.ssyx.model.product.SkuInfo; import com.atguigu.ssyx.model.product.SkuPoster; +import com.atguigu.ssyx.mq.constant.MqConst; +import com.atguigu.ssyx.mq.service.RabbitService; import com.atguigu.ssyx.product.mapper.SkuInfoMapper; import com.atguigu.ssyx.product.service.SkuAttrValueService; import com.atguigu.ssyx.product.service.SkuImageService; @@ -41,7 +43,8 @@ public class SkuInfoServiceImpl extends ServiceImpl impl private SkuImageService skuImageService; @Autowired private SkuPosterService skuPosterService; - + @Autowired + private RabbitService rabbitService; /** * 获取sku分页列表 @@ -197,8 +200,12 @@ public class SkuInfoServiceImpl extends ServiceImpl impl skuInfo.setId(skuId); if (status == 1) { skuInfo.setPublishStatus(status); + // 商品上架,发送MQ消息 + rabbitService.sendMessage(MqConst.EXCHANGE_GOODS_DIRECT, MqConst.ROUTING_GOODS_UPPER, skuId); } else { skuInfo.setPublishStatus(0); + // 商品下架:发送mq消息同步es + rabbitService.sendMessage(MqConst.EXCHANGE_GOODS_DIRECT, MqConst.ROUTING_GOODS_LOWER, skuId); } baseMapper.updateById(skuInfo); } diff --git a/service/service-product/src/main/resources/application-dev.yml b/service/service-product/src/main/resources/application-dev.yml index f955656..189e4ce 100644 --- a/service/service-product/src/main/resources/application-dev.yml +++ b/service/service-product/src/main/resources/application-dev.yml @@ -2,6 +2,12 @@ server: port: 8203 bunny: + rabbitmq: + host: 192.168.1.4 + port: 5672 + username: bunny + password: "02120212" + datasource: host: 106.15.251.123 port: 3305 diff --git a/service/service-product/src/main/resources/application.yml b/service/service-product/src/main/resources/application.yml index 8d33931..95db11c 100644 --- a/service/service-product/src/main/resources/application.yml +++ b/service/service-product/src/main/resources/application.yml @@ -26,6 +26,24 @@ spring: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 + rabbitmq: + host: ${bunny.rabbitmq.host} + port: ${bunny.rabbitmq.port} + username: ${bunny.rabbitmq.username} + password: ${bunny.rabbitmq.password} + publisher-confirm-type: CORRELATED + publisher-returns: true + listener: + simple: + prefetch: 1 + concurrency: 3 + acknowledge-mode: manual + retry: + enabled: true # 开启消费者失败重试 + initial-interval: 1000ms # 初始失败等待时长 + multiplier: 1 # 下次失败等待时间被树,下次等待时长 multiplier * last-interval + max-attempts: 3 # 最大重试次数 + stateless: true # true 无状态 false 有状态。如果业务中包含事务,这里改为false mybatis-plus: type-aliases-package: com.atguigu.model # 配置每个包前缀 diff --git a/service/service-search/pom.xml b/service/service-search/pom.xml index a7554ea..4859f50 100644 --- a/service/service-search/pom.xml +++ b/service/service-search/pom.xml @@ -18,6 +18,11 @@ + + com.atguigu + rabbit-util + 1.0-SNAPSHOT + com.atguigu service-product-client diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/MqListener/SkuListener.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/MqListener/SkuListener.java new file mode 100644 index 0000000..2ef9022 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/MqListener/SkuListener.java @@ -0,0 +1,40 @@ +package com.atguigu.ssyx.search.MqListener; + +import com.atguigu.ssyx.mq.constant.MqConst; +import com.rabbitmq.client.Channel; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.Exchange; +import org.springframework.amqp.rabbit.annotation.Queue; +import org.springframework.amqp.rabbit.annotation.QueueBinding; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +import java.io.IOException; + +@Component +public class SkuListener { + // 商品上架 + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = MqConst.QUEUE_GOODS_UPPER, durable = "true"), + exchange = @Exchange(name = MqConst.EXCHANGE_GOODS_DIRECT), + key = {MqConst.ROUTING_GOODS_UPPER} + )) + public void upperSku(Long skuId, Message message, Channel channel) throws IOException { + if (skuId != null) { + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); + } + } + + // 商品下架 + @RabbitListener(bindings = @QueueBinding( + value = @Queue(name = MqConst.QUEUE_GOODS_LOWER, durable = "true"), + exchange = @Exchange(name = MqConst.EXCHANGE_GOODS_DIRECT), + key = {MqConst.ROUTING_GOODS_LOWER} + )) + public void lowerSku(Long skuId, Message message, Channel channel) throws IOException { + if (skuId != null) { + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); + } + } +} + diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java index eada2c8..fd78dfe 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java @@ -8,7 +8,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) -@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common", "com.atguigu.ssyx.mq"}) @EnableFeignClients(basePackages = {"com.atguigu.ssyx.client"}) @EnableDiscoveryClient public class ServiceSearchApplication { diff --git a/service/service-search/src/main/resources/application-dev.yml b/service/service-search/src/main/resources/application-dev.yml index 87baa8f..e1320f4 100644 --- a/service/service-search/src/main/resources/application-dev.yml +++ b/service/service-search/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ server: bunny: rabbitmq: - host: 116.196.101.14 + host: 192.168.1.4 port: 5672 username: bunny password: "02120212" diff --git a/service/service-search/src/main/resources/application.yml b/service/service-search/src/main/resources/application.yml index c74c324..da807b7 100644 --- a/service/service-search/src/main/resources/application.yml +++ b/service/service-search/src/main/resources/application.yml @@ -34,6 +34,12 @@ spring: prefetch: 1 concurrency: 3 acknowledge-mode: manual + retry: + enabled: true # 开启消费者失败重试 + initial-interval: 1000ms # 初始失败等待时长 + multiplier: 1 # 下次失败等待时间被树,下次等待时长 multiplier * last-interval + max-attempts: 3 # 最大重试次数 + stateless: true # true 无状态 false 有状态。如果业务中包含事务,这里改为false cloud: sentinel: @@ -60,7 +66,7 @@ feign: enabled: true client: config: - default: #配置全局的feign的调用超时时间 如果 有指定的服务配置 默认的配置不会生效 + default: #配置全局的feign的调用超时时间 如果 有指定的服务配置 默认的配置不会生效 connectTimeout: 30000 # 指定的是 消费者 连接服务提供者的连接超时时间 是否能连接 单位是毫秒 readTimeout: 50000 # 指定的是调用服务提供者的 服务 的超时时间() 单位是毫秒 diff --git a/service/service-sys/src/main/resources/application-dev.yml b/service/service-sys/src/main/resources/application-dev.yml index 0b0222f..314bbeb 100644 --- a/service/service-sys/src/main/resources/application-dev.yml +++ b/service/service-sys/src/main/resources/application-dev.yml @@ -12,10 +12,4 @@ bunny: nacos: server-addr: z-bunny.cn:8848 discovery: - namespace: ssyx - - minio: - endpointUrl: "http://129.211.31.58:9000" - bucket-name: ssyx - accessKey: bunny - secretKey: "02120212" \ No newline at end of file + namespace: ssyx \ No newline at end of file diff --git a/service/service-sys/src/main/resources/application.yml b/service/service-sys/src/main/resources/application.yml index ae79b49..8a4d40a 100644 --- a/service/service-sys/src/main/resources/application.yml +++ b/service/service-sys/src/main/resources/application.yml @@ -53,11 +53,4 @@ logging: pattern: dateformat: HH:mm:ss:SSS file: - path: "logs/${spring.application.name}" - -# bunny: -# minio: -# endpointUrl: ${bunny.minio.endpointUrl} -# accessKey: ${bunny.minio.accessKey} -# secretKey: ${bunny.minio.secretKey} -# bucket-name: ${bunny.minio.bucket-name} \ No newline at end of file + path: "logs/${spring.application.name}" \ No newline at end of file From 040ca6824819ff9d0944c5bf35b8679638d860db Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 18:51:11 +0800 Subject: [PATCH 21/23] =?UTF-8?q?feat(=E4=BF=AE=E5=A4=8D):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=97=A0=E6=B3=95=E6=98=BE=E7=A4=BAknife4j=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 1 + .idea/misc.xml | 5 ++ .../common/config/WebMvcConfiguration.java | 4 ++ model/pom.xml | 3 +- service/service-acl/pom.xml | 5 +- .../ssyx/acl/ServiceAclApplication.java | 2 +- .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application.yml | 2 +- .../product/ServiceProductApplication.java | 5 +- .../src/main/resources/application.yml | 6 +-- .../ssyx/search/ServiceSearchApplication.java | 5 +- .../ssyx/search/config/Knife4jConfig.java | 54 +++++++++++++++++++ .../src/main/resources/application.yml | 6 +-- .../ssyx/sys/ServiceSysApplication.java | 4 +- .../ssyx/sys/config/Knife4jConfig.java | 2 +- .../src/main/resources/application.yml | 6 +-- 16 files changed, 93 insertions(+), 19 deletions(-) create mode 100644 service/service-search/src/main/java/com/atguigu/ssyx/search/config/Knife4jConfig.java diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 3a83e53..b9c37f9 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -17,6 +17,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 132404b..a1d25e0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -7,6 +7,11 @@ + diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java index 23ad6be..22208c4 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java @@ -21,5 +21,9 @@ public class WebMvcConfiguration implements WebMvcConfigurer { .allowCredentials(true)// 是否允许在跨域的情况下传递Cookie .allowedOrigins("*")// 允许请求来源的域规则 .allowedMethods("*").allowedHeaders("*");// 允许所有的请求头 + registry.addMapping("/api/**")// 添加路径规则 + .allowCredentials(true)// 是否允许在跨域的情况下传递Cookie + .allowedOrigins("*")// 允许请求来源的域规则 + .allowedMethods("*").allowedHeaders("*");// 允许所有的请求头 } } \ No newline at end of file diff --git a/model/pom.xml b/model/pom.xml index 2a1b98a..bda3779 100644 --- a/model/pom.xml +++ b/model/pom.xml @@ -33,8 +33,7 @@ com.github.xiaoymin knife4j-spring-boot-starter - - provided + 3.0.3 diff --git a/service/service-acl/pom.xml b/service/service-acl/pom.xml index db664ba..8c4ed7e 100644 --- a/service/service-acl/pom.xml +++ b/service/service-acl/pom.xml @@ -20,7 +20,10 @@ - + + com.github.xiaoymin + knife4j-spring-boot-starter + diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java index dad9e58..7c3f112 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/ServiceAclApplication.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) +@ComponentScan(basePackages = {"com.atguigu.ssyx.common", "com.atguigu.ssyx.acl"}) @EnableTransactionManagement public class ServiceAclApplication { public static void main(String[] args) { diff --git a/service/service-acl/src/main/resources/application-dev.yml b/service/service-acl/src/main/resources/application-dev.yml index e5bc728..7a15ab8 100644 --- a/service/service-acl/src/main/resources/application-dev.yml +++ b/service/service-acl/src/main/resources/application-dev.yml @@ -1,5 +1,5 @@ server: - port: 8200 + port: 8201 bunny: datasource: diff --git a/service/service-acl/src/main/resources/application.yml b/service/service-acl/src/main/resources/application.yml index 5c9022d..6d0694c 100644 --- a/service/service-acl/src/main/resources/application.yml +++ b/service/service-acl/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8200 + port: 8201 spring: application: name: service-acl diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java index 77b7367..2a967b3 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/ServiceProductApplication.java @@ -6,7 +6,10 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication -@ComponentScan(basePackages = {"com.atguigu.ssyx.common", "com.atguigu.ssyx.mq"}) +@ComponentScan(basePackages = { + "com.atguigu.ssyx.common", + "com.atguigu.ssyx.mq", + "com.atguigu.ssyx.product"}) @EnableTransactionManagement public class ServiceProductApplication { public static void main(String[] args) { diff --git a/service/service-product/src/main/resources/application.yml b/service/service-product/src/main/resources/application.yml index 95db11c..4399515 100644 --- a/service/service-product/src/main/resources/application.yml +++ b/service/service-product/src/main/resources/application.yml @@ -64,9 +64,9 @@ mybatis-plus: logging: level: - com.atguigu.ssyx.acl.mapper: debug - com.atguigu.ssyx.acl.controller: info - com.atguigu.ssyx.acl.service: info + com.atguigu.ssyx.product.mapper: debug + com.atguigu.ssyx.product.controller: info + com.atguigu.ssyx.product.service: info pattern: dateformat: HH:mm:ss:SSS file: diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java index fd78dfe..80fa2f2 100644 --- a/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/ServiceSearchApplication.java @@ -8,7 +8,10 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) -@ComponentScan(basePackages = {"com.atguigu.ssyx.common", "com.atguigu.ssyx.mq"}) +@ComponentScan(basePackages = { + "com.atguigu.ssyx.common", + "com.atguigu.ssyx.mq", + "com.atguigu.ssyx.search"}) @EnableFeignClients(basePackages = {"com.atguigu.ssyx.client"}) @EnableDiscoveryClient public class ServiceSearchApplication { diff --git a/service/service-search/src/main/java/com/atguigu/ssyx/search/config/Knife4jConfig.java b/service/service-search/src/main/java/com/atguigu/ssyx/search/config/Knife4jConfig.java new file mode 100644 index 0000000..d35c421 --- /dev/null +++ b/service/service-search/src/main/java/com/atguigu/ssyx/search/config/Knife4jConfig.java @@ -0,0 +1,54 @@ +package com.atguigu.ssyx.search.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc; + +import java.util.ArrayList; +import java.util.List; + +@Configuration +@EnableSwagger2WebMvc +public class Knife4jConfig { + @Bean + public Docket adminApiConfig() { + List pars = new ArrayList<>(); + ParameterBuilder tokenPar = new ParameterBuilder(); + tokenPar.name("adminId") + .description("用户token") + .defaultValue("1") + .modelRef(new ModelRef("string")) + .parameterType("header") + .required(false) + .build(); + pars.add(tokenPar.build()); + + return new Docket(DocumentationType.SWAGGER_2) + .groupName("搜索ES相关API") + .apiInfo(adminApiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.search.controller")) + .paths(PathSelectors.regex("/api/.*")) + .build() + .globalOperationParameters(pars); + } + + private ApiInfo adminApiInfo() { + return new ApiInfoBuilder() + .title("后台管理系统-API文档") + .description("本文档描述了尚上优选后台系统服务接口定义") + .version("1.0") + .contact(new Contact("atguigu", "http://atguigu.com", "atguigu")) + .build(); + } +} \ No newline at end of file diff --git a/service/service-search/src/main/resources/application.yml b/service/service-search/src/main/resources/application.yml index da807b7..ee3868e 100644 --- a/service/service-search/src/main/resources/application.yml +++ b/service/service-search/src/main/resources/application.yml @@ -72,9 +72,9 @@ feign: logging: level: - com.atguigu.ssyx.acl.mapper: debug - com.atguigu.ssyx.acl.controller: info - com.atguigu.ssyx.acl.service: info + com.atguigu.ssyx.search.mapper: debug + com.atguigu.ssyx.search.controller: info + com.atguigu.ssyx.search.service: info pattern: dateformat: HH:mm:ss:SSS file: diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java index d7734eb..2e64406 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/ServiceSysApplication.java @@ -7,7 +7,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement -@ComponentScan(basePackages = {"com.atguigu.ssyx.common"}) +@ComponentScan(basePackages = { + "com.atguigu.ssyx.common", + "com.atguigu.ssyx.sys"}) public class ServiceSysApplication { public static void main(String[] args) { SpringApplication.run(ServiceSysApplication.class, args); diff --git a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java index 8c01a06..990b1c8 100644 --- a/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java +++ b/service/service-sys/src/main/java/com/atguigu/ssyx/sys/config/Knife4jConfig.java @@ -40,7 +40,7 @@ public class Knife4jConfig { .select() // 只显示api路径下的页面 .apis(RequestHandlerSelectors.basePackage("com.atguigu.ssyx.sys")) - .paths(PathSelectors.regex("/admin/sys/regionWare/.*|/system/.*")) + .paths(PathSelectors.regex("/admin/.*")) .build() .globalOperationParameters(pars); } diff --git a/service/service-sys/src/main/resources/application.yml b/service/service-sys/src/main/resources/application.yml index 8a4d40a..6002948 100644 --- a/service/service-sys/src/main/resources/application.yml +++ b/service/service-sys/src/main/resources/application.yml @@ -47,9 +47,9 @@ mybatis-plus: logging: level: - com.atguigu.ssyx.acl.mapper: debug - com.atguigu.ssyx.acl.controller: info - com.atguigu.ssyx.acl.service: info + com.atguigu.ssyx.sys.mapper: debug + com.atguigu.ssyx.sys.controller: info + com.atguigu.ssyx.sys.service: info pattern: dateformat: HH:mm:ss:SSS file: From 71c9b53fa13c1a74f23537263cde3e3fef463ced Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 19:40:17 +0800 Subject: [PATCH 22/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E6=95=B4?= =?UTF-8?q?=E5=90=88=E7=BD=91=E5=85=B3=E5=81=9A=E8=B7=A8=E5=9F=9F=E4=BB=A3?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 6 +- .../common/config/WebMvcConfiguration.java | 18 ---- service-gateway/Dockerfile | 21 +++++ service-gateway/pom.xml | 47 ++++++++++ .../geteway/ServiceGatewayApplication.java | 11 +++ .../geteway/config/GateWayCorsConfig.java | 29 +++++++ .../geteway/controller/IndexController.java | 17 ++++ .../src/main/resources/application-dev.yml | 8 ++ .../src/main/resources/application.yml | 82 ++++++++++++++++++ service-gateway/src/main/resources/banner.txt | 16 ++++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes .../controller/FileUploadController.java | 2 +- .../controller/SkuAttrValueController.java | 3 +- .../controller/SkuImageController.java | 3 +- .../controller/SkuPosterController.java | 3 +- 15 files changed, 236 insertions(+), 30 deletions(-) create mode 100644 service-gateway/Dockerfile create mode 100644 service-gateway/pom.xml create mode 100644 service-gateway/src/main/java/com/atguigu/ssyx/geteway/ServiceGatewayApplication.java create mode 100644 service-gateway/src/main/java/com/atguigu/ssyx/geteway/config/GateWayCorsConfig.java create mode 100644 service-gateway/src/main/java/com/atguigu/ssyx/geteway/controller/IndexController.java create mode 100644 service-gateway/src/main/resources/application-dev.yml create mode 100644 service-gateway/src/main/resources/application.yml create mode 100644 service-gateway/src/main/resources/banner.txt create mode 100644 service-gateway/src/main/resources/favicon.ico diff --git a/.idea/misc.xml b/.idea/misc.xml index a1d25e0..7b89c3a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,12 +5,8 @@ - diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java index 22208c4..8827deb 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/config/WebMvcConfiguration.java @@ -2,28 +2,10 @@ package com.atguigu.ssyx.common.config; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @Slf4j public class WebMvcConfiguration implements WebMvcConfigurer { - /** - * * 解决跨域 - * - * @param registry 跨域注册表 - */ - @Override - public void addCorsMappings(CorsRegistry registry) { - log.info("WebMvcConfiguration===>开始跨域注册表..."); - registry.addMapping("/admin/**")// 添加路径规则 - .allowCredentials(true)// 是否允许在跨域的情况下传递Cookie - .allowedOrigins("*")// 允许请求来源的域规则 - .allowedMethods("*").allowedHeaders("*");// 允许所有的请求头 - registry.addMapping("/api/**")// 添加路径规则 - .allowCredentials(true)// 是否允许在跨域的情况下传递Cookie - .allowedOrigins("*")// 允许请求来源的域规则 - .allowedMethods("*").allowedHeaders("*");// 允许所有的请求头 - } } \ No newline at end of file diff --git a/service-gateway/Dockerfile b/service-gateway/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service-gateway/Dockerfile @@ -0,0 +1,21 @@ +FROM openjdk:17 +MAINTAINER bunny + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/bunny + +# 复制jar包 +COPY target/*.jar /home/bunny/app.jar + +#启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] + +#暴露 8080 端口 +EXPOSE 8080 \ No newline at end of file diff --git a/service-gateway/pom.xml b/service-gateway/pom.xml new file mode 100644 index 0000000..0a956dd --- /dev/null +++ b/service-gateway/pom.xml @@ -0,0 +1,47 @@ + + 4.0.0 + + com.atguigu + guigu-ssyx-parent + 1.0-SNAPSHOT + + + service-gateway + jar + + service-gateway + https://maven.apache.org + + + UTF-8 + + + + + com.atguigu + service-util + 1.0-SNAPSHOT + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + org.springframework.cloud + spring-cloud-loadbalancer + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + diff --git a/service-gateway/src/main/java/com/atguigu/ssyx/geteway/ServiceGatewayApplication.java b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/ServiceGatewayApplication.java new file mode 100644 index 0000000..7eed74e --- /dev/null +++ b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/ServiceGatewayApplication.java @@ -0,0 +1,11 @@ +package com.atguigu.ssyx.geteway; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ServiceGatewayApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceGatewayApplication.class, args); + } +} \ No newline at end of file diff --git a/service-gateway/src/main/java/com/atguigu/ssyx/geteway/config/GateWayCorsConfig.java b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/config/GateWayCorsConfig.java new file mode 100644 index 0000000..7ba1d65 --- /dev/null +++ b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/config/GateWayCorsConfig.java @@ -0,0 +1,29 @@ +package com.atguigu.ssyx.geteway.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.reactive.CorsWebFilter; +import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; + +@Configuration +@Slf4j +public class GateWayCorsConfig { + @Bean + protected CorsWebFilter addCorsMappings() { + log.info("CorsConfig===>开始跨域注册表..."); + + CorsConfiguration config = new CorsConfiguration(); + // 设置跨域请求地址 + config.addAllowedMethod("*"); + config.addAllowedHeader("*"); + config.addAllowedOrigin("*"); + config.setAllowCredentials(true); + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", config); + + return new CorsWebFilter(source); + } +} \ No newline at end of file diff --git a/service-gateway/src/main/java/com/atguigu/ssyx/geteway/controller/IndexController.java b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/controller/IndexController.java new file mode 100644 index 0000000..02b40f8 --- /dev/null +++ b/service-gateway/src/main/java/com/atguigu/ssyx/geteway/controller/IndexController.java @@ -0,0 +1,17 @@ +package com.atguigu.ssyx.geteway.controller; + +import com.atguigu.ssyx.common.result.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping("/") +@RestController +@Slf4j +public class IndexController { + @GetMapping() + public Result index() { + return Result.success("欢迎访问。。。"); + } +} diff --git a/service-gateway/src/main/resources/application-dev.yml b/service-gateway/src/main/resources/application-dev.yml new file mode 100644 index 0000000..c6a69d7 --- /dev/null +++ b/service-gateway/src/main/resources/application-dev.yml @@ -0,0 +1,8 @@ +server: + port: 8200 + +bunny: + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx \ No newline at end of file diff --git a/service-gateway/src/main/resources/application.yml b/service-gateway/src/main/resources/application.yml new file mode 100644 index 0000000..aa8f6fe --- /dev/null +++ b/service-gateway/src/main/resources/application.yml @@ -0,0 +1,82 @@ +server: + port: 8200 + +spring: + application: + name: server-gateway + main: + web-application-type: reactive + profiles: + active: dev + cloud: + sentinel: + log: + dir: logs/${spring.application.name}/sentinel + nacos: + discovery: + namespace: ${bunny.nacos.discovery.namespace} + server-addr: ${bunny.nacos.server-addr} + log-name: logs/${spring.application.name} + gateway: + discovery: + locator: + enabled: true + routes: + - id: service-acl + uri: lb://service-acl + predicates: + - Path=/*/acl/** + + - id: service-sys + uri: lb://service-sys + predicates: + - Path=/*/sys/** + + - id: service-product + uri: lb://service-product + predicates: + - Path=/*/product/** + + - id: service-activity + uri: lb://service-activity + predicates: + - Path=/*/activity/** + + - id: service-order + uri: lb://service-order + predicates: + - Path=/*/order/** + + - id: service-payment + uri: lb://service-payment + predicates: + - Path=/*/payment/** + + - id: service-user + uri: lb://service-user + predicates: + - Path=/*/user/** + + - id: service-search + uri: lb://service-search + predicates: + - Path=/*/search/** + + - id: service-home + uri: lb://service-home + predicates: + - Path=/*/home/** + + - id: service-cart + uri: lb://service-cart + predicates: + - Path=/*/cart/** +logging: + level: + com.atguigu.ssyx.acl.mapper: debug + com.atguigu.ssyx.acl.controller: info + com.atguigu.ssyx.acl.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" \ No newline at end of file diff --git a/service-gateway/src/main/resources/banner.txt b/service-gateway/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service-gateway/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service-gateway/src/main/resources/favicon.ico b/service-gateway/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ba397c45de65f92b238bb9f94608320bf32209b GIT binary patch literal 13342 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 literal 0 HcmV?d00001 diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java index c4521da..c45a19d 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/FileUploadController.java @@ -13,7 +13,7 @@ import org.springframework.web.multipart.MultipartFile; @Api(tags = "文件上传接口") @RestController -@RequestMapping("admin/product") +@RequestMapping("/admin/product") public class FileUploadController { @Autowired private FileUploadService fileUploadService; diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java index c3621f6..a18f928 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuAttrValueController.java @@ -2,7 +2,6 @@ package com.atguigu.ssyx.product.controller; import org.springframework.web.bind.annotation.RequestMapping; - import org.springframework.web.bind.annotation.RestController; /** @@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; * @since 2024-04-03 */ @RestController -@RequestMapping("/product/sku-attr-value") +@RequestMapping("/admin/product/sku-attr-value") public class SkuAttrValueController { } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java index b6f22e7..5632796 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuImageController.java @@ -2,7 +2,6 @@ package com.atguigu.ssyx.product.controller; import org.springframework.web.bind.annotation.RequestMapping; - import org.springframework.web.bind.annotation.RestController; /** @@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; * @since 2024-04-03 */ @RestController -@RequestMapping("/product/sku-image") +@RequestMapping("/admin/product/sku-image") public class SkuImageController { } diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java index e699c3f..d0f0ccc 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/controller/SkuPosterController.java @@ -2,7 +2,6 @@ package com.atguigu.ssyx.product.controller; import org.springframework.web.bind.annotation.RequestMapping; - import org.springframework.web.bind.annotation.RestController; /** @@ -14,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; * @since 2024-04-03 */ @RestController -@RequestMapping("/product/sku-poster") +@RequestMapping("/admin/product/sku-poster") public class SkuPosterController { } From 5e5b2d485453e29e507303e5dc58100d65b70561 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Thu, 4 Apr 2024 21:20:16 +0800 Subject: [PATCH 23/23] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20activity?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=8E=AF=E5=A2=83=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/encodings.xml | 1 + .../java/com/atguigu/ssyx/common/CodeGet.java | 33 ++++-- .../com/atguigu/ssyx/model/acl/AdminRole.java | 16 ++- .../atguigu/ssyx/model/product/SkuInfo.java | 111 +++++++++--------- .../com/atguigu/ssyx/model/search/SkuEs.java | 9 +- .../atguigu/ssyx/vo/product/SkuInfoVo.java | 17 ++- service/pom.xml | 1 + .../ssyx/acl/controller/AdminController.java | 3 - .../service/impl/AdminRoleServiceImpl.java | 11 +- .../service/impl/PermissionServiceImpl.java | 4 +- service/service-activity/Dockerfile | 21 ++++ service/service-activity/pom.xml | 23 ++++ .../activity/ServiceActivityApplication.java | 17 +++ .../controller/ActivityInfoController.java | 24 ++++ .../controller/CouponInfoController.java | 21 ++++ .../activity/mapper/ActivityInfoMapper.java | 16 +++ .../activity/mapper/CouponInfoMapper.java | 16 +++ .../activity/service/ActivityInfoService.java | 16 +++ .../activity/service/CouponInfoService.java | 16 +++ .../service/impl/ActivityInfoServiceImpl.java | 20 ++++ .../service/impl/CouponInfoServiceImpl.java | 20 ++++ .../src/main/resources/application-dev.yml | 15 +++ .../src/main/resources/application.yml | 54 +++++++++ .../src/main/resources/banner.txt | 16 +++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes .../resources/mapper/ActivityInfoMapper.xml | 5 + .../resources/mapper/CouponInfoMapper.xml | 5 + .../product/service/impl/AttrServiceImpl.java | 4 +- 28 files changed, 411 insertions(+), 104 deletions(-) create mode 100644 service/service-activity/Dockerfile create mode 100644 service/service-activity/pom.xml create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/CouponInfoController.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/CouponInfoService.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java create mode 100644 service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/CouponInfoServiceImpl.java create mode 100644 service/service-activity/src/main/resources/application-dev.yml create mode 100644 service/service-activity/src/main/resources/application.yml create mode 100644 service/service-activity/src/main/resources/banner.txt create mode 100644 service/service-activity/src/main/resources/favicon.ico create mode 100644 service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml create mode 100644 service/service-activity/src/main/resources/mapper/CouponInfoMapper.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml index b9c37f9..5cb313d 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -19,6 +19,7 @@ + diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java index 46b171a..4119363 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/CodeGet.java @@ -7,6 +7,7 @@ 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.config.rules.NamingStrategy; +import org.jetbrains.annotations.NotNull; public class CodeGet { @@ -17,7 +18,8 @@ public class CodeGet { // 2、全局配置 // 全局配置 GlobalConfig gc = new GlobalConfig(); - gc.setOutputDir("F:\\File\\Java\\ssyx\\guigu-ssyx-parent\\service\\service-product" + "/src/main/java"); + // TODO 需要修改路径名称 + gc.setOutputDir("G:\\File\\Java\\ssyx\\ssyx-parent\\service\\service-activity" + "/src/main/java"); gc.setServiceName("%sService"); // 去掉Service接口的首字母I gc.setAuthor("bunny"); @@ -26,7 +28,8 @@ public class CodeGet { // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://106.15.251.123:3305/shequ-product?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true"); + // TODO 需要修改数据库 + dsc.setUrl("jdbc:mysql://106.15.251.123:3305/shequ-activity?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("02120212"); @@ -36,26 +39,32 @@ public class CodeGet { // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setParent("com.atguigu.ssyx"); - pc.setModuleName("product"); // 模块名 + // TODO 需要修改模块名 + pc.setModuleName("activity"); pc.setController("controller"); pc.setService("service"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 5、策略配置 - StrategyConfig strategy = new StrategyConfig(); - - strategy.setInclude("attr", "attr_group", "base_category_trademark", "category", "comment", "comment_replay", "mq_repeat_record", - "region_ware", "sku_attr_value", "sku_detail", "sku_image", "sku_info", "sku_poster", "sku_stock_history", "ware"); - strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 - strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 - strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 - strategy.setRestControllerStyle(true); // restful api风格控制器 - strategy.setControllerMappingHyphenStyle(true); // url中驼峰转连字符 + StrategyConfig strategy = getStrategyConfig(); mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } + + @NotNull + private static StrategyConfig getStrategyConfig() { + StrategyConfig strategy = new StrategyConfig(); + + strategy.setInclude("activity_info", "activity_rule", "activity_sku", "coupon_info", "coupon_range", "coupon_use"); + strategy.setNaming(NamingStrategy.underline_to_camel);// 数据库表映射到实体的命名策略 + strategy.setColumnNaming(NamingStrategy.underline_to_camel);// 数据库表字段映射到实体的命名策略 + strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作 + strategy.setRestControllerStyle(true); // restful api风格控制器 + strategy.setControllerMappingHyphenStyle(true); // url中驼峰转连字符 + return strategy; + } } diff --git a/model/src/main/java/com/atguigu/ssyx/model/acl/AdminRole.java b/model/src/main/java/com/atguigu/ssyx/model/acl/AdminRole.java index a6d6c42..6fa3fd4 100644 --- a/model/src/main/java/com/atguigu/ssyx/model/acl/AdminRole.java +++ b/model/src/main/java/com/atguigu/ssyx/model/acl/AdminRole.java @@ -19,16 +19,14 @@ import lombok.Data; @ApiModel(description = "用户角色") @TableName("admin_role") public class AdminRole extends BaseEntity { - - private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "角色id") - @TableField("role_id") - private Long roleId; + private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "用户id") - @TableField("admin_id") - private Long adminId; + @ApiModelProperty(value = "角色id") + @TableField("role_id") + private Long roleId; + @ApiModelProperty(value = "用户id") + @TableField("admin_id") + private Long adminId; } diff --git a/model/src/main/java/com/atguigu/ssyx/model/product/SkuInfo.java b/model/src/main/java/com/atguigu/ssyx/model/product/SkuInfo.java index 591e27f..11ae897 100644 --- a/model/src/main/java/com/atguigu/ssyx/model/product/SkuInfo.java +++ b/model/src/main/java/com/atguigu/ssyx/model/product/SkuInfo.java @@ -13,78 +13,77 @@ import java.math.BigDecimal; @ApiModel(description = "SkuInfo") @TableName("sku_info") public class SkuInfo extends BaseEntity { + private static final long serialVersionUID = 1L; - private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类id") + @TableField("category_id") + private Long categoryId; - @ApiModelProperty(value = "分类id") - @TableField("category_id") - private Long categoryId; + @ApiModelProperty(value = "平台属性分组id") + @TableField("attr_group_id") + private Long attrGroupId; - @ApiModelProperty(value = "平台属性分组id") - @TableField("attr_group_id") - private Long attrGroupId; + @ApiModelProperty(value = "商品类型:0->普通商品 1->秒杀商品") + @TableField("sku_type") + private Integer skuType; - @ApiModelProperty(value = "商品类型:0->普通商品 1->秒杀商品") - @TableField("sku_type") - private Integer skuType; + @ApiModelProperty(value = "spu名称") + @TableField("sku_name") + private String skuName; - @ApiModelProperty(value = "spu名称") - @TableField("sku_name") - private String skuName; + @ApiModelProperty(value = "展示图片") + @TableField("img_url") + private String imgUrl; - @ApiModelProperty(value = "展示图片") - @TableField("img_url") - private String imgUrl; + @ApiModelProperty(value = "限购个数/每天(0:不限购)") + @TableField("per_limit") + private Integer perLimit; - @ApiModelProperty(value = "限购个数/每天(0:不限购)") - @TableField("per_limit") - private Integer perLimit; + @ApiModelProperty(value = "上架状态:0->下架;1->上架") + @TableField("publish_status") + private Integer publishStatus; - @ApiModelProperty(value = "上架状态:0->下架;1->上架") - @TableField("publish_status") - private Integer publishStatus; + @ApiModelProperty(value = "审核状态:0->未审核;1->审核通过") + @TableField("check_status") + private Integer checkStatus; - @ApiModelProperty(value = "审核状态:0->未审核;1->审核通过") - @TableField("check_status") - private Integer checkStatus; + @ApiModelProperty(value = "是否新人专享:0->否;1->是") + @TableField("is_new_person") + private Integer isNewPerson; - @ApiModelProperty(value = "是否新人专享:0->否;1->是") - @TableField("is_new_person") - private Integer isNewPerson; + @ApiModelProperty(value = "排序") + @TableField("sort") + private Integer sort; - @ApiModelProperty(value = "排序") - @TableField("sort") - private Integer sort; + @ApiModelProperty(value = "sku编码") + @TableField("sku_code") + private String skuCode; - @ApiModelProperty(value = "sku编码") - @TableField("sku_code") - private String skuCode; + @ApiModelProperty(value = "价格") + @TableField("price") + private BigDecimal price; - @ApiModelProperty(value = "价格") - @TableField("price") - private BigDecimal price; + @ApiModelProperty(value = "市场价") + @TableField("market_price") + private BigDecimal marketPrice; - @ApiModelProperty(value = "市场价") - @TableField("market_price") - private BigDecimal marketPrice; + @ApiModelProperty(value = "库存") + @TableField("stock") + private Integer stock; - @ApiModelProperty(value = "库存") - @TableField("stock") - private Integer stock; + @ApiModelProperty(value = "锁定库存") + @TableField("lock_stock") + private Integer lockStock; - @ApiModelProperty(value = "锁定库存") - @TableField("lock_stock") - private Integer lockStock; + @ApiModelProperty(value = "预警库存") + @TableField("low_stock") + private Integer lowStock; - @ApiModelProperty(value = "预警库存") - @TableField("low_stock") - private Integer lowStock; + @ApiModelProperty(value = "销量") + @TableField("sale") + private Integer sale; - @ApiModelProperty(value = "销量") - @TableField("sale") - private Integer sale; - - @ApiModelProperty(value = "仓库") - @TableField("ware_id") - private Long wareId; + @ApiModelProperty(value = "仓库") + @TableField("ware_id") + private Long wareId; } \ No newline at end of file diff --git a/model/src/main/java/com/atguigu/ssyx/model/search/SkuEs.java b/model/src/main/java/com/atguigu/ssyx/model/search/SkuEs.java index 4fdd392..fe1a27b 100644 --- a/model/src/main/java/com/atguigu/ssyx/model/search/SkuEs.java +++ b/model/src/main/java/com/atguigu/ssyx/model/search/SkuEs.java @@ -1,22 +1,16 @@ package com.atguigu.ssyx.model.search; -import com.baomidou.mybatisplus.annotation.TableField; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.DateFormat; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; -import java.util.Date; import java.util.List; @Data -@Document(indexName = "skues" ,shards = 3,replicas = 1) +@Document(indexName = "skues", shards = 3, replicas = 1) public class SkuEs { - // 商品Id= skuId @Id private Long id; @@ -64,5 +58,4 @@ public class SkuEs { @Field(type = FieldType.Object, index = false) private List ruleList; - } diff --git a/model/src/main/java/com/atguigu/ssyx/vo/product/SkuInfoVo.java b/model/src/main/java/com/atguigu/ssyx/vo/product/SkuInfoVo.java index 840474d..9a6d846 100644 --- a/model/src/main/java/com/atguigu/ssyx/vo/product/SkuInfoVo.java +++ b/model/src/main/java/com/atguigu/ssyx/vo/product/SkuInfoVo.java @@ -1,26 +1,25 @@ package com.atguigu.ssyx.vo.product; -import com.atguigu.ssyx.model.product.*; import com.atguigu.ssyx.model.product.SkuAttrValue; import com.atguigu.ssyx.model.product.SkuImage; import com.atguigu.ssyx.model.product.SkuInfo; import com.atguigu.ssyx.model.product.SkuPoster; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.List; +@EqualsAndHashCode(callSuper = true) @Data public class SkuInfoVo extends SkuInfo { + @ApiModelProperty(value = "海报列表") + private List skuPosterList; - @ApiModelProperty(value = "海报列表") - private List skuPosterList; - - @ApiModelProperty(value = "属性值") - private List skuAttrValueList; - - @ApiModelProperty(value = "图片") - private List skuImagesList; + @ApiModelProperty(value = "属性值") + private List skuAttrValueList; + @ApiModelProperty(value = "图片") + private List skuImagesList; } diff --git a/service/pom.xml b/service/pom.xml index 8091cd0..a87cbe4 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -17,6 +17,7 @@ service-sys service-product service-search + service-activity diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java index 367d90e..7fb0017 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/controller/AdminController.java @@ -1,7 +1,6 @@ package com.atguigu.ssyx.acl.controller; import com.atguigu.ssyx.acl.service.AdminService; -import com.atguigu.ssyx.acl.service.RoleService; import com.atguigu.ssyx.common.result.Result; import com.atguigu.ssyx.model.acl.Admin; import com.atguigu.ssyx.vo.acl.AdminQueryVo; @@ -20,8 +19,6 @@ import java.util.List; public class AdminController { @Autowired private AdminService adminService; - @Autowired - private RoleService roleService; @ApiOperation(value = "获取管理用户分页列表") @GetMapping("{page}/{limit}") diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java index bb6418f..7ee0cd8 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/AdminRoleServiceImpl.java @@ -30,9 +30,13 @@ public class AdminRoleServiceImpl extends ServiceImpl allRolesList = roleService.list(null); + // 根据用户id查询角色 List roleList = baseMapper.findRoleByUserId(adminId); - return AssignAdminRoleVo.builder().assignRoles(roleList).allRolesList(allRolesList).build(); + // 返回全部角色和当前用户查询的角色 + return AssignAdminRoleVo.builder() + .assignRoles(roleList) + .allRolesList(allRolesList).build(); } /** @@ -44,17 +48,20 @@ public class AdminRoleServiceImpl extends ServiceImpllambdaQuery().eq(AdminRole::getAdminId, adminId)); + // 创建集合,遍历完成后一次性插入 ArrayList adminRoles = new ArrayList<>(); // 循环遍历并插入 for (Long roleId : roleIds) { + // 为用户设置角色id AdminRole adminRole = new AdminRole(); adminRole.setAdminId(adminId); adminRole.setRoleId(roleId); adminRoles.add(adminRole); } - + // 插入整体数据 saveBatch(adminRoles); } diff --git a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java index 1bc619b..5239d4e 100644 --- a/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java +++ b/service/service-acl/src/main/java/com/atguigu/ssyx/acl/service/impl/PermissionServiceImpl.java @@ -24,10 +24,8 @@ public class PermissionServiceImpl extends ServiceImpl queryAllMenu() { - // 查询所有菜单 - List permissions = baseMapper.selectList(null); // 转换要求数据格式 - return PermissionHelper.buildPermissions(permissions); + return PermissionHelper.buildPermissions(list()); } /** diff --git a/service/service-activity/Dockerfile b/service/service-activity/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service/service-activity/Dockerfile @@ -0,0 +1,21 @@ +FROM openjdk:17 +MAINTAINER bunny + +#系统编码 +ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 + +# 设置时区,构建镜像时执行的命令 +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo "Asia/Shanghai" > /etc/timezone + +# 设定工作目录 +WORKDIR /home/bunny + +# 复制jar包 +COPY target/*.jar /home/bunny/app.jar + +#启动容器时的进程 +ENTRYPOINT ["java","-jar","/home/bunny/app.jar"] + +#暴露 8080 端口 +EXPOSE 8080 \ No newline at end of file diff --git a/service/service-activity/pom.xml b/service/service-activity/pom.xml new file mode 100644 index 0000000..dd04d1b --- /dev/null +++ b/service/service-activity/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service + 1.0-SNAPSHOT + + + service-activity + jar + + service-activity + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java new file mode 100644 index 0000000..9959687 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/ServiceActivityApplication.java @@ -0,0 +1,17 @@ +package com.atguigu.ssyx.activity; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@SpringBootApplication +@ComponentScan(basePackages = { + "com.atguigu.ssyx.common", + "com.atguigu.ssyx.activity"}) +@EnableTransactionManagement +public class ServiceActivityApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceActivityApplication.class, args); + } +} \ No newline at end of file diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java new file mode 100644 index 0000000..2d6eecb --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/ActivityInfoController.java @@ -0,0 +1,24 @@ +package com.atguigu.ssyx.activity.controller; + + +import com.atguigu.ssyx.activity.service.ActivityInfoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 活动表 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +@RestController +@RequestMapping("/admin/activity/activityInfo") +public class ActivityInfoController { + @Autowired + private ActivityInfoService activityInfoService; + +} + diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/CouponInfoController.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/CouponInfoController.java new file mode 100644 index 0000000..c0970a3 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/controller/CouponInfoController.java @@ -0,0 +1,21 @@ +package com.atguigu.ssyx.activity.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 优惠券信息 前端控制器 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +@RestController +@RequestMapping("/activity/coupon-info") +public class CouponInfoController { + +} + diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java new file mode 100644 index 0000000..7658569 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/ActivityInfoMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.activity.mapper; + +import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 活动表 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +public interface ActivityInfoMapper extends BaseMapper { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java new file mode 100644 index 0000000..2b88f12 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/mapper/CouponInfoMapper.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.activity.mapper; + +import com.atguigu.ssyx.model.activity.CouponInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 优惠券信息 Mapper 接口 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +public interface CouponInfoMapper extends BaseMapper { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java new file mode 100644 index 0000000..3e1ac81 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/ActivityInfoService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.activity.service; + +import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 活动表 服务类 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +public interface ActivityInfoService extends IService { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/CouponInfoService.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/CouponInfoService.java new file mode 100644 index 0000000..43bef9d --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/CouponInfoService.java @@ -0,0 +1,16 @@ +package com.atguigu.ssyx.activity.service; + +import com.atguigu.ssyx.model.activity.CouponInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 优惠券信息 服务类 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +public interface CouponInfoService extends IService { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java new file mode 100644 index 0000000..66b80b8 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/ActivityInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.activity.service.impl; + +import com.atguigu.ssyx.activity.mapper.ActivityInfoMapper; +import com.atguigu.ssyx.activity.service.ActivityInfoService; +import com.atguigu.ssyx.model.activity.ActivityInfo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 活动表 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +@Service +public class ActivityInfoServiceImpl extends ServiceImpl implements ActivityInfoService { + +} diff --git a/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/CouponInfoServiceImpl.java b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/CouponInfoServiceImpl.java new file mode 100644 index 0000000..b0a0ca5 --- /dev/null +++ b/service/service-activity/src/main/java/com/atguigu/ssyx/activity/service/impl/CouponInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.atguigu.ssyx.activity.service.impl; + +import com.atguigu.ssyx.activity.mapper.CouponInfoMapper; +import com.atguigu.ssyx.activity.service.CouponInfoService; +import com.atguigu.ssyx.model.activity.CouponInfo; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 优惠券信息 服务实现类 + *

+ * + * @author bunny + * @since 2024-04-04 + */ +@Service +public class CouponInfoServiceImpl extends ServiceImpl implements CouponInfoService { + +} diff --git a/service/service-activity/src/main/resources/application-dev.yml b/service/service-activity/src/main/resources/application-dev.yml new file mode 100644 index 0000000..1e840b2 --- /dev/null +++ b/service/service-activity/src/main/resources/application-dev.yml @@ -0,0 +1,15 @@ +server: + port: 8204 + +bunny: + datasource: + host: 106.15.251.123 + port: 3305 + sqlData: shequ-activity + username: root + password: "02120212" + + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx diff --git a/service/service-activity/src/main/resources/application.yml b/service/service-activity/src/main/resources/application.yml new file mode 100644 index 0000000..e426921 --- /dev/null +++ b/service/service-activity/src/main/resources/application.yml @@ -0,0 +1,54 @@ +server: + port: 8204 +spring: + application: + name: service-activity + profiles: + active: dev + + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://${bunny.datasource.host}:${bunny.datasource.port}/${bunny.datasource.sqlData}?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true + username: ${bunny.datasource.username} + password: ${bunny.datasource.password} + + cloud: + sentinel: + log: + dir: logs/${spring.application.name}/sentinel + nacos: + discovery: + namespace: ${bunny.nacos.discovery.namespace} + server-addr: ${bunny.nacos.server-addr} + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + +mybatis-plus: + type-aliases-package: com.atguigu.model # 配置每个包前缀 + mapper-locations: classpath:mapper/*.xml + configuration: + map-underscore-to-camel-case: true + auto-mapping-behavior: full + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志 + global-config: + db-config: + # 设置表名前缀,不用在每个tableName添加前缀 + # table-prefix: t_ + # 全局配置主键值方式 + id-type: assign_id + logic-not-delete-value: 0 # 未删除默认为0 + logic-delete-value: 1 # 删除 + logic-delete-field: deleted # 全局配置逻辑删除 + +logging: + level: + com.atguigu.ssyx.activity.mapper: debug + com.atguigu.ssyx.activity.controller: info + com.atguigu.ssyx.activity.service: info + pattern: + dateformat: HH:mm:ss:SSS + file: + path: "logs/${spring.application.name}" diff --git a/service/service-activity/src/main/resources/banner.txt b/service/service-activity/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service/service-activity/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service/service-activity/src/main/resources/favicon.ico b/service/service-activity/src/main/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1ba397c45de65f92b238bb9f94608320bf32209b GIT binary patch literal 13342 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 literal 0 HcmV?d00001 diff --git a/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml b/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml new file mode 100644 index 0000000..10789a7 --- /dev/null +++ b/service/service-activity/src/main/resources/mapper/ActivityInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-activity/src/main/resources/mapper/CouponInfoMapper.xml b/service/service-activity/src/main/resources/mapper/CouponInfoMapper.xml new file mode 100644 index 0000000..da11c25 --- /dev/null +++ b/service/service-activity/src/main/resources/mapper/CouponInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java index 5097704..acb2602 100644 --- a/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java +++ b/service/service-product/src/main/java/com/atguigu/ssyx/product/service/impl/AttrServiceImpl.java @@ -4,6 +4,7 @@ import com.atguigu.ssyx.model.product.Attr; import com.atguigu.ssyx.product.mapper.AttrMapper; import com.atguigu.ssyx.product.service.AttrService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; @@ -24,8 +25,7 @@ public class AttrServiceImpl extends ServiceImpl implements At */ @Override public List findByAttrGroupId(Long attrGroupId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Attr::getAttrGroupId, attrGroupId); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery().eq(Attr::getAttrGroupId, attrGroupId); return baseMapper.selectList(wrapper); } }