package com.product.admin.service;
|
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.google.common.collect.Maps;
|
import com.product.admin.config.CmnConst;
|
import com.product.common.lang.StringUtils;
|
import com.product.core.cache.util.RedisUtil;
|
import com.product.core.config.Global;
|
import com.product.core.entity.DataTableEntity;
|
import com.product.core.exception.BaseException;
|
import com.product.core.service.support.AbstractBaseService;
|
import com.product.core.spring.context.SpringMVCContextHolder;
|
import com.product.core.websocket.util.MessageHttpSocketServer;
|
import com.product.module.sys.entity.SystemUser;
|
import com.product.module.sys.service.UserService;
|
import com.product.util.BaseUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Map;
|
|
|
/**
|
* @Author cheng
|
* @Description 登录初始参数
|
* @Date 2021/10/27 16:22
|
* @Version 1.0
|
*/
|
@Service
|
public class LoginInitParameterService extends AbstractBaseService {
|
|
@Autowired
|
UserService userService;
|
@Autowired
|
@Qualifier("userOperService")
|
com.product.admin.service.UserService userOperaService;
|
|
|
public String getLoginParameter() throws Exception {
|
SystemUser user = SpringMVCContextHolder.getCurrentUser();
|
String clientType = user.getClientType();
|
if (user != null) {
|
Map<String, Object> result = Maps.newHashMap();
|
//app 不返回 门户 以及消息服务器地址信息
|
if (!"App".equals(clientType)) {
|
String org_level_uuid = user.getOrg_level_uuid();
|
String dept_uuid = user.getDept_uuid();
|
String post_uuid = user.getPost();
|
int user_id = user.getUser_id();
|
String roles = user.getRoles();
|
result.put("portal", getPortal(user_id, org_level_uuid, dept_uuid, post_uuid, roles));
|
result.put("messageServerIp", MessageHttpSocketServer.getMEssageServerIp());
|
result.put("messageServerPort", Global.getSystemConfig("message.server.port", Global.getSystemConfig("server.port", "9998")));
|
}
|
result.put("user", getUserInfo(user, ""));
|
StringBuilder reg = new StringBuilder();
|
String fileTypes = Global.getSystemConfig("allowed_file_type", "");
|
if (!com.product.common.lang.StringUtils.isEmpty(fileTypes)) {
|
reg.append("/\\.(");
|
reg.append(fileTypes.replaceAll(",", "|"));
|
reg.append(")$/i");
|
result.put("file_type_restriction", reg.toString());
|
}
|
return BaseUtil.success(result);
|
}
|
|
throw new Exception("获取用户信息失败");
|
}
|
|
/**
|
* 登录返回用户信息
|
*
|
* @param user
|
* @return json 对象
|
*/
|
public JSONObject getUserInfo(SystemUser user, Object themeMode) throws BaseException {
|
JSONObject ui = new JSONObject();
|
ui.put("enableOnlineEdit", Global.getPropertyToBoolean("enable.online.edit", "false"));
|
ui.put("clientType", user.getClientType());
|
ui.put("uuid", user.getUuid());
|
ui.put("org_level_all", user.getCurrentCompany().getValue(CmnConst.ORG_LEVEL_ALL));
|
ui.put(CmnConst.CLIENT_NAME, user.getCurrentCustomer().getString(CmnConst.CLIENT_NAME));
|
if (user.getCurrentManager() != null) {
|
ui.put("clientUuid", user.getCurrentManager().getString("clients_uuid"));
|
} else {
|
ui.put("clientUuid", user.getClient_uuid());
|
}
|
if (user.getCurrentStaff() != null) {
|
ui.put("sex", user.getCurrentStaff().getString("sex"));
|
ui.put("preferred_name", user.getCurrentStaff().getString("preferred_name"));
|
ui.put("job_post_name", user.getCurrentStaff().getString("job_post_name"));
|
ui.put("staff_code", user.getCurrentStaff().getString("staff_code"));
|
ui.put("staff_avatar", user.getCurrentStaff().getString("staff_avatar"));
|
ui.put("leader_tricode", user.getCurrentStaff().getString("leader_tricode"));//领导编码
|
}
|
if (user.getCurrentCustomer() != null) {
|
ui.put("client_role_uuid", user.getCurrentCustomer().getString("role_uuid"));
|
}
|
// if (user.getCurrentCompany() != null) {
|
// ui.put("company_logo_addr", userService.loadCompanyLogo(user.getCurrentCompany(), themeMode));
|
// }
|
if (user.getCurrentDept() != null) {
|
ui.put("dept_name", user.getCurrentDept().getString("org_level_name"));
|
ui.put("dept_uuid", user.getCurrentDept().getString("uuid"));
|
ui.put("dept_all_name", user.getCurrentDept().getString("org_level_all"));
|
ui.put("dept_code", user.getCurrentDept().getString("org_level_code"));
|
}
|
ui.put("user_signature", RedisUtil.get(userOperaService.USER_SIGNATURE_KEY + user.getUser_id()));
|
ui.put("user_primary_email", user.getUser_primary_email());
|
ui.put("user_id", user.getUser_id());
|
ui.put("is_signature", RedisUtil.exists(userOperaService.USER_SIGNATURE_KEY + user.getUser_id()));
|
ui.put("org_level_code", user.getOrg_level_code());
|
ui.put("org_level_uuid", user.getOrg_level_uuid());
|
ui.put("org_level_name", user.getOrg_level_name());
|
ui.put("post_uuid", user.getPost());
|
ui.put("post_name", user.getJobPost() != null ? user.getJobPost().getObject("job_post_name") : "");
|
ui.put("roles", user.getRoles());
|
ui.put("userType", user.getUserType());
|
ui.put(CmnConst.USER_ACCOUNT, user.getUser_account());
|
ui.put("user_name", user.getUser_name());
|
ui.put("dept_name", user.getCurrentDept() != null ? user.getCurrentDept().getString("org_level_name") : "");
|
if (org.apache.commons.lang3.StringUtils.isEmpty(user.getThumbnail_img())) {
|
ui.put("thumbnail_img", "");
|
} else {
|
ui.put("thumbnail_img", user.getThumbnail_img());
|
ui.put("user_avatar", userOperaService.getUserAvatar(user.getUser_id() + ""));
|
}
|
|
return ui;
|
}
|
|
/**
|
* 获取门户信息
|
*
|
* @return
|
*/
|
private JSONArray getPortal(int user_id, String org_level_uuid, String dept_uuid, String post_uuid, String role_uuid) {
|
String[] filters = {getOrganizingFilter(user_id, 4),
|
getOrganizingFilter(post_uuid, 3),
|
getOrganizingFilter(dept_uuid, 2),
|
getOrganizingFilter(org_level_uuid, 1)};
|
DataTableEntity dt = getBaseDao().listTable(CmnConst.PRODUCT_SYS_PORTALS,
|
getPortalFilter(filters, role_uuid), new Object[]{CmnConst.PRODUCT_SYS_ORG_CLIENT_UUID_VALUE}, new Object[]{"uuid,portal_name,permission"}, CmnConst.SEQUENCE);
|
return BaseUtil.dataTableEntityToJson(dt);
|
}
|
|
/**
|
* 获取门户条件
|
*
|
* @return
|
*/
|
private String getPortalFilter(Object[] filters, String role_uuid) {
|
String filter = BaseUtil.buildQuestionMarkLikeFilter("concat(',',permission,',')", filters, "%", "%");
|
filter += " OR " + BaseUtil.buildQuestionMarkLikeFilter("concat(',',role_uuid,',')", role_uuid.split(","), "%", "%");
|
return "(" + filter + ") AND ((length(permission)>0 OR length(role_uuid)>0)) AND is_use=1 OR UUID =?";
|
}
|
|
/**
|
* 替换组织机构
|
*
|
* @param val
|
* @param type 1 = 公司 2 = 部门 3 = 岗位 4 = 人
|
* @return
|
*/
|
private String getOrganizingFilter(Object val, int type) {
|
if (StringUtils.isEmpty(val) || type < 1 || type > 4) {
|
// 系统自带公司的uuid 预估表中 permission 字段没有这个数据出现
|
return CmnConst.PRODUCT_SYS_ORG_CLIENT_UUID_VALUE;
|
}
|
String[] template = {"", "{val}", "[val]", "(val)", "<val>"};
|
return template[type].replace("val", String.valueOf(val));
|
}
|
|
}
|