From 619f774f522343cac1086fa29052205d617cb4a8 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Mon, 8 Apr 2024 23:05:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=96=B0=E5=A2=9E):=20=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 17 ++++ .idea/encodings.xml | 3 + .idea/misc.xml | 2 +- ReadMe.md | 5 ++ common/common-util/pom.xml | 6 ++ .../com/atguigu/common/utils/JwtHelper.java | 2 +- .../common/config/RedisConfiguration.java | 10 +-- .../common/config/WebMvcConfiguration.java | 16 +++- .../ssyx/common/context/BaseContext.java | 81 ++++++++++++++---- .../exception/GlobalExceptionHandler.java | 2 +- .../interceptor/UserLoginInterceptor.java | 47 ++++++++++ pom.xml | 6 ++ service-client/pom.xml | 2 + .../client/product/ProductFeignClient.java | 8 ++ service-client/service-search-client/pom.xml | 23 +++++ .../ssyx/client/search/SearchFeignClient.java | 14 +++ service-client/service-user-client/pom.xml | 23 +++++ .../ssyx/client/user/UserFeignClient.java | 13 +++ service/pom.xml | 1 + service/service-home/Dockerfile | 21 +++++ service/service-home/pom.xml | 37 ++++++++ .../ssyx/home/ServiceHomeApplication.java | 23 +++++ .../home/controller/HomeApiController.java | 30 +++++++ .../ssyx/home/service/HomeService.java | 13 +++ .../home/service/impl/HomeServiceImpl.java | 56 ++++++++++++ .../src/main/resources/application-dev.yml | 14 +++ .../src/main/resources/application.yml | 42 +++++++++ .../src/main/resources/banner.txt | 16 ++++ .../src/main/resources/favicon.ico | Bin 0 -> 13342 bytes .../product/api/ProductInnerController.java | 14 +++ .../ssyx/product/service/SkuInfoService.java | 7 ++ .../service/impl/SkuInfoServiceImpl.java | 18 ++++ .../src/main/resources/application-dev.yml | 3 +- .../search/controller/SkuApiController.java | 9 ++ .../ssyx/search/repository/SkuRepository.java | 5 +- .../ssyx/search/service/SkuService.java | 11 +++ .../search/service/impl/SkuServiceImpl.java | 15 ++++ .../src/main/resources/application-dev.yml | 6 +- service/service-user/pom.xml | 49 +++++++++++ .../user/api/LeaderAddressApiController.java | 23 +++++ .../ssyx/user/controller/UserController.java | 2 +- .../user/controller/WeiXinApiController.java | 13 ++- .../ssyx/user/service/WeiXinApiService.java | 9 ++ .../service/impl/WeiXinApiServiceImpl.java | 14 +++ .../src/main/resources/application.yml | 3 + 45 files changed, 701 insertions(+), 33 deletions(-) create mode 100644 ReadMe.md create mode 100644 common/service-util/src/main/java/com/atguigu/ssyx/common/interceptor/UserLoginInterceptor.java create mode 100644 service-client/service-search-client/pom.xml create mode 100644 service-client/service-search-client/src/main/java/com/atguigu/ssyx/client/search/SearchFeignClient.java create mode 100644 service-client/service-user-client/pom.xml create mode 100644 service-client/service-user-client/src/main/java/com/atguigu/ssyx/client/user/UserFeignClient.java create mode 100644 service/service-home/Dockerfile create mode 100644 service/service-home/pom.xml create mode 100644 service/service-home/src/main/java/com/atguigu/ssyx/home/ServiceHomeApplication.java create mode 100644 service/service-home/src/main/java/com/atguigu/ssyx/home/controller/HomeApiController.java create mode 100644 service/service-home/src/main/java/com/atguigu/ssyx/home/service/HomeService.java create mode 100644 service/service-home/src/main/java/com/atguigu/ssyx/home/service/impl/HomeServiceImpl.java create mode 100644 service/service-home/src/main/resources/application-dev.yml create mode 100644 service/service-home/src/main/resources/application.yml create mode 100644 service/service-home/src/main/resources/banner.txt create mode 100644 service/service-home/src/main/resources/favicon.ico create mode 100644 service/service-user/src/main/java/com/atguigu/ssyx/user/api/LeaderAddressApiController.java diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 0d3f3f1..224c20f 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -40,6 +40,7 @@ + $ProjectFileDir$ @@ -53,6 +54,7 @@ + $ProjectFileDir$ @@ -64,6 +66,21 @@ $PROJECT_DIR$/service/service-activity/src/main/resources/application.yml com.mysql.cj.jdbc.Driver jdbc:mysql://106.15.251.123:3305/shequ-activity?serverTimezone=GMT + + + + + + + $ProjectFileDir$ + + + mysql.8 + true + true + $PROJECT_DIR$/service/service-user/src/main/resources/application.yml + com.mysql.cj.jdbc.Driver + jdbc:mysql://106.15.251.123:3305/shequ-user?serverTimezone=GMT diff --git a/.idea/encodings.xml b/.idea/encodings.xml index 8148a29..fca171a 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -16,11 +16,14 @@ + + + diff --git a/.idea/misc.xml b/.idea/misc.xml index fb0bd54..9b83232 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -14,7 +14,7 @@ - + \ No newline at end of file diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..53800bb --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,5 @@ +### 小程序申请 + +申请地址:https://mp.weixin.qq.com/wxamp/sandbox?doc=1 + +地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html \ No newline at end of file diff --git a/common/common-util/pom.xml b/common/common-util/pom.xml index da6d822..54ed410 100644 --- a/common/common-util/pom.xml +++ b/common/common-util/pom.xml @@ -40,5 +40,11 @@ 1.0-SNAPSHOT provided + + + javax.xml.bind + jaxb-api + 2.3.1 + diff --git a/common/common-util/src/main/java/com/atguigu/common/utils/JwtHelper.java b/common/common-util/src/main/java/com/atguigu/common/utils/JwtHelper.java index aab1f90..f4d72f0 100644 --- a/common/common-util/src/main/java/com/atguigu/common/utils/JwtHelper.java +++ b/common/common-util/src/main/java/com/atguigu/common/utils/JwtHelper.java @@ -16,7 +16,7 @@ public class JwtHelper { .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration)) .claim("userId", userId) .claim("userName", userName) - .signWith(SignatureAlgorithm.HS512, tokenSignKey) + .signWith(SignatureAlgorithm.HS256, tokenSignKey) .compressWith(CompressionCodecs.GZIP) .compact(); } 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 index c3d6ca5..7dee645 100644 --- 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 @@ -24,6 +24,7 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import org.springframework.data.redis.serializer.StringRedisSerializer; +import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -58,15 +59,14 @@ public class RedisConfiguration { 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())); + config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jsonRedisSerializer())) + .entryTtl(Duration.ofDays(365)); RedisCacheManager cacheManager = RedisCacheManager.builder(factory) - .cacheDefaults(redisCacheConfiguration).build(); + .cacheDefaults(config).build(); return cacheManager; } 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 8827deb..b73f588 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 @@ -1,11 +1,25 @@ package com.atguigu.ssyx.common.config; +import com.atguigu.ssyx.common.interceptor.UserLoginInterceptor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -@Configuration @Slf4j +@Configuration public class WebMvcConfiguration implements WebMvcConfigurer { + @Autowired + private UserLoginInterceptor userLoginAuthInterceptor; + @Override + public void addInterceptors(InterceptorRegistry registry) { + log.info("WebMvcConfiguration===>开始注册自定义拦截器..."); + + String[] userLoginExcludes = {"/api/user/weixin/wxLogin/*"}; + registry.addInterceptor(userLoginAuthInterceptor) + .addPathPatterns("/api/**") + .excludePathPatterns(userLoginExcludes); + } } \ No newline at end of file diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java index c6ffbfe..c0eec45 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/context/BaseContext.java @@ -1,27 +1,78 @@ package com.atguigu.ssyx.common.context; +import com.atguigu.ssyx.vo.acl.AdminLoginVo; +import com.atguigu.ssyx.vo.user.UserLoginVo; + public class BaseContext { - public static ThreadLocal threadLocal = new ThreadLocal<>(); + private static final ThreadLocal userId = new ThreadLocal<>(); + private static final ThreadLocal wareId = new ThreadLocal<>(); + private static final ThreadLocal adminId = new ThreadLocal<>(); + private static final ThreadLocal adminLoginVo = new ThreadLocal<>(); + private static final ThreadLocal userLoginVo = new ThreadLocal<>(); - /** - * 获取当前用户id - */ + // 用户id相关 public static Long getUserId() { - return threadLocal.get(); + return userId.get(); } - /** - * 设置用户id - */ - public static void setUserId(Long userId) { - threadLocal.set(userId); + public static void setUserId(Long _userId) { + userId.set(_userId); } - /** - * 移出当前id - */ - public static void remove() { - threadLocal.remove(); + public static void removeUserId() { + userId.remove(); + } + + // wareId相关 + public static Long getWareId() { + return wareId.get(); + } + + public static void setWareId(Long _wareId) { + wareId.set(_wareId); + } + + public static void removeWareId() { + wareId.remove(); + } + + // adminId 相关 + public static Long getAdminId() { + return adminId.get(); + } + + public static void setAdminId(Long _adminId) { + adminId.set(_adminId); + } + + public static void removeAdminId() { + adminId.remove(); + } + + // adminLoginVo相关 + public static AdminLoginVo getAdminLoginVo() { + return adminLoginVo.get(); + } + + public static void setAdminLoginVo(AdminLoginVo _adminLoginVo) { + adminLoginVo.set(_adminLoginVo); + } + + public static void removeAdminLoginVo() { + adminLoginVo.remove(); + } + + // userLoginVo相关 + public static UserLoginVo getUserLoginVo() { + return userLoginVo.get(); + } + + public static void setUserLoginVo(UserLoginVo _userLoginVo) { + userLoginVo.set(_userLoginVo); + } + + public static void removeUserLoginVo() { + userLoginVo.remove(); } } diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java index b689063..5f82c99 100644 --- a/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/exception/GlobalExceptionHandler.java @@ -40,7 +40,7 @@ public class GlobalExceptionHandler { public Result error(Exception exception) { log.error("GlobalExceptionHandler===>系统异常信息:{}", exception.getMessage()); - return Result.error(null, 500, exception.getMessage()); + return Result.error(null, 500, "系统异常"); } // 特定异常处理 diff --git a/common/service-util/src/main/java/com/atguigu/ssyx/common/interceptor/UserLoginInterceptor.java b/common/service-util/src/main/java/com/atguigu/ssyx/common/interceptor/UserLoginInterceptor.java new file mode 100644 index 0000000..b309f40 --- /dev/null +++ b/common/service-util/src/main/java/com/atguigu/ssyx/common/interceptor/UserLoginInterceptor.java @@ -0,0 +1,47 @@ +package com.atguigu.ssyx.common.interceptor; + +import com.alibaba.fastjson.JSON; +import com.atguigu.common.utils.JwtHelper; +import com.atguigu.ssyx.common.constant.RedisConst; +import com.atguigu.ssyx.common.context.BaseContext; +import com.atguigu.ssyx.vo.user.UserLoginVo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.lang.Nullable; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Slf4j +@Configuration +public class UserLoginInterceptor implements HandlerInterceptor { + @Autowired + private RedisTemplate redisTemplate; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + String token = request.getHeader("token"); + log.info("UserLoginInterceptor===>{}", token); + if (!StringUtils.isEmpty(token)) { + Long userId = JwtHelper.getUserId(token); + Object userIdObject = redisTemplate.opsForValue().get(RedisConst.USER_LOGIN_KEY_PREFIX + userId); + if (userIdObject != null) { + UserLoginVo userLoginVo = JSON.parseObject(JSON.toJSONString(userIdObject), UserLoginVo.class); + BaseContext.setUserId(userLoginVo.getUserId()); + BaseContext.setWareId(userLoginVo.getWareId()); + } + } + return true; + } + + @Override + public void afterCompletion(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @NotNull Object handler, @Nullable Exception ex) throws Exception { + BaseContext.removeUserId(); + BaseContext.removeWareId(); + } +} diff --git a/pom.xml b/pom.xml index 999a7f3..a7d1c5d 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,12 @@ hutool-all 5.8.25 + + + javax.xml.bind + jaxb-api + 2.3.1 + diff --git a/service-client/pom.xml b/service-client/pom.xml index 0127fef..0f8c39d 100644 --- a/service-client/pom.xml +++ b/service-client/pom.xml @@ -15,6 +15,8 @@ service-product-client service-region-client + service-user-client + service-search-client 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 index 4171472..9c39ed3 100644 --- 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 @@ -32,4 +32,12 @@ public interface ProductFeignClient { // 批量获取分类信息 @PostMapping("inner/findCategoryList") List findCategoryList(@RequestBody List rangeIdList); + + // 获取全部商品分类 + @GetMapping("findAllList") + Result> findAllCategoryList(); + + // 获取新人专享 + @GetMapping("inner/findNewPersonSkuInfoList") + Result> findNewPersonSkuInfoList(); } diff --git a/service-client/service-search-client/pom.xml b/service-client/service-search-client/pom.xml new file mode 100644 index 0000000..a3e2206 --- /dev/null +++ b/service-client/service-search-client/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service-client + 1.0-SNAPSHOT + + + service-search-client + jar + + service-search-client + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service-client/service-search-client/src/main/java/com/atguigu/ssyx/client/search/SearchFeignClient.java b/service-client/service-search-client/src/main/java/com/atguigu/ssyx/client/search/SearchFeignClient.java new file mode 100644 index 0000000..0e7bf63 --- /dev/null +++ b/service-client/service-search-client/src/main/java/com/atguigu/ssyx/client/search/SearchFeignClient.java @@ -0,0 +1,14 @@ +package com.atguigu.ssyx.client.search; + +import com.atguigu.ssyx.model.search.SkuEs; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(value = "service-search", path = "/api/search/sku") +public interface SearchFeignClient { + // 获取爆品商品 + @GetMapping("inner/findHotSkuList") + List findHotSkuList(); +} diff --git a/service-client/service-user-client/pom.xml b/service-client/service-user-client/pom.xml new file mode 100644 index 0000000..5486499 --- /dev/null +++ b/service-client/service-user-client/pom.xml @@ -0,0 +1,23 @@ + + 4.0.0 + + com.atguigu + service-client + 1.0-SNAPSHOT + + + service-user-client + jar + + service-user-client + https://maven.apache.org + + + UTF-8 + + + + + + diff --git a/service-client/service-user-client/src/main/java/com/atguigu/ssyx/client/user/UserFeignClient.java b/service-client/service-user-client/src/main/java/com/atguigu/ssyx/client/user/UserFeignClient.java new file mode 100644 index 0000000..c3e4734 --- /dev/null +++ b/service-client/service-user-client/src/main/java/com/atguigu/ssyx/client/user/UserFeignClient.java @@ -0,0 +1,13 @@ +package com.atguigu.ssyx.client.user; + +import com.atguigu.ssyx.vo.user.LeaderAddressVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@FeignClient(value = "service-user", path = "/api/user/leader") +public interface UserFeignClient { + // 提货点地址信息 + @GetMapping("/inner/getUserAddressByUserId/{userId}") + LeaderAddressVo getLeaderAddressByUserId(@PathVariable Long userId); +} diff --git a/service/pom.xml b/service/pom.xml index cc44789..022fb56 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -19,6 +19,7 @@ service-search service-activity service-user + service-home diff --git a/service/service-home/Dockerfile b/service/service-home/Dockerfile new file mode 100644 index 0000000..ef109ac --- /dev/null +++ b/service/service-home/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-home/pom.xml b/service/service-home/pom.xml new file mode 100644 index 0000000..8157393 --- /dev/null +++ b/service/service-home/pom.xml @@ -0,0 +1,37 @@ + + 4.0.0 + + com.atguigu + service + 1.0-SNAPSHOT + + + service-home + jar + + service-home + https://maven.apache.org + + + UTF-8 + + + + + com.atguigu + service-user-client + 1.0-SNAPSHOT + + + com.atguigu + service-product-client + 1.0-SNAPSHOT + + + com.atguigu + service-search-client + 1.0-SNAPSHOT + + + diff --git a/service/service-home/src/main/java/com/atguigu/ssyx/home/ServiceHomeApplication.java b/service/service-home/src/main/java/com/atguigu/ssyx/home/ServiceHomeApplication.java new file mode 100644 index 0000000..54988a7 --- /dev/null +++ b/service/service-home/src/main/java/com/atguigu/ssyx/home/ServiceHomeApplication.java @@ -0,0 +1,23 @@ +package com.atguigu.ssyx.home; + +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) +@EnableTransactionManagement +@ComponentScan(basePackages = { + "com.atguigu.ssyx.common", + "com.atguigu.ssyx.home", +}) +@EnableDiscoveryClient +@EnableFeignClients(basePackages = "com.atguigu.ssyx.client") +public class ServiceHomeApplication { + public static void main(String[] args) { + SpringApplication.run(ServiceHomeApplication.class, args); + } +} diff --git a/service/service-home/src/main/java/com/atguigu/ssyx/home/controller/HomeApiController.java b/service/service-home/src/main/java/com/atguigu/ssyx/home/controller/HomeApiController.java new file mode 100644 index 0000000..21a1b76 --- /dev/null +++ b/service/service-home/src/main/java/com/atguigu/ssyx/home/controller/HomeApiController.java @@ -0,0 +1,30 @@ +package com.atguigu.ssyx.home.controller; + +import com.atguigu.ssyx.common.context.BaseContext; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.home.service.HomeService; +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; + +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +@Api(tags = "首页接口") +@RestController +@RequestMapping("/api/home") +public class HomeApiController { + @Autowired + private HomeService homeService; + + @ApiOperation(value = "获取首页数据") + @GetMapping("index") + public Result> index(HttpServletRequest request) { + Long userId = BaseContext.getUserId(); + Map home = homeService.home(userId); + return Result.success(home); + } +} diff --git a/service/service-home/src/main/java/com/atguigu/ssyx/home/service/HomeService.java b/service/service-home/src/main/java/com/atguigu/ssyx/home/service/HomeService.java new file mode 100644 index 0000000..3fbc73e --- /dev/null +++ b/service/service-home/src/main/java/com/atguigu/ssyx/home/service/HomeService.java @@ -0,0 +1,13 @@ +package com.atguigu.ssyx.home.service; + +import java.util.Map; + +public interface HomeService { + /** + * 获取首页数据 + * + * @param userId 用户Id + * @return Map + */ + Map home(Long userId); +} diff --git a/service/service-home/src/main/java/com/atguigu/ssyx/home/service/impl/HomeServiceImpl.java b/service/service-home/src/main/java/com/atguigu/ssyx/home/service/impl/HomeServiceImpl.java new file mode 100644 index 0000000..c63888f --- /dev/null +++ b/service/service-home/src/main/java/com/atguigu/ssyx/home/service/impl/HomeServiceImpl.java @@ -0,0 +1,56 @@ +package com.atguigu.ssyx.home.service.impl; + +import com.atguigu.ssyx.client.product.ProductFeignClient; +import com.atguigu.ssyx.client.search.SearchFeignClient; +import com.atguigu.ssyx.client.user.UserFeignClient; +import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.home.service.HomeService; +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.vo.user.LeaderAddressVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class HomeServiceImpl implements HomeService { + @Autowired + private UserFeignClient userFeignClient; + @Autowired + private ProductFeignClient productFeignClient; + @Autowired + private SearchFeignClient searchFeignClient; + + /** + * 获取首页数据 + * + * @param userId 用户Id + * @return Map + */ + @Override + public Map home(Long userId) { + Map result = new HashMap<>(); + // 远程调用模块获取需要数据 + LeaderAddressVo leaderAddressVo = userFeignClient.getLeaderAddressByUserId(userId); + result.put("leaderAddress", leaderAddressVo); + + // 获取全部商品分类 + List categoryList = productFeignClient.findAllCategoryList().getData(); + result.put("categoryList", categoryList); + + // 获取新人专享 + Result> personSkuInfoList = productFeignClient.findNewPersonSkuInfoList(); + result.put("personSkuInfoList", personSkuInfoList); + + // 使用评分查询-ES + List hotSkuList = searchFeignClient.findHotSkuList(); + result.put("hotSkuList", hotSkuList); + + // 2.获取分类 + return result; + } +} diff --git a/service/service-home/src/main/resources/application-dev.yml b/service/service-home/src/main/resources/application-dev.yml new file mode 100644 index 0000000..41fe01d --- /dev/null +++ b/service/service-home/src/main/resources/application-dev.yml @@ -0,0 +1,14 @@ +server: + port: 8207 + +bunny: + redis: + host: 47.120.65.66 + port: 6379 + database: 3 + password: "02120212" + + nacos: + server-addr: z-bunny.cn:8848 + discovery: + namespace: ssyx diff --git a/service/service-home/src/main/resources/application.yml b/service/service-home/src/main/resources/application.yml new file mode 100644 index 0000000..71f6861 --- /dev/null +++ b/service/service-home/src/main/resources/application.yml @@ -0,0 +1,42 @@ +server: + port: 8207 +spring: + application: + name: service-home + 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} + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + 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 #最小空闲 + +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-home/src/main/resources/banner.txt b/service/service-home/src/main/resources/banner.txt new file mode 100644 index 0000000..cc77fc2 --- /dev/null +++ b/service/service-home/src/main/resources/banner.txt @@ -0,0 +1,16 @@ +-----------------▄██-█▄--------- +-----------------███▄██▄-------- +-----------------███████-------- +-----------------▀███████------- +-------------------██████▄▄----- +-------------------█████████▄--- +-------------------██████▄████-- +-------▄███████████████████████- +-----▄███████████████████████▀-- +---▄██████████████████████------ +---███████████████████████------ +---███████████████████████------ +-▄▄██████████████████████▀------ +-█████████████████▀█████-------- +-▀██████████████▀▀-▀█████▄------ +-------▀▀▀▀▀▀▀▀▀------▀▀▀▀------ \ No newline at end of file diff --git a/service/service-home/src/main/resources/favicon.ico b/service/service-home/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/api/ProductInnerController.java b/service/service-product/src/main/java/com/atguigu/ssyx/product/api/ProductInnerController.java index b20ebb2..39a5556 100644 --- 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 @@ -54,4 +54,18 @@ public class ProductInnerController { public List findCategoryList(@RequestBody List rangeIdList) { return categoryService.listByIds(rangeIdList); } + + @ApiOperation(value = "获取全部商品分类") + @GetMapping("findAllList") + public Result> findAllList() { + List categoryList = categoryService.findAllList(); + return Result.success(categoryList); + } + + @ApiOperation(value = "获取新人专享") + @GetMapping("inner/findNewPersonSkuInfoList") + public Result> findNewPersonSkuInfoList() { + List newPersonList = skuInfoService.findNewPersonList(); + return Result.success(newPersonList); + } } 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 7576ea3..af0f778 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 @@ -89,4 +89,11 @@ public interface SkuInfoService extends IService { * @return List */ List findSkuInfoByKeyword(String keyword); + + /** + * * 获取新人专享 + * + * @return 新人专享 + */ + List findNewPersonList(); } 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 8c43a26..162f867 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 @@ -259,4 +259,22 @@ public class SkuInfoServiceImpl extends ServiceImpl impl public List findSkuInfoByKeyword(String keyword) { return list(Wrappers.lambdaQuery().like(SkuInfo::getSkuName, keyword)); } + + /** + * * 获取新人专享 + * + * @return 新人专享 + */ + @Override + public List findNewPersonList() { + // 每页显示3条记录 + Page pageParam = new Page<>(1, 3); + // 设置查询条件 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SkuInfo::getIsNewPerson, 1); + wrapper.eq(SkuInfo::getPublishStatus, 1); + wrapper.orderByDesc(SkuInfo::getStock); + + return page(pageParam, wrapper).getRecords(); + } } diff --git a/service/service-product/src/main/resources/application-dev.yml b/service/service-product/src/main/resources/application-dev.yml index 189e4ce..a672197 100644 --- a/service/service-product/src/main/resources/application-dev.yml +++ b/service/service-product/src/main/resources/application-dev.yml @@ -3,7 +3,8 @@ server: bunny: rabbitmq: - host: 192.168.1.4 + # host: 192.168.1.4 + host: 192.168.3.98 port: 5672 username: bunny password: "02120212" 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 9e5155c..23eee00 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 @@ -2,6 +2,7 @@ package com.atguigu.ssyx.search.controller; import com.atguigu.ssyx.common.result.Result; import com.atguigu.ssyx.model.product.SkuInfo; +import com.atguigu.ssyx.model.search.SkuEs; import com.atguigu.ssyx.search.service.SkuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -11,6 +12,8 @@ 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 = "商品添加到ES") @RestController @RequestMapping("/api/search/sku") @@ -31,4 +34,10 @@ public class SkuApiController { skuService.lowerGoods(skuId); return Result.success(); } + + @ApiOperation(value = "获取爆品商品") + @GetMapping("inner/findHotSkuList") + public List findHotSkuList() { + return skuService.findHotSkuList(); + } } 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 index 718fb65..bcac52c 100644 --- 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 @@ -1,7 +1,10 @@ package com.atguigu.ssyx.search.repository; import com.atguigu.ssyx.model.search.SkuEs; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; -public interface SkuRepository extends ElasticsearchRepository { +public interface SkuRepository extends ElasticsearchRepository { + Page findByOrderByHotScoreDesc(PageRequest pageRequest); } 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 d16d006..417d5e3 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,5 +1,9 @@ package com.atguigu.ssyx.search.service; +import com.atguigu.ssyx.model.search.SkuEs; + +import java.util.List; + public interface SkuService { /** * 上架商品 @@ -14,4 +18,11 @@ public interface SkuService { * @param skuId 商品ID */ void lowerGoods(Long skuId); + + /** + * * 获取爆品商品 + * + * @return 查询的商品 + */ + List findHotSkuList(); } 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 8cdd3c6..9ff696f 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 @@ -8,8 +8,11 @@ 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.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Objects; @Service @@ -61,4 +64,16 @@ public class SkuServiceImpl implements SkuService { public void lowerGoods(Long skuId) { skuRepository.deleteById(skuId); } + + /** + * * 获取爆品商品 + * + * @return 查询的商品 + */ + @Override + public List findHotSkuList() { + PageRequest pageRequest = PageRequest.of(0, 10); + Page pageModel = skuRepository.findByOrderByHotScoreDesc(pageRequest); + return pageModel.getContent(); + } } diff --git a/service/service-search/src/main/resources/application-dev.yml b/service/service-search/src/main/resources/application-dev.yml index e1320f4..415ae18 100644 --- a/service/service-search/src/main/resources/application-dev.yml +++ b/service/service-search/src/main/resources/application-dev.yml @@ -3,13 +3,15 @@ server: bunny: rabbitmq: - host: 192.168.1.4 + # host: 192.168.1.4 + host: 192.168.3.98 port: 5672 username: bunny password: "02120212" elasticsearch: - uris: http://192.168.1.4:9200 + #uris: http://192.168.1.4:9200 + uris: http://192.168.3.98:9200 nacos: server-addr: z-bunny.cn:8848 diff --git a/service/service-user/pom.xml b/service/service-user/pom.xml index 93a3661..0ed9c23 100644 --- a/service/service-user/pom.xml +++ b/service/service-user/pom.xml @@ -14,6 +14,8 @@ https://maven.apache.org + 192.168.1.4:1100 + spzx UTF-8 @@ -29,4 +31,51 @@ 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + com.spotify + docker-maven-plugin + 1.2.2 + + + + build-image + + package + + build + push + + + + + harbor + http://${docker.repostory} + + http://192.168.1.4:2375 + + + ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version} + + + ${project.basedir} + + false + + + + diff --git a/service/service-user/src/main/java/com/atguigu/ssyx/user/api/LeaderAddressApiController.java b/service/service-user/src/main/java/com/atguigu/ssyx/user/api/LeaderAddressApiController.java new file mode 100644 index 0000000..0b974a9 --- /dev/null +++ b/service/service-user/src/main/java/com/atguigu/ssyx/user/api/LeaderAddressApiController.java @@ -0,0 +1,23 @@ +package com.atguigu.ssyx.user.api; + +import com.atguigu.ssyx.user.service.UserService; +import com.atguigu.ssyx.vo.user.LeaderAddressVo; +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; + +@RestController +@RequestMapping("/api/user/leader") +public class LeaderAddressApiController { + @Autowired + private UserService userService; + + @ApiOperation("提货点地址信息") + @GetMapping("/inner/getUserAddressByUserId/{userId}") + public LeaderAddressVo getLeaderAddressByUserId(@PathVariable Long userId) { + return userService.getLeaderAddressVoByUserId(userId); + } +} diff --git a/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/UserController.java b/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/UserController.java index 38c6162..677e5a9 100644 --- a/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/UserController.java +++ b/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/UserController.java @@ -7,6 +7,6 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/user/user") public class UserController { - + } diff --git a/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/WeiXinApiController.java b/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/WeiXinApiController.java index ecd00fe..4299e8c 100644 --- a/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/WeiXinApiController.java +++ b/service/service-user/src/main/java/com/atguigu/ssyx/user/controller/WeiXinApiController.java @@ -1,14 +1,12 @@ package com.atguigu.ssyx.user.controller; import com.atguigu.ssyx.common.result.Result; +import com.atguigu.ssyx.model.user.User; import com.atguigu.ssyx.user.service.WeiXinApiService; 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 org.springframework.web.bind.annotation.*; import java.util.Map; @@ -25,4 +23,11 @@ public class WeiXinApiController { Map map = weChatService.callback(code); return Result.success(map); } + + @PostMapping("/auth/updateUser") + @ApiOperation(value = "更新用户昵称与头像") + public Result updateUser(@RequestBody User user) { + weChatService.updateUser(user); + return Result.success(); + } } \ No newline at end of file diff --git a/service/service-user/src/main/java/com/atguigu/ssyx/user/service/WeiXinApiService.java b/service/service-user/src/main/java/com/atguigu/ssyx/user/service/WeiXinApiService.java index 278bb22..7940936 100644 --- a/service/service-user/src/main/java/com/atguigu/ssyx/user/service/WeiXinApiService.java +++ b/service/service-user/src/main/java/com/atguigu/ssyx/user/service/WeiXinApiService.java @@ -1,5 +1,7 @@ package com.atguigu.ssyx.user.service; +import com.atguigu.ssyx.model.user.User; + import java.util.Map; public interface WeiXinApiService { @@ -9,4 +11,11 @@ public interface WeiXinApiService { * @param code 登录码 */ Map callback(String code); + + /** + * * 更新用户昵称与头像 + * + * @param user 用户信息 + */ + void updateUser(User user); } diff --git a/service/service-user/src/main/java/com/atguigu/ssyx/user/service/impl/WeiXinApiServiceImpl.java b/service/service-user/src/main/java/com/atguigu/ssyx/user/service/impl/WeiXinApiServiceImpl.java index 5a891e7..e936537 100644 --- a/service/service-user/src/main/java/com/atguigu/ssyx/user/service/impl/WeiXinApiServiceImpl.java +++ b/service/service-user/src/main/java/com/atguigu/ssyx/user/service/impl/WeiXinApiServiceImpl.java @@ -3,6 +3,7 @@ package com.atguigu.ssyx.user.service.impl; import com.alibaba.fastjson.JSONObject; import com.atguigu.common.utils.JwtHelper; import com.atguigu.ssyx.common.constant.RedisConst; +import com.atguigu.ssyx.common.context.BaseContext; import com.atguigu.ssyx.common.exception.BunnyException; import com.atguigu.ssyx.common.result.ResultCodeEnum; import com.atguigu.ssyx.enums.UserType; @@ -76,4 +77,17 @@ public class WeiXinApiServiceImpl implements WeiXinApiService { throw new BunnyException(ResultCodeEnum.FETCH_ACCESSTOKEN_FAILD); } } + + /** + * * 更新用户昵称与头像 + * + * @param user 用户信息 + */ + @Override + public void updateUser(User user) { + User userServiceById = userService.getById(BaseContext.getUserId()); + userServiceById.setNickName(user.getNickName().replaceAll("[ue000-uefff]", "*")); + userServiceById.setPhotoUrl(user.getPhotoUrl()); + userService.updateById(userServiceById); + } } diff --git a/service/service-user/src/main/resources/application.yml b/service/service-user/src/main/resources/application.yml index 49607dc..eb76422 100644 --- a/service/service-user/src/main/resources/application.yml +++ b/service/service-user/src/main/resources/application.yml @@ -34,6 +34,9 @@ spring: discovery: namespace: ${bunny.nacos.discovery.namespace} server-addr: ${bunny.nacos.server-addr} + loadbalancer: + ribbon: + enabled: false jackson: date-format: yyyy-MM-dd HH:mm:ss