数据是否可用校验
創(chuàng)建用戶中心
用戶搜索到自己心儀的商品,接下來(lái)就要去購(gòu)買,但是購(gòu)買必須先登錄。所以接下來(lái)我們編寫用戶中心,實(shí)現(xiàn)用戶的登錄和注冊(cè)功能。
用戶中心的提供的服務(wù):
-
用戶的注冊(cè)
-
用戶登錄
-
用戶個(gè)人信息管理
-
用戶地址管理
-
用戶收藏管理
-
我的訂單
-
優(yōu)惠券管理
這里我們暫時(shí)先實(shí)現(xiàn)基本的:注冊(cè)和登錄功能,其它功能大家可以自行補(bǔ)充完整。
因?yàn)橛脩糁行牡姆?wù)其它微服務(wù)也會(huì)調(diào)用,因此這里我們做聚合。
learn-user:父工程,包含2個(gè)子工程:
-
learn-user-interface:實(shí)體及接口
-
learn-user-service:業(yè)務(wù)和服務(wù)
創(chuàng)建父module
創(chuàng)建learn-user-interface
?
在learn-user下,創(chuàng)建module:
pom:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>learn-user</artifactId><groupId>com.learn.user</groupId><version>1.0.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.learn.user</groupId><artifactId>learn-user-interface</artifactId><version>1.0.0-SNAPSHOT</version></project>創(chuàng)建learn-user-service
創(chuàng)建module
pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>learn-user</artifactId><groupId>com.learn.user</groupId><version>1.0.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.learn.user</groupId><artifactId>learn-user-service</artifactId><version>1.0.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mybatis啟動(dòng)器 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!-- 通用Mapper啟動(dòng)器 --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId></dependency><!-- mysql驅(qū)動(dòng) --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.learn.user</groupId><artifactId>learn-user-interface</artifactId><version>1.0.0-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies></project>啟動(dòng)類
@SpringBootApplication @EnableDiscoveryClient @MapperScan("com.learn.user.mapper") public class UserApplication {public static void main(String[] args) {SpringApplication.run(UserApplication.class, args);} }配置:
server:port: 8085 spring:application:name: user-servicedatasource:url: jdbc:mysql://127.0.0.1:3306/learnusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driver eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eurekainstance:lease-renewal-interval-in-seconds: 5lease-expiration-duration-in-seconds: 15mybatis:type-aliases-package: com.learn.user.pojo父工程learn-user的pom:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>learn</artifactId><groupId>com.learn.parent</groupId><version>1.0.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.learn.user</groupId><artifactId>learn-user</artifactId><packaging>pom</packaging><version>1.0.0-SNAPSHOT</version><modules><module>learn-user-interface</module><module>learn-user-service</module></modules></project>添加網(wǎng)關(guān)路由
我們修改learn-gateway,添加路由規(guī)則,對(duì)learn-user-service進(jìn)行路由:
后臺(tái)功能準(zhǔn)備
接口文檔
整個(gè)用戶中心的開發(fā),我們將模擬公司內(nèi)面向接口的開發(fā)。
我們將根據(jù)文檔直接編寫后臺(tái)功能,不關(guān)心頁(yè)面實(shí)現(xiàn)。
?
數(shù)據(jù)結(jié)構(gòu)
CREATE TABLE `tb_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`username` varchar(50) NOT NULL COMMENT '用戶名',`password` varchar(32) NOT NULL COMMENT '密碼,加密存儲(chǔ)',`phone` varchar(20) DEFAULT NULL COMMENT '注冊(cè)手機(jī)號(hào)',`created` datetime NOT NULL COMMENT '創(chuàng)建時(shí)間',`salt` varchar(32) NOT NULL COMMENT '密碼加密的salt值',PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COMMENT='用戶表';數(shù)據(jù)結(jié)構(gòu)比較簡(jiǎn)單,因?yàn)楦鶕?jù)用戶名查詢的頻率較高,所以我們給用戶名創(chuàng)建了索引
?
基本代碼
實(shí)體類
@Table(name = "tb_user") public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String username;// 用戶名@JsonIgnoreprivate String password;// 密碼private String phone;// 電話private Date created;// 創(chuàng)建時(shí)間@JsonIgnoreprivate String salt;// 密碼的鹽值 }注意:為了安全考慮。這里對(duì)password和salt添加了注解@JsonIgnore,這樣在json序列化時(shí),就不會(huì)把password和salt返回。
?
mapper
public interface UserMapper extends Mapper<User> { }Service
@Service public class UserService {@Autowiredprivate UserMapper userMapper; }controller
@Controller public class UserController {@Autowiredprivate UserService userService;}數(shù)據(jù)驗(yàn)證功能
接口說(shuō)明
實(shí)現(xiàn)用戶數(shù)據(jù)的校驗(yàn),主要包括對(duì):手機(jī)號(hào)、用戶名的唯一性校驗(yàn)。
接口路徑:
GET /check/{data}/{type}參數(shù)說(shuō)明:
| data | 要校驗(yàn)的數(shù)據(jù) | 是 | String | 無(wú) |
| type | 要校驗(yàn)的數(shù)據(jù)類型:1,用戶名;2,手機(jī); | 否 | Integer | 1 |
返回結(jié)果:
返回布爾類型結(jié)果:
-
true:可用
-
false:不可用
狀態(tài)碼:
-
200:校驗(yàn)成功
-
400:參數(shù)有誤
-
500:服務(wù)器內(nèi)部異常
controller
因?yàn)橛辛私涌?#xff0c;我們可以不關(guān)心頁(yè)面,所有需要的東西都一清二楚:
-
請(qǐng)求方式:GET
-
請(qǐng)求路徑:/check/{param}/{type}
-
請(qǐng)求參數(shù):param,type
-
返回結(jié)果:true或false
Service
public Boolean checkData(String data, Integer type) {User record = new User();switch (type) {case 1:record.setUsername(data);break;case 2:record.setPhone(data);break;default:return null;}return this.userMapper.selectCount(record) == 0; }?
總結(jié)
- 上一篇: 使用rabbitMQ实现数据同步
- 下一篇: 阿里大于发送短信