2 Commits

Author SHA1 Message Date
xuelijun
261a8b4797 商品详情1 2025-10-29 16:48:35 +08:00
c283800915 调整产品 2025-10-29 16:37:25 +08:00
7 changed files with 56 additions and 15 deletions

View File

@@ -1,11 +1,13 @@
package com.tashow.cloud.productapi.api.product; package com.tashow.cloud.productapi.api.product;
import com.tashow.cloud.common.pojo.CommonResult;
import com.tashow.cloud.common.pojo.PageResult; import com.tashow.cloud.common.pojo.PageResult;
import com.tashow.cloud.productapi.api.product.dto.ProdDO; import com.tashow.cloud.productapi.api.product.dto.ProdDO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO;
import com.tashow.cloud.productapi.enums.ApiConstants; import com.tashow.cloud.productapi.enums.ApiConstants;
import jakarta.annotation.security.PermitAll;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@@ -22,8 +24,9 @@ public interface ProdApi {
* @return 编号 * @return 编号
*/ */
@GetMapping(PREFIX + "/getProdInfo1") @GetMapping(PREFIX + "/getProdInfo")
ProdDO getProdInfo(@RequestParam(value = "id", required = false) Long id); @PermitAll
CommonResult<ProdDO> getProdInfo(@RequestParam(value = "id", required = false) Long id);
/** /**
* 获取商品服务配置 * 获取商品服务配置

View File

@@ -33,7 +33,7 @@ public class EnvEnvironmentPostProcessor implements EnvironmentPostProcessor {
environment.getSystemProperties().put(hostNameKey, EnvUtils.getHostName()); environment.getSystemProperties().put(hostNameKey, EnvUtils.getHostName());
} }
// 1.1 如果没有 yudao.env.tag 配置项,则不进行配置项的修改 // 1.1 如果没有 tashow.env.tag 配置项,则不进行配置项的修改
String tag = EnvUtils.getTag(environment); String tag = EnvUtils.getTag(environment);
if (StrUtil.isEmpty(tag)) { if (StrUtil.isEmpty(tag)) {
return; return;

View File

@@ -136,7 +136,7 @@ public class WebSecurityConfigurerAdapter {
.requestMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll() .requestMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll()
.requestMatchers(HttpMethod.HEAD, permitAllUrls.get(HttpMethod.HEAD).toArray(new String[0])).permitAll() .requestMatchers(HttpMethod.HEAD, permitAllUrls.get(HttpMethod.HEAD).toArray(new String[0])).permitAll()
.requestMatchers(HttpMethod.PATCH, permitAllUrls.get(HttpMethod.PATCH).toArray(new String[0])).permitAll() .requestMatchers(HttpMethod.PATCH, permitAllUrls.get(HttpMethod.PATCH).toArray(new String[0])).permitAll()
// 1.3 基于 yudao.security.permit-all-urls 无需认证 // 1.3 基于 tashow.security.permit-all-urls 无需认证
.requestMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll() .requestMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll()
) )
// ②:每个项目的自定义规则 // ②:每个项目的自定义规则

View File

@@ -1,10 +1,8 @@
package com.tashow.cloud.product; package com.tashow.cloud.product;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* 应用服务启动类 * 应用服务启动类

View File

@@ -1,17 +1,14 @@
package com.tashow.cloud.product.api; package com.tashow.cloud.product.api;
import com.tashow.cloud.common.pojo.CommonResult;
import com.tashow.cloud.common.pojo.PageResult; import com.tashow.cloud.common.pojo.PageResult;
import com.tashow.cloud.product.service.ProdService; import com.tashow.cloud.product.service.ProdService;
import com.tashow.cloud.product.service.ShopDetailService;
import com.tashow.cloud.productapi.api.product.ProdApi; import com.tashow.cloud.productapi.api.product.ProdApi;
import com.tashow.cloud.productapi.api.product.ShopDetailApi;
import com.tashow.cloud.productapi.api.product.dto.ProdDO; import com.tashow.cloud.productapi.api.product.dto.ProdDO;
import com.tashow.cloud.productapi.api.product.dto.ShopDetailDO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdListVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdPageReqVO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO; import com.tashow.cloud.productapi.api.product.vo.prod.ProdServiceVO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -23,8 +20,8 @@ public class ProdImpl implements ProdApi {
private ProdService prodService; private ProdService prodService;
@Override @Override
public ProdDO getProdInfo(Long id) { public CommonResult<ProdDO> getProdInfo(Long id) {
return prodService.getProd(id); return CommonResult.success(prodService.getProd(id));
} }
@Override @Override

View File

@@ -0,0 +1,43 @@
package com.tashow.cloud.product.security.config;
import com.tashow.cloud.productapi.enums.ApiConstants;
import com.tashow.cloud.security.security.config.AuthorizeRequestsCustomizer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
/**
* Infra 模块的 Security 配置
*/
@Configuration(proxyBeanMethods = false, value = "prodSecurityConfiguration")
public class ProdSecurityConfiguration {
@Value("${spring.boot.admin.context-path:''}")
private String adminSeverContextPath;
@Bean("prodAuthorizeRequestsCustomizer")
public AuthorizeRequestsCustomizer authorizeRequestsCustomizer() {
return new AuthorizeRequestsCustomizer() {
@Override
public void customize(AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry registry) {
// Spring Boot Actuator 的安全配置
registry.requestMatchers("/actuator").permitAll()
.requestMatchers("/actuator/**").permitAll();
// Druid 监控
registry.requestMatchers("/druid/**").permitAll();
// Spring Boot Admin Server 的安全配置
registry.requestMatchers(adminSeverContextPath).permitAll()
.requestMatchers(adminSeverContextPath + "/**").permitAll();
// TODO 芋艿:这个每个项目都需要重复配置,得捉摸有没通用的方案
// RPC 服务的安全配置
registry.requestMatchers(ApiConstants.PREFIX + "/**").permitAll();
}
};
}
}

View File

@@ -163,8 +163,8 @@ public class TradeOrderController {
//获取交易订单详情 //获取交易订单详情
TradeOrderItemDO orderItem = tradeOrderQueryService.getOrderItem(reqVo.getItemId()); TradeOrderItemDO orderItem = tradeOrderQueryService.getOrderItem(reqVo.getItemId());
//获取产品详情 //获取产品详情
ProdDO prodInfo = prodApi.getProdInfo(reqVo.getSpuId()); CommonResult<ProdDO> prodInfo = prodApi.getProdInfo(reqVo.getSpuId());
return success(TradeOrderConvert.INSTANCE.convert(orderItem,prodInfo)); return success(TradeOrderConvert.INSTANCE.convert(orderItem,prodInfo.getData()));
} }
/** /**