package com.ibeetl.admin.console.service;
|
|
import java.util.*;
|
|
import cn.hutool.core.lang.Snowflake;
|
import cn.hutool.core.util.IdUtil;
|
import com.ibeetl.admin.console.dao.CuserConsoleDao;
|
import com.ibeetl.admin.console.model.CoreUserModel;
|
import com.ibeetl.admin.core.dao.CoreUserRoleDao;
|
import com.ibeetl.admin.core.entity.XzxCityPartner;
|
import org.apache.catalina.User;
|
import org.apache.commons.lang3.StringUtils;
|
import org.beetl.sql.core.engine.PageQuery;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.ibeetl.admin.console.dao.UserConsoleDao;
|
import com.ibeetl.admin.console.exception.DeletedException;
|
import com.ibeetl.admin.console.exception.NoResourceException;
|
import com.ibeetl.admin.console.web.dto.UserExcelExportData;
|
import com.ibeetl.admin.console.web.query.UserRoleQuery;
|
import com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService;
|
import com.ibeetl.admin.core.entity.CoreDict;
|
import com.ibeetl.admin.core.entity.CoreUser;
|
import com.ibeetl.admin.core.entity.CoreUserRole;
|
import com.ibeetl.admin.core.file.FileService;
|
import com.ibeetl.admin.core.rbac.tree.OrgItem;
|
import com.ibeetl.admin.core.service.CoreBaseService;
|
import com.ibeetl.admin.core.service.CoreDictService;
|
import com.ibeetl.admin.core.service.CorePlatformService;
|
import com.ibeetl.admin.core.util.PlatformException;
|
import com.ibeetl.admin.core.util.enums.CoreDictType;
|
import com.ibeetl.admin.core.util.enums.DelFlagEnum;
|
import com.ibeetl.admin.core.util.enums.GeneralStateEnum;
|
|
@Service
|
@Transactional
|
public class UserConsoleService extends CoreBaseService<CoreUser> {
|
|
@Autowired
|
UserConsoleDao userDao;
|
@Autowired
|
CoreUserRoleDao roleDao;
|
@Autowired
|
CuserConsoleDao cuserdao;
|
@Autowired
|
XzxCityPartnerService cityPartnerService;
|
|
@Autowired
|
FileService fileService;
|
|
@Autowired
|
PasswordEncryptService passwordEncryptService;
|
@Autowired
|
CoreDictService dictService;
|
|
|
@Autowired
|
CorePlatformService platformService;
|
Snowflake snowflake = IdUtil.getSnowflake(0, 3);
|
/**
|
* 根据条件查询
|
*
|
* @param query
|
*/
|
public List<CoreUserModel> queryByCondtion(CoreUserModel query) {
|
int p = (query.getPage() - 1) * query.getLimit();
|
query.setPage(p);
|
if(null!=query.getStartTime()&&!"".equals(query.getStartTime())){
|
query.setStartTime(query.getStartTime()+" 00:00:00");
|
}
|
if(null!=query.getEndTime()&&!"".equals(query.getEndTime())){
|
query.setEndTime(query.getEndTime()+" 23:59:59");
|
}
|
List<CoreUserModel> ret = userDao.queryByCondtion(query);
|
return ret;
|
}
|
|
public int queryByCondtionCount(CoreUserModel query) {
|
return userDao.queryByCondtionCount(query);
|
}
|
|
public void updateRole(CoreUser user,Long roleId){
|
List<CoreUserRole> list = roleDao.queryRoleByUserId(user.getId(),user.getOrgId());
|
if(list.size()>0){
|
CoreUserRole role = list.get(0);
|
CoreUserRole coreUserRole = new CoreUserRole();
|
coreUserRole.setId(role.getId());
|
coreUserRole.setCreateTime(new Date());
|
coreUserRole.setOrgId(user.getOrgId());
|
coreUserRole.setUserId(user.getId());
|
coreUserRole.setRoleId(roleId);
|
roleDao.updateById(coreUserRole);
|
|
}else{
|
XzxCityPartner partner = cityPartnerService.queryById(user.getId());
|
if(null!=partner){
|
list = roleDao.queryRoleByUserId(user.getId(),partner.getOrgId());
|
if(list.size()>0){
|
CoreUserRole role = list.get(0);
|
CoreUserRole coreUserRole = new CoreUserRole();
|
coreUserRole.setId(role.getId());
|
coreUserRole.setCreateTime(new Date());
|
coreUserRole.setOrgId(user.getOrgId());
|
coreUserRole.setUserId(user.getId());
|
coreUserRole.setRoleId(roleId);
|
roleDao.updateById(coreUserRole);
|
}
|
}
|
|
}
|
|
}
|
/**
|
* 插入一条用户数据
|
*
|
* @param user
|
*/
|
public void saveUser(CoreUser user,Long roleId) {
|
CoreUser query = new CoreUser();
|
query.setCode(user.getCode());
|
CoreUser dbUser = userDao.templateOne(query);
|
if (dbUser != null) {
|
throw new PlatformException("保存用户信息失败,用户已经存在");
|
}
|
user.setCreateTime(new Date());
|
user.setState(GeneralStateEnum.ENABLE.getValue());
|
user.setPassword(passwordEncryptService.password(user.getPassword()));
|
user.setDelFlag(DelFlagEnum.NORMAL.getValue());
|
userDao.insert(user, true);
|
if(StringUtils.isNotEmpty(user.getAttachmentId())){
|
//更新附件详细信息,关联到这个用户
|
fileService.updateFile(user.getAttachmentId(), User.class.getSimpleName(), String.valueOf(user.getId()));
|
}
|
//String roleId = user.getRoleId();
|
CoreUserRole coreUserRole = new CoreUserRole();
|
coreUserRole.setCreateTime(new Date());
|
coreUserRole.setOrgId(user.getOrgId());
|
coreUserRole.setUserId(user.getId());
|
coreUserRole.setRoleId(roleId);
|
roleDao.insert(coreUserRole);
|
//添加用户的账户
|
// 添加账号表
|
Map<String,Object> setMap = new HashMap<>();
|
String value = "0";
|
String accountNo="ZH"+snowflake.nextIdStr();
|
cuserdao.addCuserAccountRole(accountNo, "", user.getId()+"",value);
|
|
}
|
|
/**
|
* 根据用户id查询一条数据
|
*
|
* @param userId
|
*/
|
public CoreUser queryUserById(Long userId) {
|
return userDao.unique(userId);
|
}
|
|
/**
|
* 更新用户 只更新不为空的字段
|
*
|
* @param user
|
* @return
|
*/
|
public int updateSysUser(CoreUser user) {
|
return userDao.updateTemplateById(user);
|
}
|
|
/**
|
* 删除用户
|
*
|
* @param userId
|
* 用户id
|
*/
|
public void delSysUser(Long userId) {
|
CoreUser user = queryUserById(userId);
|
if (user == null) {
|
throw new NoResourceException("用户不存在!");
|
}
|
if (user.getDelFlag() == DelFlagEnum.DELETED.getValue()) {
|
throw new DeletedException("用户已被删除!");
|
}
|
user = new CoreUser();
|
user.setId(userId);
|
user.setDelFlag(DelFlagEnum.DELETED.getValue());
|
userDao.updateTemplateById(user);
|
}
|
|
/**
|
* 批量删除用户 <br/>
|
* 软删除 标记用户删除状态
|
*
|
* @param userIds
|
* 用户id
|
*/
|
public void batchDelSysUser(List<Long> userIds) {
|
try {
|
userDao.batchDelUserByIds(userIds);
|
} catch (Exception e) {
|
throw new PlatformException("批量删除用户失败", e);
|
}
|
}
|
|
/**
|
* 批量停用用户 <br/>
|
* 标记用户状态 停用
|
*
|
* @param userIds
|
* 用户id
|
*/
|
public void batchUpdateUserState(List<Long> userIds, GeneralStateEnum stateEnum) {
|
userDao.batchUpdateUserState(userIds, stateEnum);
|
}
|
|
/**
|
* 重置用户密码
|
*
|
* @param id
|
* @param password
|
*/
|
public int resetPassword(Long id, String password) {
|
CoreUser user = new CoreUser();
|
user.setId(id);
|
user.setPassword(passwordEncryptService.password(password));
|
user.setUpdateTime(new Date());
|
return userDao.updateTemplateById(user);
|
}
|
|
public List<CoreUserRole> getUserRoles(UserRoleQuery roleQuery) {
|
return userDao.queryUserRole(roleQuery.getUserId(), roleQuery.getOrgId(), roleQuery.getRoleId());
|
}
|
|
public void deleteUserRoles(List<Long> ids) {
|
// 考虑到这个操作较少使用,就不做批处理优化了
|
for (Long id : ids) {
|
sqlManager.deleteById(CoreUserRole.class, id);
|
}
|
|
}
|
|
public void saveUserRole(CoreUserRole userRole) {
|
|
long queryCount = sqlManager.templateCount(userRole);
|
|
if (queryCount > 0) {
|
throw new PlatformException("已存在用户角色关系");
|
}
|
sqlManager.insert(userRole);
|
}
|
|
public List<UserExcelExportData> queryExcel(CoreUserModel query) {
|
List<CoreUserModel> list = userDao.queryByCondtion(query);
|
//List<CoreUser> list = ret.getList();
|
OrgItem orgRoot = platformService.buildOrg();
|
List<UserExcelExportData> items = new ArrayList<>();
|
for(CoreUserModel user:list) {
|
UserExcelExportData userItem = new UserExcelExportData();
|
userItem.setCode(user.getCode());
|
userItem.setId(user.getId());
|
userItem.setName(user.getName());
|
CoreDict dict = dictService.findCoreDict(CoreDictType.USER_STATE,user.getState());
|
userItem.setStateText(dict.getName());
|
|
if(StringUtils.isNotEmpty(user.getJobType1())){
|
dict = dictService.findCoreDict("job_type",user.getJobType1());
|
userItem.setJobType1Text(dict.getName());
|
}
|
|
String orgName = orgRoot.findChild(user.getOrgId()).getName();
|
userItem.setOrgText(orgName);
|
items.add(userItem);
|
|
}
|
return items;
|
|
}
|
|
}
|