Commit 0e651e38 authored by danfuman's avatar danfuman

Merge branch 'V20230915' of http://192.168.60.201/root/dsk-operate-sys into V20230915

parents 0dbd8f7e 5dd4842d
......@@ -12,8 +12,11 @@ import cn.hutool.core.util.ReUtil;
import com.dsk.common.constant.Constants;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.core.domain.R;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.jsk.util.IpUtil;
import com.dsk.system.domain.SysMenu;
import com.dsk.system.domain.SysUser;
import com.dsk.common.core.domain.model.EmailLoginBody;
......@@ -64,23 +67,18 @@ public class SysLoginController {
@SaIgnore
@PostMapping("/login")
public R<LoginVo> login(@Validated @RequestBody LoginBody loginBody, HttpServletRequest request) {
// Map<String, Object> ajax = new HashMap<>();
// 生成令牌
// LoginVo loginVo = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
// loginBody.getUuid());
// ajax.put(Constants.TOKEN, token);
// return R.ok(ajax);
LoginVo loginVo=loginService.passwordLogin(loginBody);
String ipAddr = IpUtil.getIpAddr(request);
LoginVo loginVo = loginService.passwordLogin(loginBody, ipAddr);
return R.ok(loginVo);
}
// /**
// * 发送短信验证码
// *
......@@ -107,20 +105,18 @@ public class SysLoginController {
@PostMapping("/smsLogin")
public R<LoginVo> smsLogin(@Validated @RequestBody SmsLoginBody smsLoginBody) {
// 生成令牌
LoginVo loginVo=loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
LoginVo loginVo = loginService.smsLogin(smsLoginBody.getPhonenumber(), smsLoginBody.getSmsCode());
return R.ok(loginVo);
}
/**
* 动态切换租户
*
*/
@SaCheckLogin
@PostMapping("/switch/tenant")
public R<LoginVo> switchTenant(String tenantId) {
LoginVo loginVo=loginService.switchTenant(tenantId);
LoginVo loginVo = loginService.switchTenant(tenantId);
return R.ok(loginVo);
}
......@@ -134,7 +130,7 @@ public class SysLoginController {
@PostMapping("/user/tenants")
public R<List<SysTenantVo>> userTenants() {
LoginUser loginUser = LoginHelper.getLoginUser();
List<SysTenantVo> tenantList=loginService.tenantListByAccount(loginUser.getUserPhone());
List<SysTenantVo> tenantList = loginService.tenantListByAccount(loginUser.getUserPhone());
return R.ok(tenantList);
}
......@@ -146,12 +142,12 @@ public class SysLoginController {
*/
@SaIgnore
@PostMapping("/user/tenant/list")
public R<List<SysTenantVo>> userTenantList (String phone) {
if(!ReUtil.isMatch(RegexPool.MOBILE, phone)) {
public R<List<SysTenantVo>> userTenantList(String phone) {
if (!ReUtil.isMatch(RegexPool.MOBILE, phone)) {
return R.ok(new ArrayList<>());
}
List<SysTenantVo> tenantList=loginService.tenantListByAccount(phone);
if(CollectionUtil.isNotEmpty(tenantList)){
List<SysTenantVo> tenantList = loginService.tenantListByAccount(phone);
if (CollectionUtil.isNotEmpty(tenantList)) {
for (SysTenantVo sysTenantVo : tenantList) {
sysTenantVo.setCompanyName("");
}
......@@ -161,21 +157,23 @@ public class SysLoginController {
/**
* 获取当前用户默认租户
*
* @return
*/
@SaCheckLogin
@PostMapping("/user/default/tenant")
public R<Map> userDefaultTenant() {
LoginUser loginUser = LoginHelper.getLoginUser();
Assert.notNull(loginUser,"用户信息不存在!");
Assert.notNull(loginUser, "用户信息不存在!");
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone();
String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey);
return R.ok(MapUtil.of("tenantId",defaultTenant));
return R.ok(MapUtil.of("tenantId", defaultTenant));
}
/**
* 获取当前用户默认租户
*
* @return
*/
@SaIgnore
......@@ -185,7 +183,7 @@ public class SysLoginController {
// Assert.notNull(loginUser,"用户信息不存在!");
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + phone;
String defaultTenant = RedisUtils.getCacheObject(defaultTenantKey);
return R.ok(MapUtil.of("tenantId",defaultTenant));
return R.ok(MapUtil.of("tenantId", defaultTenant));
}
/**
......@@ -235,8 +233,13 @@ public class SysLoginController {
* @return 用户信息
*/
@GetMapping("getInfo")
public R<Map<String, Object>> getInfo() {
public R<Map<String, Object>> getInfo(HttpServletRequest request) {
LoginUser loginUser = LoginHelper.getLoginUser();
//校验当前发请求的IP与登录账号的IP是否相同
String loginUserIpaddr = loginUser.getIpaddr();
if (StringUtils.isNotBlank(loginUserIpaddr) && !Objects.equals(IpUtil.getIpAddr(request), loginUserIpaddr)) {
throw new ServiceException("该账号已在其他地方登录,请求失败!", 401);
}
SysUser user = userService.selectUserById(loginUser.getUserId());
Map<String, Object> ajax = new HashMap<>();
ajax.put("user", user);
......
......@@ -49,9 +49,9 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://47.104.91.229:3306/dsk_operate?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dev
password: zfTFIJjaN#6xB83r
url: jdbc:mysql://120.46.64.239:3306/dsk_operate?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dskdev
password: encPHwi8dbKeL8ZX
# 从库数据源
# slave:
# lazy: true
......@@ -101,7 +101,7 @@ spring:
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
spring:
redis:
host: 139.9.157.49
host: 120.46.64.239
# 端口,默认为6379
port: 6379
# 数据库索引
......
......@@ -108,7 +108,7 @@ spring:
# 端口,默认为6379
port: 6379
# 数据库索引
database: 6
database: 13
# 密码
password: Xi8$r*@d7zn5FaP2
# 密码(如没有密码请注释掉)
......
......@@ -105,7 +105,7 @@ spring:
# 端口,默认为6379
port: 6379
# 数据库索引
database: 10
database: 13
# 密码
password: zfTFIJjaN#6xB83r
# 密码(如没有密码请注释掉)
......
......@@ -30,7 +30,7 @@ public class LoginBody {
* 用户密码
*/
@NotBlank(message = "{user.password.not.blank}")
@Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}")
//@Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}")
private String password;
/**
......
package com.dsk.common.core.domain.model;
import com.dsk.common.constant.UserConstants;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 用户注册对象
......@@ -11,7 +15,16 @@ import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class RegisterBody extends LoginBody {
/**
* 用户密码
*/
@NotBlank(message = "{user.password.not.blank}")
@Length(min = UserConstants.PASSWORD_MIN_LENGTH, max = UserConstants.PASSWORD_MAX_LENGTH, message = "{user.password.length.valid}")
private String password;
/**
* 用户类型
*/
private String userType;
}
......@@ -116,7 +116,8 @@ public class FileUploadUtils
// String fileName = extractFilename(file);
// String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
String absPath = getAbsoluteFile(baseDir, file.getOriginalFilename()).getAbsolutePath();
String fileName = new String(file.getOriginalFilename().getBytes("ISO-8859-1"), "UTF-8");
String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
file.transferTo(Paths.get(absPath));
// return getPathFileName(baseDir, fileName);
return baseDir+file.getOriginalFilename();
......
......@@ -78,7 +78,7 @@ public class BusinessFileController extends BaseController {
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request) {
try {
//获取文件名
String filename = file.getOriginalFilename();
String filename = new String(file.getOriginalFilename().getBytes("ISO-8859-1"),"UTF-8");
String businessFileName = request.getHeader("FilePath");
// 上传文件路径
String filePath = FileUploadUtils.getDefaultBaseDir() + businessFileName + "/";
......
......@@ -78,6 +78,7 @@ public class RegionalEconomicDataController {
@PostMapping(value = "location")
public AjaxResult location(@RequestBody OpRegionalLocalDto vo, HttpServletRequest request){
String ip = IpUtil.getIpAddr(request);
log.info("location=====================================================>" +ip);
vo.setIp(ip);
return economicService.location(vo);
}
......
......@@ -27,6 +27,10 @@ public class JskCombineSearchDto implements Serializable {
* 筛选参数
*/
private String searchValue;
/**
* 筛选参数
*/
private String keys;
/**
* 集团层级
*/
......@@ -59,6 +63,10 @@ public class JskCombineSearchDto implements Serializable {
* 科技型企业类型
*/
private List<String> companyTypes;
/**
* 招标采购分类
*/
private List<String> subjectMatters;
/**
* 企业类型
*/
......
......@@ -158,7 +158,9 @@ public class ExportService {
Map<String, Object> dataMap = CommonUtils.assertAsMap(obj);
vo.setId(i++);
vo.setCompanyName(MapUtil.getStr(dataMap, "companyName"));
if (null!=pageDto.getKeys()){
vo.setCompanyName(MapUtil.getStr(dataMap, "companyName"));
}
StringBuilder domicile = new StringBuilder();
if (null != dataMap.get("province")) {
domicile.append(MapUtil.getStr(dataMap,"province"));
......
......@@ -13,4 +13,7 @@ VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 子系统地址
# VUE_APP_SUB_SYSTEM_ADDRESS = "https://pre-plug.jiansheku.com"
VUE_APP_SUB_SYSTEM_ADDRESS = "http://192.168.60.104:3400"
\ No newline at end of file
VUE_APP_SUB_SYSTEM_ADDRESS = "http://192.168.60.104:3400"
# Bi大屏系统地址
VUE_APP_BI_SYSTEM_ADDRESS = "https://192.168.60.104:8001"
\ No newline at end of file
......@@ -9,3 +9,6 @@ VUE_APP_BASE_API = 'https://szhapi.jiansheku.com'
# 子系统地址
VUE_APP_SUB_SYSTEM_ADDRESS = "https://plug.jiansheku.com"
# Bi大屏系统地址
VUE_APP_BI_SYSTEM_ADDRESS = "https://192.168.60.104:8001"
......@@ -12,4 +12,7 @@ ENV = 'test'
VUE_APP_BASE_API = '/prod-api'
# 子系统地址
VUE_APP_SUB_SYSTEM_ADDRESS = "https://pre-plug.jiansheku.com"
\ No newline at end of file
VUE_APP_SUB_SYSTEM_ADDRESS = "https://pre-plug.jiansheku.com"
# Bi大屏系统地址
VUE_APP_BI_SYSTEM_ADDRESS = "https://192.168.60.104:8001"
\ No newline at end of file
import request from '@/utils/request'
import request from '@/utils/request';
// 查询参数列表
export function listConfig(query) {
......@@ -6,7 +6,7 @@ export function listConfig(query) {
url: '/system/config/list',
method: 'get',
params: query
})
});
}
// 查询参数详细
......@@ -14,7 +14,7 @@ export function getConfig(configId) {
return request({
url: '/system/config/' + configId,
method: 'get'
})
});
}
// 根据参数键名查询参数值
......@@ -22,7 +22,7 @@ export function getConfigKey(configKey) {
return request({
url: '/system/config/configKey/' + configKey,
method: 'get'
})
});
}
// 新增参数配置
......@@ -31,7 +31,7 @@ export function addConfig(data) {
url: '/system/config',
method: 'post',
data: data
})
});
}
// 修改参数配置
......@@ -40,9 +40,23 @@ export function updateConfig(data) {
url: '/system/config',
method: 'put',
data: data
})
});
}
// 新增租户参数配置
export const addTenantConfig = (data) => request({
url: "/system/config/tenant/add",
method: "post",
data
});
// 修改租户参数配置
export const updateTenantConfig = (data) => request({
url: "/system/config/tenant/add",
method: "put",
data
});
// 修改参数配置
export function updateConfigByKey(key, value) {
return request({
......@@ -52,7 +66,7 @@ export function updateConfigByKey(key, value) {
configKey: key,
configValue: value
}
})
});
}
// 删除参数配置
......@@ -60,7 +74,7 @@ export function delConfig(configId) {
return request({
url: '/system/config/' + configId,
method: 'delete'
})
});
}
// 刷新参数缓存
......@@ -68,6 +82,6 @@ export function refreshCache() {
return request({
url: '/system/config/refreshCache',
method: 'delete'
})
});
}
import Cookies from 'js-cookie'
import Cookies from 'js-cookie';
const TokenKey = 'Admin-Token'
const Tenantid = 'Tenantid'
const TokenKey = 'Admin-Token';
const Tenantid = 'Tenantid';
export function getToken() {
return Cookies.get(TokenKey)
return Cookies.get(TokenKey);
}
export function getTenantid() {
return Cookies.get(Tenantid)
return Cookies.get(Tenantid);
}
export function setToken(token) {
return Cookies.set(TokenKey, token)
return Cookies.set(TokenKey, token);
}
export function setTenantid(id) {
return Cookies.set(Tenantid, id)
return Cookies.set(Tenantid, id);
}
export function removeToken() {
return Cookies.remove(TokenKey)
return Cookies.remove(TokenKey);
}
export function removeTenantid() {
return Cookies.remove(Tenantid)
return Cookies.remove(Tenantid);
}
export function setBiAuth(token) {
if (!token) return false;
sessionStorage.setItem("DSK_SYSTEM_AUTH_TOKEN", token);
return true;
}
<script>
import { getToken } from "@/utils/auth";
export default {
name: "bi",
data() {
return {
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
async closeOuterTab() {
await this.$nextTick();
this.$tab.closePage();
}
},
render(h) {
const token = getToken();
if (!token) {
this.$message.warning("获取auth令牌失败");
this.closeOuterTab();
return;
}
window.open(`${process.env.VUE_APP_BI_SYSTEM_ADDRESS}?DSK_SYSTEM_AUTH_TOKEN=${token}`, "DSK_BI_SYSTEM");
this.closeOuterTab();
},
}
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<div class="details-of-cooperation">
<template v-if="!isDetailId">
<div class="cooperate">
......@@ -62,8 +62,8 @@
<div class="addhzqk_from">
<el-form :model="addParam" :rules="rules" ref="addParam" size="small" label-width="70px">
<el-form-item label="项目名称:" prop="projectName" label-width="120px">
<el-input v-model="addParam.projectName" placeholder="请输入项目名称" @input="getCompany1"></el-input>
<div class="resultlist" v-if="showlist1">
<el-input v-model="addParam.projectName" placeholder="请输入项目名称" @input="resetProjectSearch();getCompany1()"></el-input>
<div class="resultlist" v-infinite-scroll="load" v-if="showlist1">
<div v-for="(item,index) in companData1" @click="selCompany1(item.projectName)"><span v-html="item.projectName"></span></div>
</div>
</el-form-item>
......@@ -219,6 +219,9 @@ export default {
//
detailId: null,
isDetailId: false,
projectpage : 1,
isscroll : false,
threshold : false,
}
},
watch:{
......@@ -253,6 +256,12 @@ export default {
},
methods: {
load(){
if(this.threshold) return;
if(this.isscroll){
this.getCompany1()
}
},
handleQuery(params) {
this.list(params)
},
......@@ -309,18 +318,33 @@ export default {
}
});
},
resetProjectSearch() {
this.companData1 = []
this.projectpage = 1
console.log(this.companData1);
},
//获取项目名称
getCompany1(value){
if (value.length>=2){
getCompany1(){
if (this.addParam?.projectName?.length>=2){
this.threshold = true;
let param = {
projectName:value,
projectName:this.addParam?.projectName,
pageSize:20,
pageNum:this.projectpage
}
queryProject(JSON.stringify(param)).then(result=>{
if(result.code != 200)
return
this.showlist1 = true
this.companData1 = result.data
})
if(result.code != 200){
return false
}
if(result.data && result.data?.length) {
this.showlist1 = true;
this.isscroll = true
this.companData1 = [...this.companData,...result.data]
this.projectpage ++;
return;
}
this.isscroll = false;
}).finally(() => this.threshold = false)
}
},
selCompany1(item){
......@@ -632,9 +656,16 @@ export default {
}
::v-deep .cooperate-detail{
width: 100%;
height: 100%;
.miantitle, .app-container{
//margin: 12px 0;
}
}
.details-of-cooperation {
width: 100%;
height: 100%;
}
</style>
......@@ -7,7 +7,7 @@
:partBoxHeight="partBoxHeight" :customerId="customerId" :isCompany="isCompany" :isCustomer="isCustomer" />
</div>
<div class="part-right">
<div id="partBox" v-if="companyId">
<div id="partBox" v-if="companyId" class="part-common-container-style">
<template v-if="isCompany">
<!-- 企业概览 -->
<Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" :isSkeleton="isSkeleton" :companyInfo="companyInfo" />
......@@ -433,5 +433,10 @@ export default {
overflow: auto;
}
}
.part-common-container-style {
width: 100%;
height: 100%;
}
}
</style>
......@@ -476,7 +476,7 @@
import CustomTimeSelect from './component/CustomTimeSelect'
import CustomMoneySelect from './component/CustomMoneySelect'
import skeleton from './component/skeleton'
import { countByCompany,bidRank,bigWinningBidsPage,bigBidPage,getInfo } from '@/api/index'
import { countByCompany,bidRank,bigWinningBidsPage,bigBidPage } from '@/api/index'
import { getUipIdByCid } from '@/api/macro/macro'
import api from '@/api/radar/radar.js';
import { v4 } from "uuid";
......@@ -716,6 +716,11 @@ export default {
inputID11:this.getUid(),
};
},
watch : {
user(newValue) {
this.getPlaceholder();
}
},
created() {
this.getPlaceholder();
this.searchDic()
......@@ -736,11 +741,8 @@ export default {
}).catch(error=>{});
},
getInfo(){
getInfo().then(res=>{
console.log(res)
this.permissions=res.data.permissions;
this.nickName=res.data.user.nickName
}).catch(error=>{});
this.permissions= this.$store.state.user.permissions;
this.nickName= this.$store.state.user.name
},
getCountByCompany(){
let params={};
......
......@@ -226,8 +226,8 @@
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12">
<el-form-item label="用户称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户称" maxlength="30" />
<el-form-item label="用户称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户称" maxlength="30" />
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -373,7 +373,7 @@
</el-table-column>
<el-table-column
prop="nickName"
label="用户称">
label="用户称">
</el-table-column>
<el-table-column
prop="phonenumber"
......@@ -477,7 +477,7 @@ export default {
columns: [
{ key: 0, label: `用户编号`, visible: true },
{ key: 1, label: `用户名称`, visible: true },
{ key: 2, label: `用户称`, visible: true },
{ key: 2, label: `用户称`, visible: true },
{ key: 3, label: `组织`, visible: true },
{ key: 4, label: `手机号码`, visible: true },
{ key: 5, label: `状态`, visible: true },
......@@ -486,7 +486,7 @@ export default {
// 表单校验
rules: {
nickName: [
{ required: true, message: "用户称不能为空", trigger: "blur" }
{ required: true, message: "用户称不能为空", trigger: "blur" }
],
deptId: [
{ required: true, message: "组织不能为空", trigger: "blur" }
......
......@@ -83,9 +83,10 @@ public class SysLoginService {
* 登录验证
*
* @param loginBody 唯一标识
* @param ipAddr IP地址
* @return 结果
*/
public LoginVo passwordLogin(LoginBody loginBody) {
public LoginVo passwordLogin(LoginBody loginBody, String ipAddr) {
String tenantId = loginBody.getTenantId();
String username = loginBody.getUsername();
String password = SaBase64Util.decode(loginBody.getPassword());
......@@ -96,12 +97,12 @@ public class SysLoginService {
validateCaptcha(username, code, uuid);
}
if(ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username);
if(StrUtil.isEmpty(tenantId)&&StrUtil.isNotBlank(defaultTenantId)){
defaultTenantId= checkDefaultTenant(defaultTenantId,username);
tenantId=defaultTenantId;
if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:" + tenantId, username);
if (StrUtil.isEmpty(tenantId) && StrUtil.isNotBlank(defaultTenantId)) {
defaultTenantId = checkDefaultTenant(defaultTenantId, username);
tenantId = defaultTenantId;
}
}
......@@ -119,7 +120,7 @@ public class SysLoginService {
throw new UserException("user.not.exists", username);
}
tenantId = sysUser.getTenantId();
}else {
} else {
SysUser sysUser = sysUsers.get(0);
tenantId = sysUser.getTenantId();
}
......@@ -143,6 +144,7 @@ public class SysLoginService {
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
LoginUser loginUser = buildLoginUser(user);
// 生成token
loginUser.setIpaddr(ipAddr);
LoginHelper.loginByDevice(loginUser, DeviceType.PC);
recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
......@@ -189,13 +191,13 @@ public class SysLoginService {
}
public LoginVo smsLogin(String username, String smsCode) {
String tenantId=null;
if(ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:"+tenantId, username);
if(StrUtil.isNotBlank(defaultTenantId)){
defaultTenantId= checkDefaultTenant(defaultTenantId,username);
tenantId=defaultTenantId;
String tenantId = null;
if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
String defaultTenantId = RedisUtils.getCacheObject(GlobalConstants.PHONE_DEFAULT_TENANT + username);
log.info("登录用户:{} 获取缓存默认租户:" + tenantId, username);
if (StrUtil.isNotBlank(defaultTenantId)) {
defaultTenantId = checkDefaultTenant(defaultTenantId, username);
tenantId = defaultTenantId;
}
}
......@@ -213,7 +215,7 @@ public class SysLoginService {
throw new UserException("user.not.exists", username);
}
tenantId = sysUser.getTenantId();
}else {
} else {
SysUser sysUser = sysUsers.get(0);
tenantId = sysUser.getTenantId();
}
......@@ -370,9 +372,9 @@ public class SysLoginService {
private SysUser loadUserByUsername(String username) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserName, SysUser::getStatus)
.eq(SysUser::getUserName, username)
.or().eq(SysUser::getPhonenumber, username));
.select(SysUser::getUserName, SysUser::getStatus)
.eq(SysUser::getUserName, username)
.or().eq(SysUser::getPhonenumber, username));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", username);
throw new UserException("user.not.exists", username);
......@@ -385,8 +387,8 @@ public class SysLoginService {
private SysUser loadUserByPhonenumber(String phonenumber) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(SysUser::getPhonenumber, phonenumber));
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(SysUser::getPhonenumber, phonenumber));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", phonenumber);
throw new UserException("user.not.exists", phonenumber);
......@@ -399,8 +401,8 @@ public class SysLoginService {
private SysUser loadUserByEmail(String email) {
SysUser user = userMapper.selectOne(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(SysUser::getEmail, email));
.select(SysUser::getPhonenumber, SysUser::getStatus)
.eq(SysUser::getEmail, email));
if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", email);
throw new UserException("user.not.exists", email);
......@@ -509,14 +511,14 @@ public class SysLoginService {
log.info("登录企业:{} 已被停用.", tenant.getCompanyName());
throw new TenantException("company.blocked");
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
&& new Date().after(tenant.getExpireTime())) {
&& new Date().after(tenant.getExpireTime())) {
log.info("登录企业:{} 已超过有效期.", tenant.getCompanyName());
throw new TenantException("company.expired");
}
}
public String checkDefaultTenant(String tenantId,String phoneNumber) {
public String checkDefaultTenant(String tenantId, String phoneNumber) {
if (!TenantHelper.isEnable()) {
return null;
}
......@@ -557,16 +559,16 @@ public class SysLoginService {
if (ReUtil.isMatch(RegexPool.MOBILE, username)) {
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId,SysUser::getDelFlag)
.eq(SysUser::getPhonenumber, username)
.orderByDesc(SysUser::getUserId);
.select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId, SysUser::getDelFlag)
.eq(SysUser::getPhonenumber, username)
.orderByDesc(SysUser::getUserId);
// sysUsers = userMapper.selectUserByTenantPhone(username);
sysUsers = userMapper.selectList(lqw);
} else {
LambdaQueryWrapper<SysUser> lqw = new LambdaQueryWrapper<SysUser>()
.select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId)
.eq(SysUser::getUserName, username)
.orderByDesc(SysUser::getUserId);
.select(SysUser::getUserName, SysUser::getStatus, SysUser::getTenantId)
.eq(SysUser::getUserName, username)
.orderByDesc(SysUser::getUserId);
// sysUsers = userMapper.selectUserByTenantUsername(username);
sysUsers = userMapper.selectList(lqw);
}
......@@ -582,10 +584,10 @@ public class SysLoginService {
Assert.notNull(userId, "企业切换失败!");
// 如果 切换租户和当前登录租户一致,仅保存默认租户
LoginUser loginUserVo = LoginHelper.getLoginUser();
if(tenantId.equals(loginUserVo.getTenantId())){
if (tenantId.equals(loginUserVo.getTenantId())) {
//保存当前账号的默认租户
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUserVo.getUserPhone();
RedisUtils.setCacheObject(defaultTenantKey,tenantId, Duration.ofDays(90));
RedisUtils.setCacheObject(defaultTenantKey, tenantId, Duration.ofDays(90));
LoginVo loginVo = new LoginVo();
loginVo.setTenantId(TenantHelper.getTenantId());
loginVo.setAccessToken(StpUtil.getTokenValue());
......@@ -618,10 +620,10 @@ public class SysLoginService {
LoginHelper.loginByDevice(loginUser, DeviceType.PC);
log.info("当前租户由"+sysUser.getTenantId()+"切换为"+tenantId);
log.info("当前租户由" + sysUser.getTenantId() + "切换为" + tenantId);
//保存当前账号的默认租户
String defaultTenantKey = GlobalConstants.PHONE_DEFAULT_TENANT + loginUser.getUserPhone();
RedisUtils.setCacheObject(defaultTenantKey,tenantId, Duration.ofDays(90));
RedisUtils.setCacheObject(defaultTenantKey, tenantId, Duration.ofDays(90));
recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
recordLoginInfo(user.getUserId(), username);
......
......@@ -21,6 +21,7 @@ import com.dsk.common.core.service.UserService;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.DataBaseHelper;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils;
......@@ -465,7 +466,6 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
SysRole adminRole = roleMapper.selectOne(new LambdaQueryWrapper<SysRole>()
.select(SysRole::getRoleId)
.eq(SysRole::getStatus, UserConstants.USER_NORMAL)
.eq(SysRole::getDelFlag, UserConstants.USER_NORMAL)
.eq(SysRole::getRoleKey, TenantConstants.TENANT_SUPER_ADMIN_ROLE_KEY));
//如果目前企业管理员角色下仅有1个账号
List<Long> userIds = userRoleMapper.selectUserIdsByRoleId(adminRole.getRoleId());
......@@ -650,8 +650,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
for (Long userId : userIds) {
checkUserAllowed(new SysUser(userId));
checkUserDataScope(userId);
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(baseMapper.selectUserById(userId));
if (LoginHelper.isTenantAdmin()) {
checkAdminHasUsers(baseMapper.selectUserById(userId));
}
}
List<Long> ids = Arrays.asList(userIds);
......
......@@ -11,6 +11,7 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.system.domain.SysConfig;
import com.dsk.system.mapper.SysConfigMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.ObjectUtils;
......@@ -19,6 +20,7 @@ import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
public class DskOpenApiUtil {
......@@ -72,6 +74,7 @@ public class DskOpenApiUtil {
try {
if (ObjectUtils.isEmpty(config)) initApiConfig();
AccClient.init(config);
log.error(">>>>>>config:"+JSONUtil.toJsonStr(config));
Map<String, ?> res = AccClient.request(reqBodyType, path, bodyMap);
if (!res.containsKey("headers") || !res.containsKey("body")) {
throw new RuntimeException(String.format("请求无返回:path=%s", path));
......@@ -127,6 +130,7 @@ public class DskOpenApiUtil {
SysConfig accessKeyId = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-Appkey"));
SysConfig accessKeySecret = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-AppSecret"));
SysConfig endPoint = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-Domain"));
log.error(">>>>>>config:"+JSONUtil.toJsonStr(config));
config = new Config(accessKeyId.getConfigValue(), accessKeySecret.getConfigValue())
.setEndpoint(endPoint.getConfigValue());
});
......
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