嘉宝宝登录奥
parent
17f2146e6e
commit
11f944e204
|
@ -8,6 +8,8 @@
|
|||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/bwie-modules/bwie-system/pom.xml" />
|
||||
<option value="$PROJECT_DIR$/bwie-auth/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -16,6 +16,7 @@
|
|||
<maven.compiler.target>8</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- 项目公共 依赖 -->
|
||||
<dependency>
|
||||
|
@ -27,5 +28,11 @@
|
|||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<!-- SpringCloud Openfeign -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
@ -3,7 +3,9 @@ package com.bwie;
|
|||
import com.bwie.common.handler.GlobalExceptionHandle;
|
||||
import com.bwie.common.redis.RedisCache;
|
||||
|
||||
import com.bwie.common.remote.RemoteLoginService;
|
||||
import com.bwie.common.remote.factory.RemoteHouseFactory;
|
||||
import com.bwie.common.remote.factory.RemoteLoginFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
|
@ -14,7 +16,8 @@ import org.springframework.context.annotation.Import;
|
|||
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients("com.bwie.**")
|
||||
@Import({GlobalExceptionHandle.class, RedisCache.class, RemoteHouseFactory.class})
|
||||
@Import({GlobalExceptionHandle.class, RedisCache.class,
|
||||
RemoteLoginFactory.class})
|
||||
public class AuthApp {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
|
|
@ -3,21 +3,23 @@ package com.bwie.auth.controller;
|
|||
import com.bwie.auth.service.AuthService;
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.PhoneLoginRequest;
|
||||
import com.bwie.common.domain.request.UserReq;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.domain.response.system.UserResponse;
|
||||
import com.bwie.common.result.Result;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
@RestController
|
||||
public class AuthController {
|
||||
|
||||
@Autowired
|
||||
private AuthService authService;
|
||||
|
||||
private final AuthService authService;
|
||||
|
||||
public AuthController(AuthService authService) {
|
||||
this.authService = authService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录
|
||||
|
@ -25,11 +27,12 @@ public class AuthController {
|
|||
* @return
|
||||
*/
|
||||
@PostMapping("/login")
|
||||
public Result login(@RequestBody LoginRequest loginRequest){
|
||||
return authService.login(loginRequest);
|
||||
public Result<UserResponse> login(@RequestBody LoginRequest loginRequest){
|
||||
return Result.success(
|
||||
authService.login(loginRequest)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 注册
|
||||
* @param userReq
|
||||
|
@ -45,29 +48,46 @@ public class AuthController {
|
|||
* @param userTel
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/sendCode/{userTel}")
|
||||
public Result sendCode(@PathVariable("userTel") String userTel){
|
||||
@GetMapping("/sendCode/{userTel}")
|
||||
public Result sencCode(@PathVariable("userTel") String userTel){
|
||||
return authService.sendCode(userTel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 手机号登录
|
||||
* @param userRequest
|
||||
* 手机号登录
|
||||
* @param userTel
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/sendCode/{userTel}")
|
||||
public Result sendCode(@PathVariable String userTel){
|
||||
|
||||
Result result = authService.sencCode(userTel);
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证码
|
||||
* @param phoneLoginRequest
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/phoneLogin")
|
||||
public Result phoneLogin(@RequestBody UserRequest userRequest){
|
||||
return authService.phoneLogin(userRequest);
|
||||
public Result phoneLogin1(@RequestBody PhoneLoginRequest phoneLoginRequest){
|
||||
Result result = authService.phoneLogin(phoneLoginRequest);
|
||||
|
||||
return Result.success(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/info")
|
||||
public Result info(){
|
||||
User user = authService.info();
|
||||
return Result.success(user);
|
||||
@GetMapping("/info")
|
||||
public Result<User> getInfo(){
|
||||
return Result.success(
|
||||
authService.getInfo()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,20 +2,25 @@ package com.bwie.auth.service;
|
|||
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.PhoneLoginRequest;
|
||||
import com.bwie.common.domain.request.UserReq;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.domain.response.system.UserResponse;
|
||||
import com.bwie.common.result.Result;
|
||||
|
||||
public interface AuthService {
|
||||
|
||||
|
||||
Result login(LoginRequest loginRequest);
|
||||
|
||||
Result reg(UserReq userReq);
|
||||
|
||||
Result sendCode(String userTel);
|
||||
|
||||
Result phoneLogin(UserRequest userRequest);
|
||||
UserResponse login(LoginRequest loginRequest);
|
||||
|
||||
User info();
|
||||
User getInfo();
|
||||
|
||||
Result sencCode(String userTel);
|
||||
|
||||
Result phoneLogin(PhoneLoginRequest phoneLoginRequest);
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.bwie.auth.service.impl;
|
|||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.crypto.SecureUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bwie.auth.service.AuthService;
|
||||
import com.bwie.common.constant.JwtConstants;
|
||||
|
@ -10,11 +11,13 @@ import com.bwie.common.constant.TokenConstants;
|
|||
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.PhoneLoginRequest;
|
||||
import com.bwie.common.domain.request.UserReq;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.domain.response.system.UserResponse;
|
||||
import com.bwie.common.redis.RedisCache;
|
||||
import com.bwie.common.remote.RemoteHouseService;
|
||||
import com.bwie.common.remote.RemoteLoginService;
|
||||
import com.bwie.common.result.BizException;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.common.utils.IdUtils;
|
||||
|
@ -22,17 +25,22 @@ import com.bwie.common.utils.JwtUtils;
|
|||
import com.bwie.common.utils.StringUtils;
|
||||
import io.jsonwebtoken.Claims;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Service
|
||||
public class AuthServiceImpl implements AuthService {
|
||||
|
||||
@Autowired
|
||||
private RemoteHouseService remoteLoginService;
|
||||
private RemoteLoginService remoteLoginService;
|
||||
|
||||
@Autowired
|
||||
private StringRedisTemplate redisTemplate;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
@ -42,31 +50,41 @@ public class AuthServiceImpl implements AuthService {
|
|||
|
||||
|
||||
@Override
|
||||
public Result login(LoginRequest loginRequest) {
|
||||
public UserResponse login(LoginRequest loginRequest) {
|
||||
|
||||
User builder = User.builder()
|
||||
.userName(loginRequest.getUserName())
|
||||
.userPassword(loginRequest.getUserPwd()).build();
|
||||
Result<User> result = remoteLoginService.login(builder);
|
||||
Assert.isTrue(
|
||||
!StringUtils.isAnyBlank(loginRequest.getUserPwd(),
|
||||
loginRequest.getUserName()),"账号或密码不能为空"
|
||||
);
|
||||
Result<User> result = remoteLoginService.login(loginRequest);
|
||||
User user = result.getData();
|
||||
Assert.notNull(
|
||||
user, "账号为空"
|
||||
Assert.notNull(user,"该账号不是系统用户");
|
||||
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
String userKey = UUID.randomUUID().toString().replaceAll("-", "");
|
||||
map.put(JwtConstants.USER_KEY,userKey);
|
||||
map.put(JwtConstants.DETAILS_USERNAME,user.getUserName());
|
||||
map.put(JwtConstants.DETAILS_USER_ID,user.getUserId());
|
||||
String token = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(
|
||||
TokenConstants.LOGIN_TOKEN_KEY+userKey,
|
||||
JSON.toJSONString(user),
|
||||
TokenConstants.EXPIRATION,
|
||||
TimeUnit.SECONDS
|
||||
);
|
||||
SecureUtil.md5(
|
||||
user.getUserSalt() + loginRequest.getUserPwd()
|
||||
);
|
||||
return Result.success("登陆成功");
|
||||
return UserResponse.builder()
|
||||
.token(token)
|
||||
.expired(TokenConstants.EXPIRATION)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result reg(UserReq userReq) {
|
||||
String salt = RandomUtil.randomString(6);
|
||||
String password = SecureUtil.md5(userReq.getUserPassword() + "|" + salt);
|
||||
String password = SecureUtil.md5(userReq.getUserPassword() + "|" +"");
|
||||
Result result = remoteLoginService.register(
|
||||
User.builder()
|
||||
.userName(userReq.getUserName())
|
||||
.userPassword(password)
|
||||
.userSalt(salt)
|
||||
.userTel(userReq.getUserTel())
|
||||
.userStatus(userReq.getUserStatus())
|
||||
.userRole(userReq.getUserRole())
|
||||
|
@ -84,48 +102,59 @@ public class AuthServiceImpl implements AuthService {
|
|||
if(null == user){
|
||||
throw new BizException(408,"请先注册手机号");
|
||||
}
|
||||
String code = RandomUtil.randomNumbers(6);
|
||||
String code = RandomUtil.randomNumbers(4);
|
||||
redisCache.setCacheObject("Send_sms_"+userTel,code);
|
||||
|
||||
return Result.success("验证码为:"+code,"发送成功");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Result phoneLogin(UserRequest userRequest) {
|
||||
Result<User> result = remoteLoginService.findByPhone(userRequest.getUserTel());
|
||||
public Result sencCode(String userTel) {
|
||||
Result<User> result = remoteLoginService.phoneLogin(userTel);
|
||||
if(StringUtils.isNull(result.getData())){
|
||||
return Result.error("手机号不存在");
|
||||
}
|
||||
String code = RandomUtil.randomNumbers(4);
|
||||
System.out.println("验证码为:"+code);
|
||||
redisTemplate.opsForValue().set(userTel,code,5,TimeUnit.MINUTES);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result phoneLogin(PhoneLoginRequest phoneLoginRequest) {
|
||||
Result<User> result = remoteLoginService.phoneLogin(phoneLoginRequest.getUserTel());
|
||||
User user = result.getData();
|
||||
if(null != user){
|
||||
throw new BizException(408,"请先注册");
|
||||
if(null==user){
|
||||
return Result.error("手机号不存在");
|
||||
}
|
||||
if(StringUtils.isAnyBlank(userRequest.getUserTel(),userRequest.getUserCode())){
|
||||
throw new BizException(408,"手机号验证码错误");
|
||||
if(!redisTemplate.hasKey(phoneLoginRequest.getUserTel())){
|
||||
return Result.error("验证码过期");
|
||||
}
|
||||
String code = redisCache.getCacheObject("send_sms_" + userRequest.getUserTel());
|
||||
if(StringUtils.isAnyBlank(code)){
|
||||
throw new BizException(408,"验证码已过期");
|
||||
}
|
||||
if(!code.equals(userRequest.getUserCode())){
|
||||
throw new BizException(408,"验证码错误");
|
||||
String code = redisTemplate.opsForValue().get(phoneLoginRequest.getUserTel());
|
||||
if(!phoneLoginRequest.getUserCode().equals(code)){
|
||||
return Result.error("验证码错误");
|
||||
}
|
||||
HashMap<String, Object> map = new HashMap<>();
|
||||
String userKey = IdUtils.genId();
|
||||
String userKey = UUID.randomUUID().toString().replaceAll("-","");
|
||||
map.put(JwtConstants.USER_KEY,userKey);
|
||||
String token = JwtUtils.createToken(map);
|
||||
redisCache.setCacheObject(TokenConstants.TOKEN+userKey, JSONObject.toJSONString(user),TokenConstants.EXPIRATION, TimeUnit.HOURS);
|
||||
redisCache.setCacheObject(TokenConstants.TOKEN+token, user, TokenConstants.EXPIRATION, TimeUnit.HOURS);
|
||||
|
||||
UserResponse userResponse = new UserResponse();
|
||||
userResponse.setToken(token);
|
||||
userResponse.setExpired("15MIN");
|
||||
|
||||
return Result.success(userResponse);
|
||||
userResponse.setExpired(TokenConstants.EXPIRATION);
|
||||
return Result.success(userResponse,"登陆成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public User info() {
|
||||
public User getInfo() {
|
||||
String token = request.getHeader(TokenConstants.TOKEN);
|
||||
Claims claims = JwtUtils.parseToken(token);
|
||||
String userKey = JwtUtils.getUserKey(claims);
|
||||
String user = redisCache.getCacheObject(TokenConstants.TOKEN + userKey);
|
||||
return JSONObject.parseObject(user,User.class);
|
||||
String cacheObject = redisCache.getCacheObject(TokenConstants.LOGIN_TOKEN_KEY + userKey);
|
||||
return JSONObject.parseObject(cacheObject, User.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,10 +34,6 @@ public class User {
|
|||
密码
|
||||
*/
|
||||
private String userPassword;
|
||||
/*
|
||||
盐
|
||||
*/
|
||||
private String userSalt;
|
||||
/*
|
||||
手机号
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package com.bwie.common.domain.request;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PhoneLoginRequest {
|
||||
|
||||
private String userTel;
|
||||
|
||||
private String userCode;
|
||||
|
||||
}
|
|
@ -14,10 +14,6 @@ public class UserReq {
|
|||
密码
|
||||
*/
|
||||
private String userPassword;
|
||||
/*
|
||||
盐
|
||||
*/
|
||||
private String userSalt;
|
||||
/*
|
||||
手机号
|
||||
*/
|
||||
|
|
|
@ -13,6 +13,6 @@ public class UserResponse {
|
|||
|
||||
private String token;
|
||||
|
||||
private String expired;
|
||||
private Long expired;
|
||||
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ public interface RemoteHouseService {
|
|||
@GetMapping("/list")
|
||||
public Result<List<HouseEsRequest>> getHouseEsList();
|
||||
|
||||
@PostMapping("/shouall")
|
||||
@GetMapping("/shouall")
|
||||
public Result<List<House>> shouall();
|
||||
|
||||
@PostMapping("/login")
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package com.bwie.common.remote;
|
||||
|
||||
|
||||
import com.bwie.common.constant.ServerNameConstants;
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.remote.factory.RemoteLoginFactory;
|
||||
import com.bwie.common.result.Result;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
@FeignClient(
|
||||
name = ServerNameConstants.SYSTEM_NAME,
|
||||
fallbackFactory = RemoteLoginFactory.class
|
||||
)
|
||||
public interface RemoteLoginService {
|
||||
|
||||
@PostMapping("/login")
|
||||
Result<User> login(@RequestBody LoginRequest loginRequest);
|
||||
|
||||
@PostMapping("register")
|
||||
Result register(@RequestBody User user);
|
||||
|
||||
@GetMapping("/findByPhone/{userTel}")
|
||||
Result<User> findByPhone(@PathVariable("userTel") String userTel);
|
||||
|
||||
@PostMapping("/phoneLogin/{userTel}")
|
||||
Result<User> phoneLogin(@PathVariable String userTel);
|
||||
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package com.bwie.common.remote.factory;
|
||||
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.remote.RemoteLoginService;
|
||||
import com.bwie.common.result.Result;
|
||||
import lombok.extern.java.Log;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@Log4j2
|
||||
public class RemoteLoginFactory implements FallbackFactory<RemoteLoginService> {
|
||||
|
||||
|
||||
@Override
|
||||
public RemoteLoginService create(Throwable cause) {
|
||||
return new RemoteLoginService() {
|
||||
@Override
|
||||
public Result<User> login(LoginRequest loginRequest) {
|
||||
log.error("登录失败{}",cause.getMessage(),cause);
|
||||
return Result.error(cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result register(User user) {
|
||||
log.error("注册失败{}",cause.getMessage(),cause);
|
||||
return Result.error(cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<User> findByPhone(String userTel) {
|
||||
log.error("查询失败{}",cause.getMessage(),cause);
|
||||
return Result.error(cause.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<User> phoneLogin(String userTel) {
|
||||
log.error("登录失败{}",cause.getMessage(),cause);
|
||||
return Result.error(cause.getMessage());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
|
@ -7,10 +7,12 @@ 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.Import;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
|
||||
@EnableFeignClients("com.bwie.**")
|
||||
@EnableDiscoveryClient
|
||||
@EnableScheduling
|
||||
public class EsApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(EsApplication.class);
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.bwie.es.controller;
|
|||
import com.bwie.common.domain.House;
|
||||
import com.bwie.common.domain.request.HouseEsRequest;
|
||||
import com.bwie.common.domain.request.HouseFindRequest;
|
||||
import com.bwie.common.domain.request.ManagementRequest;
|
||||
import com.bwie.common.result.PageResult;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.es.service.EsListService;
|
||||
|
@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
|
@ -38,6 +40,15 @@ public class EsController {
|
|||
esListService.managementSync(list);
|
||||
}
|
||||
|
||||
@PostMapping("/managementList")
|
||||
public Result managementList(@RequestBody ManagementRequest managementRequest){
|
||||
return esListService.managementList(managementRequest);
|
||||
}
|
||||
|
||||
@PostMapping("/printDocument")
|
||||
public House printDocument(String id) throws IOException {
|
||||
return esListService.printDocument(id);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,20 @@
|
|||
package com.bwie.es.service;
|
||||
|
||||
import com.bwie.common.domain.House;
|
||||
import com.bwie.common.domain.request.ManagementRequest;
|
||||
import com.bwie.common.result.Result;
|
||||
import org.elasticsearch.action.get.GetResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public interface EsListService {
|
||||
|
||||
public void managementSync(List<House> list);
|
||||
|
||||
public Result managementList(ManagementRequest managementRequest);
|
||||
|
||||
public House printDocument(String id) throws IOException;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -1,19 +1,34 @@
|
|||
package com.bwie.es.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.bwie.common.domain.House;
|
||||
import com.bwie.common.domain.request.ManagementRequest;
|
||||
import com.bwie.common.remote.RemoteHouseService;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.es.service.EsListService;
|
||||
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
|
||||
import org.elasticsearch.action.bulk.BulkRequest;
|
||||
import org.elasticsearch.action.bulk.BulkResponse;
|
||||
import org.elasticsearch.action.get.GetRequest;
|
||||
import org.elasticsearch.action.get.GetResponse;
|
||||
import org.elasticsearch.action.index.IndexRequest;
|
||||
import org.elasticsearch.action.search.SearchRequest;
|
||||
import org.elasticsearch.action.search.SearchResponse;
|
||||
import org.elasticsearch.action.support.master.AcknowledgedResponse;
|
||||
import org.elasticsearch.client.RequestOptions;
|
||||
import org.elasticsearch.client.RestHighLevelClient;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.search.SearchHit;
|
||||
import org.elasticsearch.search.SearchHits;
|
||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||
import org.elasticsearch.xcontent.XContentType;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
|
@ -31,23 +46,91 @@ public class EsListServiceImpl implements EsListService {
|
|||
public void managementSync(List<House> list){
|
||||
try {
|
||||
BulkRequest bulkRequest = new BulkRequest();
|
||||
list.forEach(house -> {
|
||||
list.forEach(houseEsRequest -> {
|
||||
bulkRequest.add(
|
||||
new IndexRequest("")
|
||||
.id(JSON.toJSONString(house.getHouseTypeId()))
|
||||
.source(JSON.toJSONString(house), XContentType.JSON)
|
||||
|
||||
new IndexRequest("houes")
|
||||
.id(houseEsRequest.getId().toString())
|
||||
.source(JSONObject.toJSONString(houseEsRequest), XContentType.JSON)
|
||||
);
|
||||
});
|
||||
client.bulk(bulkRequest, RequestOptions.DEFAULT);
|
||||
} catch (IOException e) {
|
||||
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
|
||||
Assert.isTrue(!bulk.hasFailures(),"添加失败");
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public Result managementList(ManagementRequest managementRequest){
|
||||
|
||||
// @Override
|
||||
// public Result managementList(ManagementRequest managementRequest){
|
||||
|
||||
ArrayList<House> houses = new ArrayList<>();
|
||||
SearchRequest searchRequest = new SearchRequest("houes");
|
||||
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
sourceBuilder.from((managementRequest.getPageNum()-1)*managementRequest.getPageSize());
|
||||
sourceBuilder.size(managementRequest.getPageSize());
|
||||
// if(managementRequest.){
|
||||
//
|
||||
// }
|
||||
// }
|
||||
sourceBuilder.query(boolQueryBuilder);
|
||||
searchRequest.source(sourceBuilder);
|
||||
try {
|
||||
SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
|
||||
SearchHits hits = search.getHits();
|
||||
for (SearchHit hit : hits.getHits()) {
|
||||
String sourceAsString = hit.getSourceAsString();
|
||||
House house = JSON.parseObject(sourceAsString, House.class);
|
||||
houses.add(house);
|
||||
}
|
||||
}catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return Result.success(houses);
|
||||
}
|
||||
|
||||
|
||||
public GetResponse getDocumentById(String documentId) throws IOException {
|
||||
GetRequest getRequest = new GetRequest("houes", documentId);
|
||||
return client.get(getRequest, RequestOptions.DEFAULT);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 逻辑删除内容
|
||||
*/
|
||||
@Override
|
||||
public House printDocument(String id) throws IOException {
|
||||
House house = new House();
|
||||
GetResponse response = getDocumentById(id);
|
||||
if (response.isExists()) {
|
||||
String sourceAsString = response.getSourceAsString();
|
||||
house = JSON.parseObject(sourceAsString, House.class);
|
||||
System.out.println("这是个啥内容:::::"+response.getSourceAsString()); // 输出JSON格式的完整文档内容
|
||||
DeleteIndexRequest request = new DeleteIndexRequest(id);
|
||||
AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
|
||||
} else {
|
||||
System.out.println("Document not found with ID: " + id);
|
||||
}
|
||||
return house;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ public class EsServiceImpl implements EsService {
|
|||
@Override
|
||||
public void syncHouse(List<HouseEsRequest> list) {
|
||||
try {
|
||||
BulkRequest bulkRequest = new BulkRequest("house");
|
||||
BulkRequest bulkRequest = new BulkRequest();
|
||||
list.forEach(houseEsRequest -> {
|
||||
bulkRequest.add(
|
||||
new IndexRequest("house")
|
||||
|
|
|
@ -5,11 +5,13 @@ import com.bwie.common.domain.request.HouseEsRequest;
|
|||
|
||||
import com.bwie.common.remote.RemoteHouseService;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.es.service.EsListService;
|
||||
import com.bwie.es.service.EsService;
|
||||
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -22,17 +24,21 @@ public class SyncHouseData {
|
|||
private final RemoteHouseService remoteHouseService;
|
||||
private final EsService esService;
|
||||
|
||||
public SyncHouseData(RemoteHouseService remoteHouseService,
|
||||
EsService esService) {
|
||||
private final EsListService esListService;
|
||||
|
||||
public SyncHouseData(RemoteHouseService remoteHouseService,EsService esService, EsListService esListService) {
|
||||
this.remoteHouseService = remoteHouseService;
|
||||
this.esService = esService;
|
||||
this.esListService = esListService;
|
||||
}
|
||||
|
||||
@XxlJob("managementList")
|
||||
@Scheduled(cron = "0/30 * * * * *")
|
||||
public void managementList(){
|
||||
Result<List<House>> shouall = remoteHouseService.shouall();
|
||||
List<House> data = shouall.getData();
|
||||
|
||||
if(data!=null){
|
||||
esListService.managementSync(data);
|
||||
}
|
||||
log.info("房源管理未卖出同步定时器启动>>>>>>>>>>");
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,3 @@ spring:
|
|||
shared-configs:
|
||||
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
||||
|
||||
# 将mapper接口所在包的日志级别改成debug,可以在控制台打印es
|
||||
logging:
|
||||
level:
|
||||
org.apache.http: trace
|
||||
|
|
|
@ -32,7 +32,7 @@ public class HouseController {
|
|||
}
|
||||
|
||||
|
||||
@PostMapping("/shouall")
|
||||
@GetMapping("/shouall")
|
||||
public Result<List<House>> shouall(){
|
||||
return homeListService.shouall();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.home.mapper.HomeListMapper">
|
||||
<select id="shouall" resultType="com.bwie.common.domain.House">
|
||||
select * from house where is_success = 1
|
||||
select * from house where is_delete = 0 and is_success = 0
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -1,17 +1,23 @@
|
|||
package com.bwie.user.controller;
|
||||
|
||||
|
||||
import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.user.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.Past;
|
||||
|
||||
@RestController
|
||||
public class UserController {
|
||||
|
||||
|
||||
private final UserService userService;
|
||||
@Autowired
|
||||
private UserService userService;
|
||||
|
||||
public UserController(UserService userService) {
|
||||
this.userService = userService;
|
||||
|
@ -19,10 +25,10 @@ public class UserController {
|
|||
|
||||
|
||||
@PostMapping("/login")
|
||||
public Result<User> login(@RequestBody UserRequest userRequest){
|
||||
public Result<User> login(@RequestBody LoginRequest loginRequest){
|
||||
|
||||
return Result.success(
|
||||
userService.login(userRequest)
|
||||
userService.login(loginRequest)
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -37,6 +43,13 @@ public class UserController {
|
|||
return userService.findByPhone(userTel);
|
||||
}
|
||||
|
||||
@PostMapping("/phoneLogin/{userTel}")
|
||||
public Result<User> phoneLogin(@PathVariable String userTel){
|
||||
User user = userService.phoneLogin(userTel);
|
||||
|
||||
return Result.success(user);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -3,10 +3,11 @@ package com.bwie.user.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.bwie.common.domain.User;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@Mapper
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
|
||||
|
||||
|
||||
User phoneLogin(@Param("userTel") String userTel);
|
||||
}
|
||||
|
|
|
@ -3,15 +3,18 @@ package com.bwie.user.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.result.Result;
|
||||
|
||||
public interface UserService extends IService<User> {
|
||||
|
||||
|
||||
User login(UserRequest userRequest);
|
||||
User login(LoginRequest loginRequest);
|
||||
|
||||
void register(User user);
|
||||
|
||||
Result<User> findByPhone(String userTel);
|
||||
|
||||
User phoneLogin(String userTel);
|
||||
}
|
||||
|
|
|
@ -3,21 +3,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import com.bwie.common.domain.User;
|
||||
import com.bwie.common.domain.request.LoginRequest;
|
||||
import com.bwie.common.domain.request.UserRequest;
|
||||
import com.bwie.common.result.Result;
|
||||
import com.bwie.user.mapper.UserMapper;
|
||||
import com.bwie.user.service.UserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
|
||||
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
@Override
|
||||
public User login(UserRequest userRequest) {
|
||||
public User login(LoginRequest loginRequest) {
|
||||
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(User::getUserName,userRequest.getUserName())
|
||||
.eq(User::getUserPassword,userRequest.getUserPassword());
|
||||
queryWrapper.eq(User::getUserName,loginRequest.getUserName())
|
||||
.eq(User::getUserPassword,loginRequest.getUserPwd());
|
||||
return this.getOne(queryWrapper);
|
||||
}
|
||||
|
||||
|
@ -32,4 +36,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements Use
|
|||
.eq(User::getUserTel, userTel));
|
||||
return Result.success(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public User phoneLogin(String userTel) {
|
||||
|
||||
return userMapper.phoneLogin(userTel);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bwie.user.mapper.UserMapper">
|
||||
|
||||
|
||||
<select id="phoneLogin" resultType="com.bwie.common.domain.User">
|
||||
select * from user where user_tel = #{userTel}
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue