package com.consum.base.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.compress.utils.Lists;
|
import org.springframework.stereotype.Service;
|
|
import com.consum.base.core.utils.MapUtils;
|
import com.consum.base.core.utils.MapperUtil;
|
import com.consum.base.core.utils.PageUtil;
|
import com.consum.base.pojo.FinSysTenantUserSearchParam;
|
import com.consum.base.pojo.response.FinSysTenantUserVO;
|
import com.consum.base.service.FinSysTenantUserService;
|
import com.consum.model.po.FinSysTenantUser;
|
import com.iplatform.base.util.PlatformRSAUtils;
|
import com.iplatform.core.util.AESUtils;
|
import com.iplatform.model.po.S_dept;
|
import com.iplatform.model.po.S_role;
|
import com.walker.db.page.GenericPager;
|
import com.walker.infrastructure.utils.StringUtils;
|
import com.walker.jdbc.service.BaseServiceImpl;
|
|
@Service
|
public class FinSysTenantUserServiceImpl extends BaseServiceImpl implements FinSysTenantUserService {
|
|
private static final String SQL_GET_USER =
|
"SELECT * FROM fin_sys_tenant_user WHERE IS_DELETE = 0 AND `STATUS` = 1 AND TENANT_ID = ?";
|
private static final String SQL_QH_PAGE_USER_PREFIX =
|
"select fstu.id,fstu.USER_CODE,fstu.USER_NAME,fstu.USER_PHONE,fst.name tenantName,fstd.name sysDeptName,fstu.STATUS from FIN_SYS_TENANT_USER fstu "
|
+ "left join fin_sys_tenant fst on fst.id =fstu.TENANT_ID "
|
+ "left join fin_sys_tenant_department fstd on fstd.id = fstu.SYS_DEPT_ID where fstu.IS_DELETE = 0 ";
|
|
private static final String SQL_TENANT_USER =
|
"select fstu.*, fst.TENANT_NAME, fst.LV from FIN_SYS_TENANT_USER fstu\n"
|
+ "left join (SELECT CODE, NAME AS TENANT_NAME, LV FROM FIN_SYS_TENANT) fst ON fstu.TENANT_CODE = fst.CODE\n"
|
+ "where fstu.SYS_USER_ID = ?";
|
|
private static final String SQL_INSERT_ROLE_USER =
|
"insert into s_role_user(user_id, role_id, org_id) values(?,?,0)";
|
|
private static final String SQL_DELETE_ROLE_USER = "DELETE FROM S_ROLE_USER WHERE USER_ID =?";
|
|
private static final String SQL_SELECT_USER_CODE = "SELECT * FROM FIN_SYS_TENANT_USER where STATUS =1 ";
|
|
private static final String SQL_SELECT_USER_ID = "SELECT * FROM S_ROLE where 1=1 ";
|
private static final String SQL_DEPT_ROLES = "select * from s_dept where status=0 and del_flag=0";
|
|
/**
|
* @Description 分页查询系统用户
|
* @Author wh
|
* @Date 2023/7/17 14:26
|
*/
|
@Override
|
public PageUtil<FinSysTenantUserVO> queryAllPageUser(FinSysTenantUserSearchParam param) {
|
Map<String, Object> parameter = new HashMap<>(10);
|
StringBuilder sql = new StringBuilder(SQL_QH_PAGE_USER_PREFIX);
|
if (param.getTenantCode() > 0) {
|
sql.append(" and fstu.TENANT_CODE =:tenantCode");
|
parameter.put("tenantCode", param.getTenantCode());
|
}
|
if (param.getSupplierId() != null) {
|
sql.append(" and fstu.supplier_Id =:supplier_Id");
|
parameter.put("supplier_Id", param.getSupplierId());
|
}
|
if (StringUtils.isNotEmpty(param.getUserName())) {
|
sql.append(" and USER_NAME like :userName");
|
parameter.put("userName", StringUtils.CHAR_PERCENT + param.getUserName() + StringUtils.CHAR_PERCENT);
|
}
|
if (StringUtils.isNotEmpty(param.getUserCode())) {
|
sql.append(" and USER_CODE like :USER_CODE");
|
parameter.put("USER_CODE", StringUtils.CHAR_PERCENT + param.getUserCode() + StringUtils.CHAR_PERCENT);
|
}
|
|
if (param.getStatus() != null) {
|
sql.append(" and fstu.status =:status");
|
parameter.put("status", param.getStatus());
|
}
|
|
if (StringUtils.isNotEmpty(param.getUserPhone())) {
|
sql.append(" and USER_PHONE =:userPhone");
|
try {
|
// 加密手机号
|
String key = PlatformRSAUtils.AES_KEY;
|
parameter.put("userPhone", AESUtils.encryptStrAES(param.getUserPhone(), key));
|
} catch (Exception e) {
|
log.error("手机号加密失败, 原因是:" + e.getMessage());
|
parameter.put("userPhone", "");
|
}
|
}
|
|
// 这里是选择人员加的
|
if (param.getType() != null) {
|
// 1 是财政用户 2 供应商 他俩的区别就是 供应商id是否为空
|
if (param.getType() == 1) {
|
sql.append(" and fstu.supplier_Id is null ");
|
}
|
|
if (param.getType() == 2) {
|
// 这里是 查的供应商 供应商id 已经在上面加过了
|
}
|
}
|
// 绑定CTI客服
|
if (param.getCtiStatus() != null) {
|
if (param.getCtiStatus() == 1) {
|
sql.append(" and fstu.AGENT_JID is not null ");
|
} else {
|
sql.append(" and fstu.AGENT_JID is null ");
|
}
|
}
|
sql.append(" ORDER BY SEQ asc ,fstu.CREATE_TIME desc");
|
|
GenericPager<Map<String, Object>> mapGenericPager =
|
this.selectSplit(sql.toString(), parameter, param.getPageNum(), param.getPageSize(), new MapperUtil());
|
PageUtil pageUtil = new PageUtil(mapGenericPager);
|
|
List<FinSysTenantUserVO> result = Lists.newArrayList();
|
mapGenericPager.getDatas().forEach(map -> {
|
FinSysTenantUserVO finSysTenantUserVO = MapUtils.convertMapToObj(map, FinSysTenantUserVO.class);
|
result.add(finSysTenantUserVO);
|
});
|
pageUtil.setDatas(result);
|
return pageUtil;
|
}
|
|
@Override
|
public FinSysTenantUser queryOneById(String id) {
|
FinSysTenantUser finSysTenantUser = new FinSysTenantUser();
|
finSysTenantUser.setId(Long.valueOf(id));
|
List<FinSysTenantUser> finSysTenantUserList = this.select(finSysTenantUser);
|
if (!StringUtils.isEmptyList(finSysTenantUserList)) {
|
return finSysTenantUserList.get(0);
|
}
|
return null;
|
}
|
|
@Override
|
public FinSysTenantUser queryOneBySysId(String sysUserId) {
|
FinSysTenantUser finSysTenantUser = new FinSysTenantUser();
|
finSysTenantUser.setSysUserId(Long.valueOf(sysUserId));
|
List<FinSysTenantUser> finSysTenantUserList = this.select(finSysTenantUser);
|
if (!StringUtils.isEmptyList(finSysTenantUserList)) {
|
return finSysTenantUserList.get(0);
|
}
|
return null;
|
}
|
|
@Override
|
public FinSysTenantUser queryOneByUserId(String userId) {
|
FinSysTenantUser finSysTenantUser = this.get(SQL_TENANT_USER, new Object[] {userId}, new FinSysTenantUser());
|
return finSysTenantUser;
|
}
|
|
/**
|
* 批量添加角色对应的用户。
|
*
|
* @param roleIdList
|
* @param userId
|
*/
|
@Override
|
public void execInsertRoleUserList(List<Long> roleIdList, Long userId) {
|
List<Object[]> parameters = new ArrayList<>();
|
Object[] one = null;
|
for (long roleId : roleIdList) {
|
one = new Object[2];
|
one[0] = userId;
|
one[1] = roleId;
|
parameters.add(one);
|
}
|
this.execBatchUpdate(SQL_INSERT_ROLE_USER, parameters);
|
}
|
|
/**
|
* 批量添加角色对应的用户。支持同时多个用户
|
*/
|
@Override
|
public void execInsertRoleUserList(List<FinSysTenantUser> finSysTenantUsers) {
|
List<Object[]> parameters = new ArrayList<>();
|
for (FinSysTenantUser finSysTenantUser : finSysTenantUsers) {
|
Object[] one = null;
|
for (long roleId : finSysTenantUser.getRoleList()) {
|
one = new Object[2];
|
one[0] = finSysTenantUser.getSysUserId();
|
one[1] = roleId;
|
parameters.add(one);
|
}
|
}
|
|
this.execBatchUpdate(SQL_INSERT_ROLE_USER, parameters);
|
}
|
|
/**
|
* 批量删除用户角色
|
*
|
* @param userId
|
*/
|
@Override
|
public void execDelRoleUserList(Long userId) {
|
List<Object[]> parameters = new ArrayList<>();
|
Object[] one = new Object[1];
|
one[0] = userId;
|
parameters.add(one);
|
this.execBatchUpdate(SQL_DELETE_ROLE_USER, parameters);
|
}
|
|
/**
|
* 根据userCode查询重复。
|
*
|
* @param userCode 用户登录标识
|
* @return
|
*/
|
@Override
|
public FinSysTenantUser getByUserCode(String userCode) {
|
Map<String, Object> parameter = new HashMap<>();
|
StringBuilder sql = new StringBuilder(SQL_SELECT_USER_CODE);
|
sql.append("and USER_CODE= :userCode");
|
parameter.put("userCode", userCode);
|
FinSysTenantUser finSysTenantUser = this.get(sql.toString(), parameter, new FinSysTenantUser());
|
return finSysTenantUser;
|
}
|
|
/**
|
* 根据USERID查询角色
|
*
|
* @param userId
|
* @return
|
*/
|
@Override
|
public List<S_role> getRoleBySysUserId(Long userId) {
|
Map<String, Object> parameter = new HashMap<>();
|
StringBuilder sql = new StringBuilder("SELECT * FROM S_ROLE where ");
|
sql.append("ROLE_ID IN (SELECT DISTINCT(ROLE_ID) FROM S_ROLE_USER WHERE USER_ID= :userId )");
|
parameter.put("userId", userId);
|
List<S_role> select = this.select(sql.toString(), parameter, new S_role());
|
return select;
|
}
|
|
/**
|
* 查询所有角色列表
|
*
|
* @return
|
*/
|
@Override
|
public List<S_role> getRoleAll() {
|
Map<String, Object> parameter = new HashMap<>();
|
StringBuilder sql = new StringBuilder(SQL_SELECT_USER_ID);
|
List<S_role> select = this.select(sql.toString(), parameter, new S_role());
|
return select;
|
}
|
|
@Override
|
public List<S_dept> selectDept(String deptName) {
|
StringBuilder sqlStr = new StringBuilder(SQL_DEPT_ROLES);
|
Map<String, Object> paramts = new HashMap<>();
|
sqlStr.append(" and dept_name =:dept_name");
|
paramts.put("dept_name", deptName);
|
List<S_dept> orgDeptList = this.select(sqlStr.toString(), paramts, new S_dept());
|
return orgDeptList;
|
}
|
|
/**
|
* @Description 根据OrgId获取用户信息
|
* @Author wh
|
* @Date 2023/10/4 15:49
|
*/
|
@Override
|
public List<FinSysTenantUser> getByOrgId(Long orgId) {
|
return this.select(SQL_GET_USER, new Object[] {orgId}, new FinSysTenantUser());
|
}
|
|
@Override
|
public GenericPager<S_role> queryPageRoleList(Long orgId, Integer status, String roleName, Integer dataScope,
|
Integer pageNum, Integer pageSize) {
|
Map<String, Object> parameters = new HashMap();
|
StringBuilder sql = new StringBuilder("select * from s_role where org_id=:orgId");
|
parameters.put("orgId", orgId);
|
if (status >= 0) {
|
sql.append(" and status=:status");
|
parameters.put("status", status);
|
}
|
|
if (dataScope != null) {
|
sql.append(" and data_scope >=:dataScope");
|
parameters.put("dataScope", dataScope);
|
}
|
|
if (com.walker.infrastructure.utils.StringUtils.isNotEmpty(roleName)) {
|
sql.append(" and role_name like :roleName");
|
parameters.put("roleName", "%" + roleName + "%");
|
}
|
|
return this.selectSplit(sql.toString(), parameters, pageNum, pageSize, new S_role());
|
}
|
|
@Override
|
public FinSysTenantUser getByTenaniId(String tenantId,String userCode) {
|
Map<String, Object> parameter = new HashMap<>();
|
StringBuilder sql = new StringBuilder(SQL_SELECT_USER_CODE);
|
sql.append(" and TENANT_ID= :tenantId");
|
parameter.put("tenantId", tenantId);
|
sql.append(" and USER_CODE= :userCode");
|
parameter.put("userCode", userCode);
|
FinSysTenantUser finSysTenantUser = this.get(sql.toString(), parameter, new FinSysTenantUser());
|
return finSysTenantUser;
|
}
|
}
|