@ -3,7 +3,6 @@ package com.cloud.kicc.system.controller;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.collection.CollectionUtil ;
import cn.hutool.core.map.MapUtil ;
import cn.hutool.core.map.MapUtil ;
import cn.hutool.core.util.ArrayUtil ;
import cn.hutool.core.util.ArrayUtil ;
import cn.hutool.core.util.EnumUtil ;
import cn.hutool.core.util.StrUtil ;
import cn.hutool.core.util.StrUtil ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
import com.baomidou.mybatisplus.core.metadata.IPage ;
@ -11,10 +10,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.cloud.kicc.common.core.api.R ;
import com.cloud.kicc.common.core.api.R ;
import com.cloud.kicc.common.core.constant.AppConstants ;
import com.cloud.kicc.common.core.constant.AppConstants ;
import com.cloud.kicc.common.core.constant.CommonConstants ;
import com.cloud.kicc.common.core.constant.SecurityConstants ;
import com.cloud.kicc.common.core.exception.CheckedException ;
import com.cloud.kicc.common.core.exception.CheckedException ;
import com.cloud.kicc.common.data.entity.KiccUser ;
import com.cloud.kicc.common.log.annotation.SysLog ;
import com.cloud.kicc.common.log.annotation.SysLog ;
import com.cloud.kicc.common.security.annotation.Inner ;
import com.cloud.kicc.common.security.annotation.Inner ;
import com.cloud.kicc.common.security.util.SecurityUtils ;
import com.cloud.kicc.common.security.util.SecurityUtils ;
@ -25,6 +21,7 @@ import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole ;
import com.cloud.kicc.system.api.entity.UserRole ;
import com.cloud.kicc.system.api.enums.UserTypeEnum ;
import com.cloud.kicc.system.api.enums.UserTypeEnum ;
import com.cloud.kicc.system.api.vo.ResultVo ;
import com.cloud.kicc.system.api.vo.ResultVo ;
import com.cloud.kicc.system.api.vo.UserVo ;
import com.cloud.kicc.system.service.MenuService ;
import com.cloud.kicc.system.service.MenuService ;
import com.cloud.kicc.system.service.RoleService ;
import com.cloud.kicc.system.service.RoleService ;
import com.cloud.kicc.system.service.UserRoleService ;
import com.cloud.kicc.system.service.UserRoleService ;
@ -35,12 +32,6 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor ;
import lombok.RequiredArgsConstructor ;
import lombok.SneakyThrows ;
import lombok.SneakyThrows ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken ;
import org.springframework.security.core.Authentication ;
import org.springframework.security.core.authority.AuthorityUtils ;
import org.springframework.security.core.context.SecurityContextHolder ;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder ;
import org.springframework.security.crypto.password.PasswordEncoder ;
import org.springframework.web.bind.annotation.* ;
import org.springframework.web.bind.annotation.* ;
import java.util.* ;
import java.util.* ;
@ -63,30 +54,18 @@ public class UserController {
private final UserRoleService userRoleService ;
private final UserRoleService userRoleService ;
private final RoleService roleService ;
private final RoleService roleService ;
private final MenuService menuService ;
private final MenuService menuService ;
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder ( ) ;
private final RemotePushConcernFanService remotePushConcernFanService ;
private final RemotePushConcernFanService remotePushConcernFanService ;
private LambdaQueryWrapper < User > getQueryWrapper ( User user ) {
return new LambdaQueryWrapper < User > ( )
. like ( StrUtil . isNotBlank ( user . getUserName ( ) ) , User : : getUserName , user . getUserName ( ) )
. like ( StrUtil . isNotBlank ( user . getNickName ( ) ) , User : : getNickName , user . getNickName ( ) )
. eq ( StrUtil . isNotBlank ( user . getDeptId ( ) ) , User : : getDeptId , user . getDeptId ( ) )
. eq ( StrUtil . isNotBlank ( user . getId ( ) ) , User : : getId , user . getId ( ) )
. eq ( StrUtil . isNotBlank ( user . getUserType ( ) ) , User : : getUserType , user . getUserType ( ) )
. between ( StrUtil . isNotBlank ( user . getBeginTime ( ) ) & & StrUtil . isNotBlank ( user . getEndTime ( ) ) , User : : getCreateTime , user . getBeginTime ( ) , user . getEndTime ( ) ) ;
}
@GetMapping ( "/list" )
@GetMapping ( "/list" )
//@PreAuthorize("@pms.hasPermission('user_view')")
public R list ( Page page , @RequestParam Map param ) {
public R list ( Page page , User user ) {
IPage < UserVo > userIPage = userService . selectUserList ( page , param ) ;
IPage < User > userIPage = userService . page ( page , getQueryWrapper ( user ) ) ;
return R . ok ( userIPage . getRecords ( ) , userIPage . getTotal ( ) ) ;
return R . ok ( userIPage . getRecords ( ) , userIPage . getTotal ( ) ) ;
}
}
@GetMapping ( "/getCourierUserList" )
@GetMapping ( "/getCourierUserList" )
@ApiOperation ( value = "获取全部快递员集合" )
@ApiOperation ( value = "获取全部快递员集合" )
public R getCourierUserList ( ) {
public R getCourierUserList ( ) {
List < User > userList = userService . getCourierUserList ( ) ;
List < UserVo > userList = userService . getCourierUserList ( ) ;
return R . ok ( userList ) ;
return R . ok ( userList ) ;
}
}
@ -109,13 +88,13 @@ public class UserController {
@GetMapping ( "/{id:\\w+}" )
@GetMapping ( "/{id:\\w+}" )
public R getById ( @PathVariable ( "id" ) String id ) {
public R getById ( @PathVariable ( "id" ) String id ) {
User user = userService . getById ( id ) ;
UserVo user = userService . getUser ById ( id ) ;
List < String > roles ;
List < String > roles ;
// 设置所有角色集合信息
// 设置所有角色集合信息
List < Role > roleList = roleService . list ( ) ;
List < Role > roleList = roleService . list ( ) ;
// 设置用户角色信息
// 设置用户角色信息
if ( user ! = null ) {
if ( user ! = null ) {
roles = userRoleService . list ( new LambdaQueryWrapper < UserRole > ( ) . eq ( UserRole : : getUserId , user . getId ( ) ) )
roles = userRoleService . list ( new LambdaQueryWrapper < UserRole > ( ) . eq ( UserRole : : getUserId , user . getCasUser Id ( ) ) )
. stream ( ) . map ( userRole - > userRole . getRoleId ( ) ) . collect ( Collectors . toList ( ) ) ;
. stream ( ) . map ( userRole - > userRole . getRoleId ( ) ) . collect ( Collectors . toList ( ) ) ;
user . setRoleIds ( ArrayUtil . toArray ( roles , String . class ) ) ;
user . setRoleIds ( ArrayUtil . toArray ( roles , String . class ) ) ;
}
}
@ -125,53 +104,40 @@ public class UserController {
@Inner
@Inner
@GetMapping ( "/getUser/{id:\\w+}" )
@GetMapping ( "/getUser/{id:\\w+}" )
public R getUser ( @PathVariable ( "id" ) String id ) {
public R getUser ( @PathVariable ( "id" ) String id ) {
User user = userService . getById ( id ) ;
UserVo user = userService . getUserById ( id ) ;
if ( user = = null ) {
if ( user = = null ) return R . error ( "该用户不存在,请注册!" ) ;
return R . error ( "该用户不存在,请注册!" ) ;
}
return R . ok ( userService . getUserAuthority ( user ) ) ;
return R . ok ( userService . getUserAuthority ( user ) ) ;
}
}
@SysLog ( "用户新增" )
@SysLog ( "用户新增" )
@PostMapping ( "/save" )
@PostMapping ( "/save" )
@PreAuthorize ( "@pms.hasPermission('user_add')" )
@PreAuthorize ( "@pms.hasPermission('user_add')" )
public R save ( @RequestBody User user ) {
public R save ( @RequestBody UserVo user ) {
user . setPassword ( ENCODER . encode ( user . getPassword ( ) ) ) ;
userService . saveUser ( user ) ;
userService . saveUser ( user ) ;
// fixme: 推送.APP相关
// 企业内部用户推送类型数据同步
// 企业内部用户推送类型数据同步
if ( StrUtil . equals ( user . getUserType ( ) , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) {
if ( StrUtil . equals ( user . getUserType ( ) , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) {
List < User > userList = userService . list ( Wrappers . < User > lambdaQuery ( )
List < User > userList = userService . list ( Wrappers . < User > lambdaQuery ( )
. ne ( User : : getId , SecurityUtils . getCasUser ( ) . getId ( ) )
. ne ( User : : getId , SecurityUtils . getCasUser ( ) . getId ( ) )
. notIn ( User : : getUserType , UserTypeEnum . ENTERPRISE_USER . getValue ( ) , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) ;
. notIn ( User : : getUserType , UserTypeEnum . ENTERPRISE_USER . getValue ( ) , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) ;
remotePushConcernFanService . enterpriseUserFanSave ( user . getId ( ) , userList ) ;
remotePushConcernFanService . enterpriseUserFanSave ( user . getCasUser Id ( ) , userList ) ;
}
}
// 创建内部新 用户强制关联内部企业
// 创建系统中的 用户强制关联内部企业
if ( ! ArrayUtil . contains ( new String [ ] {
if ( ! ArrayUtil . contains ( new String [ ] {
UserTypeEnum . ENTERPRISE_USER . getValue ( ) ,
UserTypeEnum . ENTERPRISE_USER . getValue ( ) ,
UserTypeEnum . INTERNAL_USER . getValue ( ) ,
UserTypeEnum . INTERNAL_USER . getValue ( ) ,
} , SecurityUtils . getUser ( ) . getUserType ( ) ) ) {
} , SecurityUtils . getUser ( ) . getUserType ( ) ) ) {
List < User > enterpriseUserList = userService . list ( Wrappers . < User > lambdaQuery ( )
List < User > enterpriseUserList = userService . list ( Wrappers . < User > lambdaQuery ( )
. in ( User : : getUserType , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) ;
. in ( User : : getUserType , UserTypeEnum . INTERNAL_USER . getValue ( ) ) ) ;
remotePushConcernFanService . bindConcernEnterpriseUser ( user . getId ( ) , enterpriseUserList ) ;
remotePushConcernFanService . bindConcernEnterpriseUser ( user . getCasUser Id ( ) , enterpriseUserList ) ;
}
}
return R . ok ( ) ;
return R . ok ( ) ;
}
}
@Inner ( false )
@SysLog ( "新增外部系统用户" )
@PostMapping ( "/saveExternalUser" )
public R saveExternalUser ( @RequestBody User externalUser ) {
// todo: 使用管理员临时ID,需调整
SecurityUtils . openInterfaceTemporaryLoginSession ( "1510539584287346688" ) ;
externalUser . setPassword ( ENCODER . encode ( externalUser . getPassword ( ) ) ) ;
userService . saveUser ( externalUser ) ;
return R . ok ( externalUser ) ;
}
@Inner
@Inner
@GetMapping ( "/selectByUserName/{userName}" )
@GetMapping ( "/selectByUserName/{userName}" )
public R selectByUserName ( @PathVariable String userName ) {
public R selectByUserName ( @PathVariable String userName ) {
User user = userService . getOne ( Wrappers . < User > query ( ) . lambda ( ) . eq ( User : : getUserName , userName ) ) ;
UserVo user = userService . getUserByName ( userName ) ;
if ( user = = null ) {
if ( user = = null ) {
return R . error ( "该用户不存在,请注册!" ) ;
return R . error ( "该用户不存在,请注册!" ) ;
}
}
@ -181,7 +147,7 @@ public class UserController {
@SysLog ( "用户修改" )
@SysLog ( "用户修改" )
@PutMapping ( "/update" )
@PutMapping ( "/update" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
public R update ( @RequestBody User user ) {
public R update ( @RequestBody UserVo user ) {
userService . saveUser ( user ) ;
userService . saveUser ( user ) ;
return R . ok ( ) ;
return R . ok ( ) ;
}
}
@ -199,39 +165,6 @@ public class UserController {
return R . ok ( ) ;
return R . ok ( ) ;
}
}
@SysLog ( "用户信息修改" )
@PutMapping ( "/updateProfile" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
public R updateProfile ( @RequestBody User user ) {
userService . update ( Wrappers . < User > update ( ) . lambda ( ) . eq ( User : : getId , user . getId ( ) )
. set ( User : : getNickName , user . getNickName ( ) )
. set ( StrUtil . isNotBlank ( user . getPhone ( ) ) , User : : getPhone , user . getPhone ( ) )
. set ( User : : getEmail , user . getEmail ( ) )
. set ( User : : getSex , user . getSex ( ) ) ) ;
return R . ok ( ) ;
}
@SysLog ( "用户密码修改" )
@PutMapping ( "/updatePwd" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
public R updatePwd ( User user ) {
User originUser = userService . getById ( SecurityUtils . getCasUser ( ) . getId ( ) ) ;
if ( originUser ! = null & & StrUtil . equals ( ENCODER . encode ( user . getPassword ( ) ) , originUser . getPassword ( ) ) ) {
userService . update ( Wrappers . < User > update ( ) . lambda ( ) . eq ( User : : getId , originUser . getId ( ) ) . set ( User : : getPassword , user . getPassword ( ) ) ) ;
return R . ok ( ) ;
} else {
return R . error ( "原密码有误,请重试" ) ;
}
}
@SysLog ( "用户密码重置" )
@PutMapping ( "/resetPwd" )
@PreAuthorize ( "@pms.hasPermission('user_reset')" )
public R resetPwd ( @RequestBody User user ) {
userService . update ( Wrappers . < User > update ( ) . lambda ( ) . eq ( User : : getId , user . getId ( ) ) . set ( User : : getPassword , ENCODER . encode ( user . getNewPassword ( ) ) ) ) ;
return R . ok ( ) ;
}
@SysLog ( "用户状态更改" )
@SysLog ( "用户状态更改" )
@PutMapping ( "/changeStatus" )
@PutMapping ( "/changeStatus" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
@ -244,8 +177,9 @@ public class UserController {
@ResponseExcel ( name = "用户列表" , sheets = @Sheet ( sheetName = "user_list" ) )
@ResponseExcel ( name = "用户列表" , sheets = @Sheet ( sheetName = "user_list" ) )
@GetMapping ( "/exportUser" )
@GetMapping ( "/exportUser" )
@PreAuthorize ( "@pms.hasPermission('user_export')" )
@PreAuthorize ( "@pms.hasPermission('user_export')" )
public List < User > exportUserList ( ) {
public List < UserVo > exportUserList ( ) {
return userService . list ( ) ;
IPage < UserVo > userIPage = userService . selectUserList ( new Page < > ( 1 , 1000 ) , MapUtil . < String , Object > builder ( ) . build ( ) ) ;
return userIPage . getRecords ( ) ;
}
}
@SneakyThrows
@SneakyThrows
@ -257,7 +191,7 @@ public class UserController {
userService . setCurrentUserTenant ( tenantIds ) ;
userService . setCurrentUserTenant ( tenantIds ) ;
try {
try {
// 检测切换的多租户下是否已经配置好了基础数据,没配置会导致系统直接404
// 检测切换的多租户下是否已经配置好了基础数据,没配置会导致系统直接404
Set < Menu > menuSet = new HashSet ( ) ;
Set < Menu > menuSet = new HashSet < > ( ) ;
SecurityUtils . getRoles ( ) . forEach ( roleId - > menuSet . addAll ( menuService . selectMenuListByRoleId ( roleId ) ) ) ;
SecurityUtils . getRoles ( ) . forEach ( roleId - > menuSet . addAll ( menuService . selectMenuListByRoleId ( roleId ) ) ) ;
List < Menu > menuList = menuSet . stream ( ) . sorted ( Comparator . comparingInt ( Menu : : getSort ) ) . collect ( Collectors . toList ( ) ) ;
List < Menu > menuList = menuSet . stream ( ) . sorted ( Comparator . comparingInt ( Menu : : getSort ) ) . collect ( Collectors . toList ( ) ) ;
List < Menu > menus = menuService . buildMenuTree ( menuList , "0" ) ;
List < Menu > menus = menuService . buildMenuTree ( menuList , "0" ) ;
@ -273,14 +207,10 @@ public class UserController {
@GetMapping ( "/resetTenant" )
@GetMapping ( "/resetTenant" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
@PreAuthorize ( "@pms.hasPermission('user_edit')" )
public R resetTenant ( ) {
public R resetTenant ( ) {
User user = userService . getCurrentUserInfo ( ) ;
UserVo user = userService . getUserById ( SecurityUtils . getCasUser ( ) . getId ( ) ) ;
userService . getUserAuthority ( user ) ;
userService . setCurrentUserTenant ( user . getTenantId ( ) ) ;
userService . setCurrentUserTenant ( user . getTenantId ( ) ) ;
return R . ok ( ) ;
return R . ok ( ) ;
}
}
@GetMapping ( "/synchronousAuthenticationUser" )
public R synchronousAuthenticationUser ( ) {
return R . ok ( SecurityUtils . getCasUser ( ) ) ;
}
}
}