feat:用户接口开发v1
This commit is contained in:
6
pom.xml
6
pom.xml
@@ -70,6 +70,12 @@
|
|||||||
<artifactId>xservice-cache-starter</artifactId>
|
<artifactId>xservice-cache-starter</artifactId>
|
||||||
<version>2.0</version>
|
<version>2.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mapstruct</groupId>
|
||||||
|
<artifactId>mapstruct</artifactId>
|
||||||
|
<version>1.5.5.Final</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -1,4 +1,49 @@
|
|||||||
package com.xiang.xservice.auth.api.dto.req.user;
|
package com.xiang.xservice.auth.api.dto.req.user;
|
||||||
|
|
||||||
public class UserAddRequest {
|
import com.xiang.xservice.basic.common.req.BaseRequest;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class UserAddRequest extends BaseRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户名(昵称)
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账号
|
||||||
|
*/
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 密码
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 头像
|
||||||
|
*/
|
||||||
|
private String avatar;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0:禁用, 1:启用)
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,36 @@
|
|||||||
package com.xiang.xservice.auth.api.dto.req.user;
|
package com.xiang.xservice.auth.api.dto.req.user;
|
||||||
|
|
||||||
public class UserQueryRequest {
|
import com.xiang.xservice.basic.common.req.BaseRequest;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class UserQueryRequest extends BaseRequest {
|
||||||
|
/**
|
||||||
|
* 用户名(昵称)
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账号
|
||||||
|
*/
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 邮箱
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态(0:禁用, 1:启用)
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,12 @@
|
|||||||
package com.xiang.xservice.auth.api.dto.req.user;
|
package com.xiang.xservice.auth.api.dto.req.user;
|
||||||
|
|
||||||
public class UserUpdateRequest {
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class UserUpdateRequest extends UserAddRequest {
|
||||||
|
private Long id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,17 @@
|
|||||||
package com.xiang.xservice.auth.server.controller;
|
package com.xiang.xservice.auth.server.controller;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserDeptUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserDeptUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
import com.xiang.xservice.auth.service.entity.XUser;
|
import com.xiang.xservice.auth.service.service.XUserService;
|
||||||
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
|
|
||||||
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
|
|
||||||
import com.xiang.xservice.basic.common.resp.Result;
|
import com.xiang.xservice.basic.common.resp.Result;
|
||||||
|
import com.xiang.xservice.basic.exception.BusinessException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
@@ -25,80 +23,118 @@ import javax.validation.Valid;
|
|||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class UserController {
|
public class UserController {
|
||||||
|
|
||||||
private final XUserMapper userMapper;
|
private final XUserService userService;
|
||||||
private final PasswordEncoder passwordEncoder;
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/private/user/list")
|
@PostMapping("/private/user/list")
|
||||||
public Result<UserResp> getUserList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserQueryRequest request) {
|
public Result<UserResp> getUserList(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserQueryRequest request) {
|
||||||
return Result.success(new UserResp());
|
return Result.success(userService.getUserList(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/private/user/info/{id}")
|
@GetMapping("/private/user/info/{id}")
|
||||||
public Result<UserResp> getUserById(@PathVariable("id") Long id) {
|
public Result<UserResp> getUserById(@PathVariable("id") Long id) {
|
||||||
return Result.success(new UserResp());
|
return Result.success(userService.getUserInfo(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/user/add")
|
@PostMapping("/private/user/add")
|
||||||
public Result<Boolean> addUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserAddRequest request) {
|
public Result<Boolean> addUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserAddRequest request) {
|
||||||
return Result.success(true);
|
try {
|
||||||
|
return Result.success(userService.addUser(request));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
log.error("用户新增异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("用户新增异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
}
|
||||||
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/user/update")
|
@PostMapping("/private/user/update")
|
||||||
public Result<Boolean> updateUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserUpdateRequest request) {
|
public Result<Boolean> updateUser(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserUpdateRequest request) {
|
||||||
return Result.success(true);
|
try {
|
||||||
|
return Result.success(userService.updateUser(request));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
log.error("用户编辑异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("用户编辑异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
}
|
||||||
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/user/del")
|
@PostMapping("/private/user/del")
|
||||||
public Result<Boolean> delUser(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List<Long> ids) {
|
public Result<Boolean> delUser(@RequestParam @Valid @NotEmpty(message = "请求参数不能为空") List<Long> ids) {
|
||||||
return Result.success(true);
|
try {
|
||||||
|
return Result.success(userService.delUser(ids));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
log.error("用户删除异常,请求:{}", JSON.toJSONString(ids), e);
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("用户删除异常,请求:{}", JSON.toJSONString(ids), e);
|
||||||
|
}
|
||||||
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/user/setDept")
|
@PostMapping("/private/user/setDept")
|
||||||
public Result<Boolean> setUserDept(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserDeptUpdateRequest request) {
|
public Result<Boolean> setUserDept(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserDeptUpdateRequest request) {
|
||||||
return Result.success(true);
|
try {
|
||||||
|
return Result.success(userService.setUserDept(request));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
log.error("用户设置部门异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("用户设置部门异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
}
|
||||||
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/private/user/setRole")
|
@PostMapping("/private/user/setRole")
|
||||||
public Result<Boolean> setUserRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserRoleUpdateRequest request) {
|
public Result<Boolean> setUserRole(@RequestBody @Valid @NotNull(message = "请求参数不能为空") UserRoleUpdateRequest request) {
|
||||||
return Result.success(true);
|
try {
|
||||||
|
return Result.success(userService.setUserRole(request));
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
log.error("用户设置角色异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
return Result.error(e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("用户设置角色异常,请求:{}", JSON.toJSONString(request), e);
|
||||||
|
}
|
||||||
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@PostMapping("/public/user/useraddBatch")
|
// @PostMapping("/public/user/useraddBatch")
|
||||||
public Result<Void> add() {
|
// public Result<Void> add() {
|
||||||
List<CompletableFuture> futures = Lists.newArrayList();
|
// List<CompletableFuture> futures = Lists.newArrayList();
|
||||||
List<XUser> list = Lists.newCopyOnWriteArrayList();
|
// List<XUser> list = Lists.newCopyOnWriteArrayList();
|
||||||
for (int i = 0; i < 100; i++) {
|
// for (int i = 0; i < 100; i++) {
|
||||||
int finalI = i;
|
// int finalI = i;
|
||||||
log.info("第{}批数据生成!", finalI);
|
// log.info("第{}批数据生成!", finalI);
|
||||||
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
|
// CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
|
||||||
for (int j = 0; j < 1000; j++) {
|
// for (int j = 0; j < 1000; j++) {
|
||||||
log.info("第{}批的第{}条数据生成!", finalI, j);
|
// log.info("第{}批的第{}条数据生成!", finalI, j);
|
||||||
XUser user = new XUser();
|
// XUser user = new XUser();
|
||||||
user.setName("nameTest2" + finalI + j);
|
// user.setName("nameTest2" + finalI + j);
|
||||||
user.setUsername("usernameTest2" + finalI + j);
|
// user.setUsername("usernameTest2" + finalI + j);
|
||||||
user.setPassword(passwordEncoder.encode("123456"));
|
// user.setPassword(passwordEncoder.encode("123456"));
|
||||||
user.setEmail("emailTest2" + finalI + j + "@test.com");
|
// user.setEmail("emailTest2" + finalI + j + "@test.com");
|
||||||
user.setPhone("13800000000");
|
// user.setPhone("13800000000");
|
||||||
user.setStatus(UserStatusEnum.USING.getCode());
|
// user.setStatus(UserStatusEnum.USING.getCode());
|
||||||
list.add(user);
|
// list.add(user);
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
futures.add(future);
|
// futures.add(future);
|
||||||
}
|
// }
|
||||||
CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
|
// CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
|
||||||
List<List<XUser>> partition = Lists.partition(list, 3000);
|
// List<List<XUser>> partition = Lists.partition(list, 3000);
|
||||||
CompletableFuture.runAsync(() -> {
|
// CompletableFuture.runAsync(() -> {
|
||||||
partition.stream().parallel().forEach(userMapper::insertBatch);
|
// partition.stream().parallel().forEach(userMapper::insertBatch);
|
||||||
});
|
// });
|
||||||
return Result.success();
|
// return Result.success();
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public class AuthorizationServerConfig {
|
|||||||
.authorizeRequests(authorizeRequests -> authorizeRequests
|
.authorizeRequests(authorizeRequests -> authorizeRequests
|
||||||
.antMatchers("/public/**").permitAll()
|
.antMatchers("/public/**").permitAll()
|
||||||
.antMatchers("/open/**").permitAll()
|
.antMatchers("/open/**").permitAll()
|
||||||
|
.antMatchers("/private/**").permitAll()
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
)
|
)
|
||||||
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
|
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS));
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.xiang.xservice.auth.service.convert;
|
||||||
|
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
|
import com.xiang.xservice.auth.service.entity.XUser;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper(componentModel = "spring")
|
||||||
|
public interface XUserConvert {
|
||||||
|
XUserConvert INSTANCE = Mappers.getMapper(XUserConvert.class);
|
||||||
|
|
||||||
|
XUser toDO (UserQueryRequest request);
|
||||||
|
XUser toDO (UserAddRequest request);
|
||||||
|
XUser toDO (UserUpdateRequest request);
|
||||||
|
|
||||||
|
List<UserResp> toRespList(List<XUser> list);
|
||||||
|
|
||||||
|
UserResp toResp(XUser user);
|
||||||
|
}
|
||||||
@@ -2,14 +2,21 @@ package com.xiang.xservice.auth.service.repository.mapper;
|
|||||||
|
|
||||||
import com.xiang.xservice.auth.service.entity.XUser;
|
import com.xiang.xservice.auth.service.entity.XUser;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface XUserMapper {
|
public interface XUserMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户名查询用户
|
||||||
|
* @param username
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
XUser selectByUsername(String username);
|
XUser selectByUsername(String username);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,5 +26,40 @@ public interface XUserMapper {
|
|||||||
*/
|
*/
|
||||||
int insert(XUser user);
|
int insert(XUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量插入
|
||||||
|
* @param list
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
int insertBatch(List<XUser> list);
|
int insertBatch(List<XUser> list);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户列表
|
||||||
|
* @param user
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<XUser> getUserList(XUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询用户详情
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
XUser getUserById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑用户
|
||||||
|
* @param user
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int update(XUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除
|
||||||
|
* @param ids
|
||||||
|
* @param time
|
||||||
|
* @param operator
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int deleteBatch(@Param("ids") List<Long> ids, @Param("time") LocalDateTime time, @Param("operator") String operator);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,17 @@ package com.xiang.xservice.auth.service.service;
|
|||||||
|
|
||||||
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserDeptUpdateRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface XUserService {
|
public interface XUserService {
|
||||||
|
|
||||||
LoginResp login(LoginRequest request);
|
LoginResp login(LoginRequest request);
|
||||||
@@ -13,4 +20,18 @@ public interface XUserService {
|
|||||||
UserResp getUserByUsername(String username);
|
UserResp getUserByUsername(String username);
|
||||||
|
|
||||||
RegisterResp userRegister(RegisterRequest request);
|
RegisterResp userRegister(RegisterRequest request);
|
||||||
|
|
||||||
|
List<UserResp> getUserList(UserQueryRequest request);
|
||||||
|
|
||||||
|
UserResp getUserInfo(Long id);
|
||||||
|
|
||||||
|
Boolean addUser(UserAddRequest request);
|
||||||
|
|
||||||
|
Boolean updateUser(UserUpdateRequest request);
|
||||||
|
|
||||||
|
Boolean delUser(List<Long> ids);
|
||||||
|
|
||||||
|
Boolean setUserDept(UserDeptUpdateRequest request);
|
||||||
|
|
||||||
|
Boolean setUserRole(UserRoleUpdateRequest request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,18 @@
|
|||||||
package com.xiang.xservice.auth.service.service.impl;
|
package com.xiang.xservice.auth.service.service.impl;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.xiang.xservice.auth.api.code.UserErrorCode;
|
import com.xiang.xservice.auth.api.code.UserErrorCode;
|
||||||
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
import com.xiang.xservice.auth.api.dto.req.LoginRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
import com.xiang.xservice.auth.api.dto.req.RegisterRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserAddRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserDeptUpdateRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserQueryRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserRoleUpdateRequest;
|
||||||
|
import com.xiang.xservice.auth.api.dto.req.user.UserUpdateRequest;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
import com.xiang.xservice.auth.api.dto.resp.LoginResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
import com.xiang.xservice.auth.api.dto.resp.RegisterResp;
|
||||||
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
import com.xiang.xservice.auth.api.dto.resp.UserResp;
|
||||||
|
import com.xiang.xservice.auth.service.convert.XUserConvert;
|
||||||
import com.xiang.xservice.auth.service.entity.XUser;
|
import com.xiang.xservice.auth.service.entity.XUser;
|
||||||
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
|
import com.xiang.xservice.auth.service.enums.UserStatusEnum;
|
||||||
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
|
import com.xiang.xservice.auth.service.repository.mapper.XUserMapper;
|
||||||
@@ -14,6 +21,7 @@ import com.xiang.xservice.basic.enums.DelStatusEnum;
|
|||||||
import com.xiang.xservice.basic.exception.BusinessException;
|
import com.xiang.xservice.basic.exception.BusinessException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@@ -23,10 +31,12 @@ import org.springframework.security.oauth2.jwt.JwtClaimsSet;
|
|||||||
import org.springframework.security.oauth2.jwt.JwtEncoder;
|
import org.springframework.security.oauth2.jwt.JwtEncoder;
|
||||||
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
|
import org.springframework.security.oauth2.jwt.JwtEncoderParameters;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -38,6 +48,7 @@ public class XUserServiceImpl implements XUserService {
|
|||||||
private final XUserMapper userMapper;
|
private final XUserMapper userMapper;
|
||||||
private final AuthenticationManager authenticationManager;
|
private final AuthenticationManager authenticationManager;
|
||||||
private final PasswordEncoder passwordEncoder;
|
private final PasswordEncoder passwordEncoder;
|
||||||
|
private final XUserConvert userConvert;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoginResp login(LoginRequest request) {
|
public LoginResp login(LoginRequest request) {
|
||||||
@@ -122,4 +133,55 @@ public class XUserServiceImpl implements XUserService {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<UserResp> getUserList(UserQueryRequest request) {
|
||||||
|
List<XUser> userList = userMapper.getUserList(userConvert.toDO(request));
|
||||||
|
if (CollectionUtils.isEmpty(userList)) {
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
return userConvert.toRespList(userList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserResp getUserInfo(Long id) {
|
||||||
|
XUser user = userMapper.getUserById(id);
|
||||||
|
return userConvert.toResp(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean addUser(UserAddRequest request) {
|
||||||
|
XUser user = userConvert.toDO(request);
|
||||||
|
user.setCreateBy(request.getOperator());
|
||||||
|
user.setCreateTime(request.getDateTime());
|
||||||
|
user.setUpdateBy(request.getOperator());
|
||||||
|
user.setUpdateTime(request.getDateTime());
|
||||||
|
return userMapper.insert(user) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean updateUser(UserUpdateRequest request) {
|
||||||
|
XUser user = userConvert.toDO(request);
|
||||||
|
user.setCreateBy(request.getOperator());
|
||||||
|
user.setCreateTime(request.getDateTime());
|
||||||
|
user.setUpdateBy(request.getOperator());
|
||||||
|
user.setUpdateTime(request.getDateTime());
|
||||||
|
return userMapper.update(user) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean delUser(List<Long> ids) {
|
||||||
|
return userMapper.deleteBatch(ids, LocalDateTime.now(), "System") > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean setUserDept(UserDeptUpdateRequest request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean setUserRole(UserRoleUpdateRequest request) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,6 +160,12 @@
|
|||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
<update id="deleteBatch">
|
||||||
|
update x_user set del_flag = 0, update_time = #{time}, update_by = #{operator} where id in
|
||||||
|
<foreach collection="ids" item="id" open="(" close=")" separator=",">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</update>
|
||||||
|
|
||||||
<select id="selectByUsername" resultMap="BaseResultMap">
|
<select id="selectByUsername" resultMap="BaseResultMap">
|
||||||
select <include refid="Base_Column_List"/>
|
select <include refid="Base_Column_List"/>
|
||||||
@@ -167,4 +173,54 @@
|
|||||||
where username = #{username} and del_flag = 0 and status = 1
|
where username = #{username} and del_flag = 0 and status = 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getUserList" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_user
|
||||||
|
<trim prefix="AND">
|
||||||
|
<where>
|
||||||
|
<if test="name != null and name != ''">
|
||||||
|
AND name LIKE CONCAT('%', #{name}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="username != null and username != ''">
|
||||||
|
AND username = #{username}
|
||||||
|
</if>
|
||||||
|
<if test="email != null and email != ''">
|
||||||
|
AND email = #{email}
|
||||||
|
</if>
|
||||||
|
<if test="phone != null and phone != ''">
|
||||||
|
AND phone = #{phone}
|
||||||
|
</if>
|
||||||
|
<if test="status != null">
|
||||||
|
AND status = #{status}
|
||||||
|
</if>
|
||||||
|
<if test="delFlag != null">
|
||||||
|
AND del_flag = #{delFlag}
|
||||||
|
</if>
|
||||||
|
<if test="loginIp != null and loginIp != ''">
|
||||||
|
AND login_ip = #{loginIp}
|
||||||
|
</if>
|
||||||
|
<if test="loginDate != null">
|
||||||
|
AND login_date = #{loginDate}
|
||||||
|
</if>
|
||||||
|
<if test="createBy != null and createBy != ''">
|
||||||
|
AND create_by = #{createBy}
|
||||||
|
</if>
|
||||||
|
<if test="updateBy != null and updateBy != ''">
|
||||||
|
AND update_by = #{updateBy}
|
||||||
|
</if>
|
||||||
|
<if test="createTime != null">
|
||||||
|
AND create_time >= #{createTime}
|
||||||
|
</if>
|
||||||
|
<if test="updateTime != null">
|
||||||
|
AND update_time <= #{updateTime}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</trim>
|
||||||
|
</select>
|
||||||
|
<select id="getUserById" resultMap="BaseResultMap">
|
||||||
|
select <include refid="Base_Column_List"/>
|
||||||
|
from x_user
|
||||||
|
where id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
Reference in New Issue
Block a user