程序员的资源宝库

网站首页 > gitee 正文

谷粒商城学习笔记,第四天:商品服务

sanyeah 2024-04-13 16:11:34 gitee 4 ℃ 0 评论

谷粒商城学习笔记,第四天:商品服务

1、TableField

@TableField(exist = false) 注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错

2、gataway网关配置

server:
  port: 88
spring:
  application:
    name: gulimall-gateway
  cloud:
    gateway:
      routes:
        ##商品路由
        - id: product_route
          uri: lb://gulimall-product
          predicates:
            - Path=/api/product/**
          filters:
            - RewritePath=/api/(?<segment>.*),/product/$\{segment}
        ##后台管理系统路由     
        - id: admin_route
          ##转发请求URL:loadbalenca://服务名
          uri: lb://renren-fast
          ##断言拦截的URL
          predicates:
            - Path=/api/**
          ##重写URL:真实请求=uri+重写后的url
          filters:
            - RewritePath=/api/(?<segment>.*),/renren-fast/$\{segment}
    nacos:
      server-addr: 127.0.0.1:8848

3、跨域

浏览器对JavaScript施加的安全限制

同源策略:只要协议+域名+端口 都要相同,其中有任何一个不同都会产生跨域

非简单请求,都会发送一个预检请求(OPTIONS)

①、预检请求,OPTIONS
②、响应允许跨域
③、发送真实请求
④、响应数据

解决方案: ①、浏览器请求nginx,Nginx再转发请求 ②、后端虚拟返回OPTIONS的响应头,配置当次请求允许跨域

在gateway项目中新增跨域配置:

@Configuration
public class CorsConfig {

    @Bean
    public CorsWebFilter corsWebFilter(){
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();

        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);

        corsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(corsConfigurationSource);
    }

}

4、配置文件读取顺序

1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml

5、逻辑删除:mybatis-plus

1>、mybatis-plus的逻辑删除功能,需要在数据表里 有一个字段表示是否删除

2>、application.yml新增

##mybatis-plus相关配置
mybatis-plus:
  global-config:
    db-config:
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

3>、对应实体字段增加注解

//value表示未删除  delval表示删除
@TableLogic(value = "1",delval = "0")

4>、使用

//物理删除商品分类
baseMapper.deleteBatchIds(asList);

6、OSS文件服务

1>、第一种方式:通过应用服务器上传

导入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>aliyun-oss-spring-boot-starter</artifactId>
</dependency>

编写配置

alibaba: 
   cloud: 
	 access-key: your-ak
     secret-key: your-sk
     oss: 
       endpoint: xxxx

代码编写

 @Service
 public class YourService {
 	@Autowired
 	private OSSClient ossClient;

 	public void saveFile() {
 		ossClient.getObject(new GetObjectRequest(bucketName, objectName), new File("pathOfYourLocalFile"));
 	}
 }

2>、前端从服务端获取签名后直接上传OSS

//TODO

7、统一异常处理

@ControllerAdvice + @ExceptionHandler

@ControllerAdvice
public class GlobalException {

    //空指针异常
    @ExceptionHandler(value = {NullPointerException.class})
    public ModelAndView nullException(Exception e){
        ModelAndView mav = new ModelAndView("error1");
        mav.addObject("error",e.toString());
        return mav;
    }

    //算术异常
    @ExceptionHandler(value = {ArithmeticException.class})
    public ModelAndView arithmeticException(Exception e){
        ModelAndView mav = new ModelAndView("error2");
        mav.addObject("error",e.toString());
        return mav;
    }
    
    
}

8、JSR 300

9、商品

SPU   SKU   
商品规格:商品规格 对应SPU 如:长宽高  重量 屏幕大小  CPU品牌型号 GPU型号====>基本属性
销售属性:销售属性 对应SKU 如:颜色  内存大小 =======>销售属性
商品介绍:商品介绍 对应SPU



分类(category)===>属性分组(attr_group)

分类(category)====>属性(attr):为了搜索

属性分组attr_group====》属性attr

属性attr===》属性类型attr_type(基本属性、销售属性)

商品SPU====》分类(category)|| 品牌(brand)

品牌(brand)=====>分类(category)  [一个品牌对应多个分类]

商品SPU====》属性attr(基本属性)

商品SPU====>商品SKU======>属性attr(销售属性)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表