02| 项目基础数据构建&技术选型&项目构建 小滴课堂讲师 2024年07月29日 预计阅读 3 分钟 原文 #### 基础数据构建 项目结构:**前后端分离架构,容器编排部署** 独立数据库: - 用户服务数据库: p_nla_user (Project_New Lead Acquisition_User 拉新营销项目用户数据库) - 商品服务数据库: p_nla_product - 优惠券服务数据库: p_nla_coupon - 订单服务数据库: p_nla_order 用户服务数据库中创建表:`user`、`address` 用户表 ```sql CREATE TABLE `user` ( `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(128) DEFAULT NULL COMMENT '昵称', `pwd` varchar(124) DEFAULT NULL COMMENT '密 码', `head_img` varchar(524) DEFAULT NULL COMMENT '头像', `slogan` varchar(524) DEFAULT NULL COMMENT '用户签名', `sex` tinyint(2) DEFAULT '1' COMMENT '0-女,1-男', `points` int(10) DEFAULT '0' COMMENT '积 分', `create_time` datetime DEFAULT NULL, `mail` varchar(64) DEFAULT NULL COMMENT '邮 箱', `secret` varchar(12) DEFAULT NULL COMMENT '盐,用于个人敏感信息处理', PRIMARY KEY (`id`), UNIQUE KEY `mail_idx` (`mail`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; ``` 收货地址表 ```sql CREATE TABLE `address` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `user_id` bigint(20) DEFAULT NULL COMMENT '用户id', `default_status` int(1) DEFAULT NULL COMMENT '是否默认收货地址:0-否;1-是', `receive_name` varchar(64) DEFAULT NULL COMMENT '收发货人姓名', `phone` varchar(64) DEFAULT NULL COMMENT '收货人电话', `province` varchar(64) DEFAULT NULL COMMENT '省/直辖市', `city` varchar(64) DEFAULT NULL COMMENT '市', `region` varchar(64) DEFAULT NULL COMMENT '区', `detail_address` varchar(200) DEFAULT NULL COMMENT '详细地址', `create_time` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COMMENT='电商-公司收发货地址表'; ``` #### 技术选型 - SpringCloud - 通信方式:http restful - 注册中心:eureka - 配置中心:config - 断路器:hystrix - 网关:zuul/gateway - 分布式追踪系统:sleuth+zipkin - Spring Cloud Alibaba - 通信方式:http restful - 服务注册发现:Nacos - 服务限流降级:Sentinel - 分布配置中心:Nacos - 服务网关:SpringCloud Gateway - 服务之间调用:Feign、Ribbon - 链路追踪:Sleuth+Zipkin SpringCloud很多组件是基于第三方整合,`⽬前多个已经不更新了`,比如zuul、eureka、hystrix等 版本选择: - SpringBoot 2.3.3.RELEASE 版本 - Spring Cloud Hoxton.SR8 版本 - AlibabaCloud 2.2.1.RELEASE 版本 #### 项目工程分类 1. 公共模块:nla-common 2. 商品服务模块:nla-product-service 3. 用户服务模块:nla-user-service 4. 订单服务模块:nla-order-service 5. 优惠券服务模块:nla-coupon-service 6. 网关模块:nla-gateway 父级项目的依赖`pom.xml`: ```xml 4.0.0 cn.nla nla-shop 1.0-SNAPSHOT pom 拉新营销平台 nla-common nla-product-service nla-user-service nla-order-service nla-coupon-service nla-gateway 11 11 11 2.3.3.RELEASE Hoxton.SR8 2.2.1.RELEASE 3.4.0 1.18.16 3.9 1.15 3.0.0 yuan-cloud true org.springframework.boot spring-boot-dependencies ${spring.boot.version} pom import org.springframework.cloud spring-cloud-dependencies ${spring.cloud.version} pom import com.alibaba.cloud spring-cloud-alibaba-dependencies ${alibaba.cloud.version} pom import com.baomidou mybatis-plus-boot-starter ${mybatisplus.boot.starter.version} org.projectlombok lombok ${lombok.version} provided org.apache.commons commons-lang3 ${commons.lang3.version} commons-codec commons-codec ${commons.codec.version} io.springfox springfox-boot-starter ${springfox.boot.starter.version} maven-ali http://maven.aliyun.com/nexus/content/groups/public// true true always fail public aliyun nexus http://maven.aliyun.com/nexus/content/groups/public/ true false org.springframework.boot spring-boot-maven-plugin ${spring.boot.version} true true ``` **提效利器**:`Lombok、MybaitsPlus、SwaggerUI` Lombok常见注解: @Getter/@Setter,@ToString,@EqualsAndHashCode,@NoArgsConstructor,@AllArgsConstructor,@Data,@Log / @Slf4j nla-common项目的依赖: ```xml org.projectlombok lombok org.springframework.boot spring-boot-starter-web mysql mysql-connector-java com.baomidou mybatis-plus-boot-starter com.baomidou mybatis-plus-generator 3.4.1 org.apache.velocity velocity-engine-core 2.0 io.springfox springfox-boot-starter ``` nla-user-service项目依赖: ```xml cn.nla nla-common 1.0-SNAPSHOT org.projectlombok lombok ```
评论区