Commit f1b6c8b2 by 陶光胜

Merge branch 'developer' of…

Merge branch 'developer' of http://115.159.76.241/base_platform_enterprise/gic-platform-auth into developer

# Conflicts:
#	gic-platform-auth-service/src/main/resources/mapper/TabSysAuthCodeMapper.xml
parents 679eb1c7 a674be4b
......@@ -93,7 +93,6 @@ public class UserDTO implements UserInfo,Serializable{
/**
* 国际区号,如中国 86
*/
@NotBlank(message = "手机国际区号不能为空", groups = {SaveUserValid.class, EditUserValid.class, UserQoValid.class})
private String phoneAreaCode;
/**
......
package com.gic.auth.dto;
import java.io.Serializable;
/**
* 管理员列表
* @ClassName: UserListDTO

* @Description: 

* @author guojuxing

* @date 2019/9/2 5:12 PM

*/
public class UserListDTO implements Serializable{
private static final long serialVersionUID = -3693735542954676950L;
/**
* 用户id
*/
private Integer userId;
/**
* 用户名
*/
private String userName;
/**
* 手机号码
*/
private String phoneNumber;
/**
* 国际区号,如中国 86
*/
private String phoneAreaCode;
/**
* 用户角色,可以多选,用英文逗号隔开
*/
private String userRoleIds;
/**
* 用户资源组授权,可以多选,用英文逗号隔开
*/
private String userResourceIds;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getPhoneAreaCode() {
return phoneAreaCode;
}
public void setPhoneAreaCode(String phoneAreaCode) {
this.phoneAreaCode = phoneAreaCode;
}
public String getUserRoleIds() {
return userRoleIds;
}
public void setUserRoleIds(String userRoleIds) {
this.userRoleIds = userRoleIds;
}
public String getUserResourceIds() {
return userResourceIds;
}
public void setUserResourceIds(String userResourceIds) {
this.userResourceIds = userResourceIds;
}
}
package com.gic.auth.exception;
import com.gic.api.base.commons.ServiceResponse;
/**
* @author guojx
* @date 2019/6/26 2:03 PM
*/
public class StoreException extends RuntimeException{
public class AuthException extends RuntimeException{
private String errorCode;
public StoreException(String errorCode, String message) {
public AuthException(String errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public AuthException(ServiceResponse serviceResponse) {
super(serviceResponse.getMessage());
this.errorCode = serviceResponse.getCode();
}
public String getErrorCode() {
return errorCode;
}
......
package com.gic.auth.qo;
import com.gic.enterprise.qo.PageQO;
/**
* 管理员列表
* @ClassName: UserListQO

* @Description: 

* @author guojuxing

* @date 2019/9/2 5:16 PM

*/
public class UserListQO extends PageQO{
private static final long serialVersionUID = 3863482060139969653L;
/**
* 用户名\手机号码
*/
private String search;
private Integer enterpriseId;
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
}
package com.gic.auth.service;
import java.util.List;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.dto.UserDTO;
import java.util.List;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.qo.UserListQO;
/**
* @author guojx
......@@ -45,4 +48,14 @@ public interface UserApiService {
ServiceResponse<List<UserDTO>> listUserByPhoneNumber(String phoneNumber);
ServiceResponse<UserDTO> login(String phoneNumber, Integer enterpriseId, String password);
/**
* 分页查询管理员列表数据
* @Title: pageUser

* @Description:

 * @author guojuxing
* @param params

* @return com.gic.api.base.commons.ServiceResponse<com.gic.api.base.commons.Page<com.gic.auth.dto.UserDTO>>


 */
ServiceResponse<Page<UserListDTO>> pageUser(UserListQO params);
}
......@@ -4,7 +4,9 @@ import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.entity.TabSysUser;
import com.gic.auth.qo.UserListQO;
public interface TabSysUserMapper {
/**
......@@ -70,4 +72,14 @@ public interface TabSysUserMapper {
TabSysUser login(@Param("phoneNumber") String phoneNumber,
@Param("password") String password,
@Param("enterpriseId") Integer enterpriseId);
/**
* 列表查询
* @Title: listUser

* @Description:

 * @author guojuxing
* @param params

* @return java.util.List<com.gic.auth.entity.TabSysUser>


 */
List<UserListDTO> listUser(UserListQO params);
}
\ No newline at end of file
......@@ -3,7 +3,10 @@ package com.gic.auth.service;
import java.util.List;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.entity.TabSysUser;
import com.gic.auth.qo.UserListQO;
import com.github.pagehelper.Page;
/**
* @author guojx
......@@ -40,4 +43,14 @@ public interface UserService {
List<TabSysUser> listAllUserByPhoneNumber(String phoneNumber);
TabSysUser login(String phoneNumber, Integer enterpriseId, String password);
/**
* 查询管理员列表数据
* @Title: pageUser

* @Description:

 * @author guojuxing
* @param params

* @return com.github.pagehelper.Page


 */
Page<UserListDTO> pageUser(UserListQO params);
}
......@@ -16,7 +16,8 @@ public class AuthCodeServiceImpl implements AuthCodeService {
private TabSysAuthCodeMapper tabSysAuthCodeMapper;
@Override
public int saveAuthCode(TabSysAuthCode tabSysAuthCode) {
return this.tabSysAuthCodeMapper.insert(tabSysAuthCode);
this.tabSysAuthCodeMapper.insert(tabSysAuthCode);
return tabSysAuthCode.getAuthCodeId();
}
@Override
......
......@@ -4,12 +4,17 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.gic.auth.dao.mapper.TabSysUserMapper;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.entity.TabSysUser;
import com.gic.auth.qo.UserListQO;
import com.gic.auth.service.UserService;
import com.gic.commons.util.EntityUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
/**
* @author guojx
......@@ -19,6 +24,8 @@ import com.gic.commons.util.EntityUtil;
public class UserServiceImpl implements UserService {
@Autowired
private TabSysUserMapper tabSysUserMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public int saveUser(UserDTO userDTO) {
TabSysUser tabUser = EntityUtil.changeEntityNew(TabSysUser.class, userDTO);
......@@ -26,6 +33,7 @@ public class UserServiceImpl implements UserService {
return tabUser.getUserId();
}
@Transactional(rollbackFor = Exception.class)
@Override
public void editUser(UserDTO userDTO) {
TabSysUser tabUser = EntityUtil.changeEntityNew(TabSysUser.class, userDTO);
......@@ -60,4 +68,11 @@ public class UserServiceImpl implements UserService {
public TabSysUser login(String phoneNumber, Integer enterpriseId, String password) {
return this.tabSysUserMapper.login(phoneNumber, password, enterpriseId);
}
@Override
public Page<UserListDTO> pageUser(UserListQO params) {
PageHelper.startPage(params.getCurrentPage(), params.getPageSize());
List<UserListDTO> list = tabSysUserMapper.listUser(params);
return (Page) list;
}
}
......@@ -7,14 +7,20 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.dto.UserListDTO;
import com.gic.auth.dto.UserResourceDTO;
import com.gic.auth.dto.UserRoleDTO;
import com.gic.auth.entity.TabSysUser;
import com.gic.auth.qo.UserListQO;
import com.gic.auth.service.*;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.enterprise.error.ErrorCode;
import com.gic.store.utils.valid.ValidUtil;
......@@ -23,7 +29,7 @@ import com.gic.store.utils.valid.ValidUtil;
* @date 2019/7/16 6:55 PM
*/
@Service("userApiService")
public class UserApiServiceImpl implements UserApiService{
public class UserApiServiceImpl implements UserApiService {
@Autowired
private UserService userService;
@Autowired
......@@ -34,6 +40,8 @@ public class UserApiServiceImpl implements UserApiService{
private UserRoleService userRoleService;
@Autowired
private UserResourceService userResourceService;
@Transactional(rollbackFor = Exception.class)
@Override
public ServiceResponse<Integer> saveUser(UserDTO userDTO) {
//valid param
......@@ -45,14 +53,26 @@ public class UserApiServiceImpl implements UserApiService{
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "手机号码不能重复");
}
if (StringUtils.isBlank(userDTO.getPhoneAreaCode())) {
userDTO.setPhoneAreaCode("86");
}
userDTO.setCreateTime(new Date());
userDTO.setUpdateTime(new Date());
userDTO.setStatus(1);
Integer userId = userService.saveUser(userDTO);
return saveRole(userId, userDTO.getEnterpriseId(), userDTO.getUserRoleIds(), userDTO.getUserResourceIds());
ServiceResponse<Integer> response = saveRole(userId, userDTO.getEnterpriseId(), userDTO.getUserRoleIds(),
userDTO.getUserResourceIds());
if (response.isSuccess()) {
return response;
} else {
//事物回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return response;
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public ServiceResponse editUser(UserDTO userDTO) {
//valid param
......@@ -67,9 +87,21 @@ public class UserApiServiceImpl implements UserApiService{
if (userService.isPhoneRepeat(userDTO.getUserId(), userDTO.getPhoneNumber())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "手机号码不能重复");
}
if (StringUtils.isBlank(userDTO.getPhoneAreaCode())) {
userDTO.setPhoneAreaCode("86");
}
userDTO.setUpdateTime(new Date());
userService.editUser(userDTO);
return saveRole(userDTO.getUserId(), userDTO.getEnterpriseId(), userDTO.getUserRoleIds(), userDTO.getUserResourceIds());
ServiceResponse response = saveRole(userDTO.getUserId(), userDTO.getEnterpriseId(), userDTO.getUserRoleIds(),
userDTO.getUserResourceIds());
if (response.isSuccess()) {
return response;
} else {
//事物回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return response;
}
}
@Override
......@@ -111,7 +143,7 @@ public class UserApiServiceImpl implements UserApiService{
@Override
public ServiceResponse<List<UserDTO>> listUserByPhoneNumber(String phoneNumber) {
List<TabSysUser> list = this.userService.listAllUserByPhoneNumber(phoneNumber);
if(CollectionUtils.isNotEmpty(list)){
if (CollectionUtils.isNotEmpty(list)) {
return ServiceResponse.success(EntityUtil.changeEntityListByJSON(UserDTO.class, list));
}
return ServiceResponse.success();
......@@ -123,6 +155,13 @@ public class UserApiServiceImpl implements UserApiService{
return ServiceResponse.success(EntityUtil.changeEntityByJSON(UserDTO.class, user));
}
@Override
public ServiceResponse<Page<UserListDTO>> pageUser(UserListQO params) {
com.github.pagehelper.Page page = userService.pageUser(params);
Page<UserListDTO> resultPage = PageHelperUtils.changePageHelperToCurrentPage(page);
return ServiceResponse.success(resultPage);
}
/**
* 保存关联数据,角色关联、资源关联
* @Title: saveRole

......@@ -134,7 +173,8 @@ public class UserApiServiceImpl implements UserApiService{
* @param userResourceIds

* @return com.gic.api.base.commons.ServiceResponse<java.lang.Integer>


 */
private ServiceResponse<Integer> saveRole(Integer userId, Integer enterpriseId, String userRoleIds, String userResourceIds) {
private ServiceResponse<Integer> saveRole(Integer userId, Integer enterpriseId, String userRoleIds,
String userResourceIds) {
String[] userRoleIdArr;
String[] userResourceIdArr;
ServiceResponse<Object> userRoleValid = validStr(userRoleIds);
......
......@@ -26,7 +26,11 @@
where auth_code_id = #{authCodeId,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.auth.entity.TabSysAuthCode" useGeneratedKeys="true" keyProperty="authCodeId">
insert into tab_sys_auth_code (auth_code_id, auth_code, enterprise_id,
<insert id="insert" parameterType="com.gic.auth.entity.TabSysAuthCode">
<selectKey keyProperty="authCodeId" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into tab_sys_auth_code (auth_code_id, auth_code, enterprise_id,
relation_id, status, create_time,
expiration_time, update_time)
values (#{authCodeId,jdbcType=INTEGER}, #{authCode,jdbcType=VARCHAR}, #{enterpriseId,jdbcType=INTEGER},
......
......@@ -211,4 +211,25 @@
and enterprise_id = #{enterpriseId}
and password = #{password}
</select>
<select id="listUser" resultType="com.gic.auth.dto.UserListDTO" parameterType="com.gic.auth.qo.UserListQO">
select
a.user_id userId,
a.user_name userName,
a.phone_number phoneNumber,
a.phone_area_code phoneAreaCode,
GROUP_CONCAT(b.role_id) userRoleIds,
GROUP_CONCAT(c.resource_id) userResourceIds
from tab_sys_user a
left join tab_sys_user_role b on a.user_id = b.user_id
left join tab_sys_user_resource c on a.user_id = c.user_id
where a.enterprise_id = #{enterpriseId}
and a.status = 1
and b.status = 1
and c.status = 1
<if test="search != null and search != '' ">
and ( a.user_name like concat('%', #{search}, '%') or a.phone_number like concat('%', #{search}, '%') )
</if>
</select>
</mapper>
\ No newline at end of file
package com.gic.auth.web.controller;
import com.gic.auth.web.vo.UserDetailVO;
import com.gic.enterprise.utils.ResultControllerUtils;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -11,12 +9,14 @@ import org.springframework.web.bind.annotation.RestController;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.qo.UserListQO;
import com.gic.auth.service.UserApiService;
import com.gic.auth.web.utils.UserPasswordUtils;
import com.gic.auth.web.vo.UserDetailVO;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.response.EnterpriseRestResponse;
import com.gic.store.constant.StoreGroupConstant;
import com.gic.store.utils.CommonResultControllerUtils;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.enterprise.utils.UserDetailUtils;
@RestController
@RequestMapping("/user")
......@@ -29,11 +29,13 @@ public class UserController {
@RequestMapping("/save-or-update-user")
public RestResponse editUser(@Validated({ UserDTO.UserQoValid.class }) UserDTO userDTO) {
userDTO.setEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID);
userDTO.setEnterpriseId(UserDetailUtils.getUserDetail().getEnterpriseId());
String password = UserPasswordUtils.validPassword(userDTO.getPasswordType(), userDTO.getPassword(),
userDTO.getConfirmPassword());
userDTO.setPassword(UserPasswordUtils.getEncryptPassword(password));
ServiceResponse userResult;
//普通用户
userDTO.setSuperAdmin(0);
if (userDTO.getUserId() == null) {
userResult = userApiService.saveUser(userDTO);
} else {
......@@ -59,10 +61,10 @@ public class UserController {
return ResultControllerUtils.commonResultOne(userApiService.getUserById(userId), UserDetailVO.class);
}
@RequestMapping("/get-user")
public RestResponse getUser() {
return RestResponse.success(CommonResultControllerUtils
.commonResult(userApiService.getUserByEnterpriseId(StoreGroupConstant.TEST_ENTERPRISE_ID)));
@RequestMapping("/list-user")
public RestResponse listUser(UserListQO params) {
params.setEnterpriseId(UserDetailUtils.getUserDetail().getEnterpriseId());
return ResultControllerUtils.commonResult(userApiService.pageUser(params));
}
}
package com.gic.auth.web.exception;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import com.gic.auth.exception.AuthException;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.error.ErrorCode;
import com.gic.store.exception.StoreException;
/**
* 全局异常处理类
*
* @author hua
*/
@ControllerAdvice
@ResponseBody
public class GlobalExceptionHandler {
private static Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(Exception.class)
public RestResponse controllerException(HttpServletResponse response, Exception ex) {
logger.error("err", ex);
RestResponse failureResponse = getRestResponse(ErrorCode.SYSTEM_ERROR.getCode(), ErrorCode.SYSTEM_ERROR.getMsg());
StringBuilder sb = new StringBuilder();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (PrintWriter printWriter = new PrintWriter(baos)) {
ex.printStackTrace(printWriter);
}
try {
sb.append(baos.toString());
} catch (Exception ignored) {
}
if (sb.length() == 0) {
sb.append(ex.getMessage());
}
// 输出详细错误信息,便于调试
failureResponse.setDetailError(sb.toString());
return failureResponse;
}
/**
* 参数校验异常统一处理
* @param e
* @return
*/
@ExceptionHandler(BindException.class)
public RestResponse customException(BindException e) {
List<FieldError> fieldErrors = e.getFieldErrors();
StringBuilder errorMessage = new StringBuilder();
fieldErrors.forEach(fieldError -> {
errorMessage
.append(fieldError.getDefaultMessage())
.append(",");
});
String error = errorMessage.toString();
return getRestResponse(ErrorCode.PARAMETER_ERROR.getCode(), error.substring(0, error.length() - 1));
}
@ExceptionHandler(ConstraintViolationException.class)
public RestResponse constraintViolationException(ConstraintViolationException e) {
Set<ConstraintViolation<?>> constraintViolations = e.getConstraintViolations();
String paramName = constraintViolations.iterator().next().getPropertyPath().toString();
String paramError = constraintViolations.iterator().next().getMessage();
return getRestResponse(ErrorCode.PARAMETER_ERROR.getCode(), getFailFastMsg(paramName, paramError));
}
/**
* 自定义异常统一处理
* @param e
* @return
*/
@ExceptionHandler(StoreException.class)
public RestResponse customException(StoreException e) {
return getRestResponse(e.getErrorCode(), e.getMessage());
}
@ExceptionHandler(AuthException.class)
public RestResponse customException(AuthException e) {
return getRestResponse(e.getErrorCode(), e.getMessage());
}
private RestResponse getRestResponse(String errorCode, String message) {
return RestResponse.failure(errorCode, message);
}
private static String getFailFastMsg(String paramName, String paramError) {
return String.format("%s:%s", paramName, paramError);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment