Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-cr20g
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
dsk-cr20g
Commits
376e6c9d
Commit
376e6c9d
authored
Sep 08, 2023
by
danfuman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'zuhuduan' of
http://192.168.60.201/root/dsk-operate-sys
into zuhuduan
parents
efacb40a
5a527799
Changes
22
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
366 additions
and
100 deletions
+366
-100
DskOperateSysApplication.java
...admin/src/main/java/com/dsk/DskOperateSysApplication.java
+2
-0
SysLoginController.java
...ava/com/dsk/web/controller/system/SysLoginController.java
+38
-29
SysTenantController.java
...va/com/dsk/web/controller/system/SysTenantController.java
+4
-4
TenantTimerTask.java
...n/src/main/java/com/dsk/web/schedule/TenantTimerTask.java
+32
-0
messages_zh_CN.properties
dsk-admin/src/main/resources/i18n/messages_zh_CN.properties
+1
-1
Excel.java
...common/src/main/java/com/dsk/common/annotation/Excel.java
+1
-1
StringUtils.java
...ommon/src/main/java/com/dsk/common/utils/StringUtils.java
+2
-0
ImportantProjectExportVo.java
.../java/com/dsk/jsk/domain/vo/ImportantProjectExportVo.java
+48
-0
JskCombineInfoService.java
.../main/java/com/dsk/jsk/service/JskCombineInfoService.java
+3
-1
BusinessOpportunityRadarController.java
...search/controller/BusinessOpportunityRadarController.java
+33
-0
BusinessOpportunityRadarService.java
...m/dsk/search/service/BusinessOpportunityRadarService.java
+62
-0
index.vue
dsk-operate-ui/src/layout/components/TagsView/index.vue
+4
-1
request.js
dsk-operate-ui/src/utils/request.js
+1
-1
index.vue
dsk-operate-ui/src/views/enterpriseManagement/index.vue
+14
-12
programme.vue
dsk-operate-ui/src/views/enterpriseManagement/programme.vue
+3
-3
login.vue
dsk-operate-ui/src/views/login.vue
+11
-7
index.vue
dsk-operate-ui/src/views/system/dept/index.vue
+32
-24
index.vue
dsk-operate-ui/src/views/system/user/index.vue
+7
-4
ISysTenantService.java
...c/main/java/com/dsk/system/service/ISysTenantService.java
+6
-0
SysLoginService.java
...src/main/java/com/dsk/system/service/SysLoginService.java
+40
-11
ISysTenantPackageServiceImpl.java
...dsk/system/service/impl/ISysTenantPackageServiceImpl.java
+2
-1
ISysTenantServiceImpl.java
...va/com/dsk/system/service/impl/ISysTenantServiceImpl.java
+20
-0
No files found.
dsk-admin/src/main/java/com/dsk/DskOperateSysApplication.java
View file @
376e6c9d
...
...
@@ -3,6 +3,7 @@ package com.dsk;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
/**
* 启动程序
...
...
@@ -11,6 +12,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
*/
@SpringBootApplication
@EnableScheduling
public
class
DskOperateSysApplication
{
public
static
void
main
(
String
[]
args
)
{
...
...
dsk-admin/src/main/java/com/dsk/web/controller/system/SysLoginController.java
View file @
376e6c9d
...
...
@@ -3,6 +3,7 @@ package com.dsk.web.controller.system;
import
cn.dev33.satoken.annotation.SaCheckLogin
;
import
cn.dev33.satoken.annotation.SaIgnore
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.lang.Assert
;
import
cn.hutool.core.lang.RegexPool
;
import
cn.hutool.core.map.MapUtil
;
...
...
@@ -80,6 +81,38 @@ public class SysLoginController {
// /**
// * 发送短信验证码
// *
// * @param phones 电话号
// * @param templateId 模板ID
// */
// @SaIgnore
// @GetMapping("/send/sms/code")
// public R<Object> sendAliyun(String phones, String templateId) {
// LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
// map.put("code", RandomUtil.randomNumbers(4));
// SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
// SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
// return R.ok(smsResponse);
// }
/**
* 短信登录
*
* @param smsLoginBody 登录信息
* @return 结果
*/
@SaIgnore
@PostMapping
(
"/smsLogin"
)
public
R
<
LoginVo
>
smsLogin
(
@Validated
@RequestBody
SmsLoginBody
smsLoginBody
)
{
// 生成令牌
LoginVo
loginVo
=
loginService
.
smsLogin
(
smsLoginBody
.
getPhonenumber
(),
smsLoginBody
.
getSmsCode
());
return
R
.
ok
(
loginVo
);
}
/**
* 动态切换租户
*
...
...
@@ -118,6 +151,11 @@ public class SysLoginController {
return
R
.
ok
(
new
ArrayList
<>());
}
List
<
SysTenantVo
>
tenantList
=
loginService
.
tenantListByAccount
(
phone
);
if
(
CollectionUtil
.
isNotEmpty
(
tenantList
)){
for
(
SysTenantVo
sysTenantVo
:
tenantList
)
{
sysTenantVo
.
setCompanyName
(
""
);
}
}
return
R
.
ok
(
tenantList
);
}
...
...
@@ -150,35 +188,6 @@ public class SysLoginController {
return
R
.
ok
(
MapUtil
.
of
(
"tenantId"
,
defaultTenant
));
}
/**
* 发送短信验证码
*
* @param phones 电话号
* @param templateId 模板ID
*/
@SaIgnore
@GetMapping
(
"/send/sms/code"
)
public
R
<
Object
>
sendAliyun
(
String
phones
,
String
templateId
)
{
LinkedHashMap
<
String
,
String
>
map
=
new
LinkedHashMap
<>(
1
);
map
.
put
(
"code"
,
RandomUtil
.
randomNumbers
(
4
));
SmsBlend
smsBlend
=
SmsFactory
.
createSmsBlend
(
SupplierType
.
ALIBABA
);
SmsResponse
smsResponse
=
smsBlend
.
sendMessage
(
phones
,
templateId
,
map
);
return
R
.
ok
(
smsResponse
);
}
/**
* 短信登录
*
* @param smsLoginBody 登录信息
* @return 结果
*/
@SaIgnore
@PostMapping
(
"/smsLogin"
)
public
R
<
LoginVo
>
smsLogin
(
@Validated
@RequestBody
SmsLoginBody
smsLoginBody
)
{
// 生成令牌
LoginVo
loginVo
=
loginService
.
smsLogin
(
smsLoginBody
.
getPhonenumber
(),
smsLoginBody
.
getSmsCode
());
return
R
.
ok
(
loginVo
);
}
/**
* 邮件登录
*
...
...
dsk-admin/src/main/java/com/dsk/web/controller/system/SysTenantController.java
View file @
376e6c9d
...
...
@@ -84,7 +84,7 @@ public class SysTenantController extends BaseController {
@PostMapping
()
public
R
<
Void
>
add
(
@Validated
(
AddGroup
.
class
)
@RequestBody
SysTenantBo
bo
)
{
if
(!
tenantService
.
checkCompanyNameUnique
(
bo
))
{
return
R
.
fail
(
"新增
租户
'"
+
bo
.
getCompanyName
()
+
"'失败,企业名称已存在"
);
return
R
.
fail
(
"新增
企业
'"
+
bo
.
getCompanyName
()
+
"'失败,企业名称已存在"
);
}
return
toAjax
(
TenantHelper
.
ignore
(()
->
tenantService
.
insertByBo
(
bo
)));
}
...
...
@@ -100,7 +100,7 @@ public class SysTenantController extends BaseController {
public
R
<
Void
>
edit
(
@Validated
(
EditGroup
.
class
)
@RequestBody
SysTenantBo
bo
)
{
tenantService
.
checkTenantAllowed
(
bo
.
getTenantId
());
if
(!
tenantService
.
checkCompanyNameUnique
(
bo
))
{
return
R
.
fail
(
"修改
租户
'"
+
bo
.
getCompanyName
()
+
"'失败,公司名称已存在"
);
return
R
.
fail
(
"修改
企业
'"
+
bo
.
getCompanyName
()
+
"'失败,公司名称已存在"
);
}
return
toAjax
(
tenantService
.
updateByBo
(
bo
));
}
...
...
@@ -162,8 +162,8 @@ public class SysTenantController extends BaseController {
@SaCheckPermission
(
"system:tenant:edit"
)
@Log
(
title
=
"租户"
,
businessType
=
BusinessType
.
UPDATE
)
@GetMapping
(
"/syncTenantPackage"
)
public
R
<
Void
>
syncTenantPackage
(
@NotBlank
(
message
=
"
租户
ID不能为空"
)
String
tenantId
,
@NotNull
(
message
=
"
套餐
ID不能为空"
)
Long
packageId
)
{
public
R
<
Void
>
syncTenantPackage
(
@NotBlank
(
message
=
"
企业
ID不能为空"
)
String
tenantId
,
@NotNull
(
message
=
"
企业方案
ID不能为空"
)
Long
packageId
)
{
return
toAjax
(
TenantHelper
.
ignore
(()
->
tenantService
.
syncTenantPackage
(
tenantId
,
packageId
)));
}
...
...
dsk-admin/src/main/java/com/dsk/web/schedule/TenantTimerTask.java
0 → 100644
View file @
376e6c9d
package
com
.
dsk
.
web
.
schedule
;
import
com.dsk.common.tenant.helper.TenantHelper
;
import
com.dsk.system.service.ISysTenantService
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
/**
* 租户相关定时任务类
*
* @author sxk
* @date 2023.09.06
*/
@Component
@RequiredArgsConstructor
@Slf4j
public
class
TenantTimerTask
{
private
final
ISysTenantService
tenantService
;
/**
* 每6小时扫描并禁用已过期租户账号
*/
@Scheduled
(
cron
=
"0 0 0/6 * * *"
)
public
void
updateExpiredTenantStatus
()
{
log
.
info
(
"执行定时禁用已过期租户账号(6h/次)"
);
TenantHelper
.
ignore
(
tenantService:
:
handleExpiredTenant
);
}
}
\ No newline at end of file
dsk-admin/src/main/resources/i18n/messages_zh_CN.properties
View file @
376e6c9d
...
...
@@ -50,5 +50,5 @@ xcx.code.not.blank=\u5C0F\u7A0B\u5E8Fcode\u4E0D\u80FD\u4E3A\u7A7A
##\u79DF\u6237
company.number.not.blank
=
\u
4F01
\u
4E1A
\u
7F16
\u
53F7
\u
4E0D
\u
80FD
\u
4E3A
\u
7A7A
company.not.exists
=
\u
5BF9
\u
4E0D
\u
8D77,
\u
60A8
\u7684\u
4F01
\u
4E1A
\u
4E0D
\u
5B58
\u5728\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458
company.blocked
=
\u
5BF9
\u
4E0D
\u
8D77
\u
FF0C
\u
60A8
\u7684\u
4F01
\u
4E1A
\u
5DF2
\u
7981
\u7528\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458
company.blocked
=
\u
5BF9
\u
4E0D
\u
8D77
\u
FF0C
\u
60A8
\u7684\u
4F01
\u
4E1A
\u
5DF2
\u
505C
\u7528\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458
company.expired
=
\u
5BF9
\u
4E0D
\u
8D77
\u
FF0C
\u
60A8
\u7684\u
4F01
\u
4E1A
\u
5DF2
\u
8FC7
\u
671F
\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458
\ No newline at end of file
dsk-common/src/main/java/com/dsk/common/annotation/Excel.java
View file @
376e6c9d
...
...
@@ -77,7 +77,7 @@ public @interface Excel
/**
* 当值为空时,字段的默认值
*/
public
String
defaultValue
()
default
""
;
public
String
defaultValue
()
default
"
-
"
;
/**
* 提示信息
...
...
dsk-common/src/main/java/com/dsk/common/utils/StringUtils.java
View file @
376e6c9d
...
...
@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
import
lombok.AccessLevel
;
import
lombok.NoArgsConstructor
;
import
org.springframework.util.AntPathMatcher
;
import
org.springframework.util.ObjectUtils
;
import
java.util.*
;
import
java.util.function.Function
;
...
...
@@ -329,6 +330,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
//去除字符串标红
public
static
String
removeRed
(
String
str
)
{
if
(
ObjectUtils
.
isEmpty
(
str
))
return
null
;
return
str
.
replace
(
"<font color='#FF204E'>"
,
""
).
replace
(
"</font>"
,
""
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/jsk/domain/vo/ImportantProjectExportVo.java
0 → 100644
View file @
376e6c9d
package
com
.
dsk
.
jsk
.
domain
.
vo
;
import
com.dsk.common.annotation.Excel
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 重点项目清单
* @author lcl
* @create 2023/8/28
*/
@Data
public
class
ImportantProjectExportVo
implements
Serializable
{
@Excel
(
name
=
"序号"
,
width
=
6
)
private
Integer
id
;
@Excel
(
name
=
"项目类型"
,
width
=
15
)
private
String
buildingProjectType
;
@Excel
(
name
=
"项目名称"
,
width
=
40
)
private
String
projectName
;
@Excel
(
name
=
"主管部门"
,
width
=
35
)
private
String
chargeDepartment
;
@Excel
(
name
=
"项目法人"
,
width
=
35
)
private
String
constructUnit
;
@Excel
(
name
=
"项目投资额"
,
suffix
=
"万元"
)
private
Double
projectTotalInvestment
;
@Excel
(
name
=
"项目地区"
,
width
=
15
)
private
String
domicile
;
@Excel
(
name
=
"建设规模"
,
width
=
50
)
private
String
projectScale
;
@Excel
(
name
=
"附件名称"
,
width
=
30
)
private
String
fileTitle
;
@Excel
(
name
=
"附件链接"
,
width
=
30
)
private
String
fileUrl
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/jsk/service/JskCombineInfoService.java
View file @
376e6c9d
...
...
@@ -177,9 +177,11 @@ public class JskCombineInfoService {
if
(
ObjectUtils
.
isEmpty
(
dto
.
getKeys
())){
vo
.
setTenderee
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"tenderee"
));
vo
.
setProjectName
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"projectName"
));
vo
.
setAgency
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"agency"
));
}
else
{
vo
.
setTenderee
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"tenderee"
)));
vo
.
setProjectName
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"projectName"
)));
vo
.
setAgency
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"agency"
)));
}
vo
.
setStockPercent
(
MapUtil
.
getDouble
(
list
.
get
(
i
),
"stockPercent"
));
vo
.
setMemberLevel
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"memberLevel"
));
...
...
@@ -187,7 +189,7 @@ public class JskCombineInfoService {
vo
.
setAddress
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"address"
));
vo
.
setSubjectMatter
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"subjectMatter"
));
vo
.
setProjectType
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"projectType"
));
vo
.
setAgency
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"agency"
));
result
.
add
(
vo
);
}
return
result
;
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/search/controller/BusinessOpportunityRadarController.java
View file @
376e6c9d
package
com
.
dsk
.
search
.
controller
;
import
cn.dev33.satoken.annotation.SaCheckPermission
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.dsk.biz.utils.ExcelUtils
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.utils.poi.ExcelUtil
;
import
com.dsk.jsk.domain.bo.ComposeQueryDto
;
import
com.dsk.jsk.domain.vo.ImportantProjectExportVo
;
import
com.dsk.search.service.BusinessOpportunityRadarService
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
...
...
@@ -157,4 +163,31 @@ public class BusinessOpportunityRadarController {
}
return
opportunityRadarService
.
importantPage
(
object
);
}
/*
* 重点项目清单关联查询
*/
@RequestMapping
(
"/importantSelect"
)
public
AjaxResult
importantSelect
(
@RequestBody
JSONObject
object
)
{
return
opportunityRadarService
.
importantSelect
(
object
);
}
/*
* 重点项目清单筛选条件
*/
@RequestMapping
(
"/importantCondition"
)
public
AjaxResult
importantCondition
()
{
return
opportunityRadarService
.
importantCondition
();
}
/**
* 导出重点项目清单
*/
@RequestMapping
(
"/export/important"
)
@SaCheckPermission
(
"radar:export:important"
)
public
void
exportBid
(
@RequestBody
JSONObject
object
,
HttpServletResponse
response
)
{
List
<
ImportantProjectExportVo
>
list
=
opportunityRadarService
.
exportImportant
(
object
);
// ExcelUtil<ImportantProjectExportVo> util = new ExcelUtil<>(ImportantProjectExportVo.class);
ExcelUtils
<
ImportantProjectExportVo
>
util
=
new
ExcelUtils
<>(
ImportantProjectExportVo
.
class
);
util
.
exportExcel
(
response
,
list
,
"重点项目"
,
"重点项目导出明细"
,
true
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/search/service/BusinessOpportunityRadarService.java
View file @
376e6c9d
package
com
.
dsk
.
search
.
service
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.map.MapUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.jsk.domain.vo.ImportantProjectExportVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -98,4 +105,59 @@ public class BusinessOpportunityRadarService {
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/nationzj/bondProject/importantPage"
,
object
);
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
public
AjaxResult
importantSelect
(
JSONObject
object
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/nationzj/bondProject/importantSelect"
,
object
);
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
public
AjaxResult
importantCondition
()
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/nationzj/bondProject/importantCondition"
,
null
);
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
public
List
<
ImportantProjectExportVo
>
exportImportant
(
JSONObject
object
)
{
if
(
ObjectUtil
.
isEmpty
(
object
.
get
(
"page"
)))
{
throw
new
ServiceException
(
"导出条数不能为空!"
);
}
Map
<
String
,
Object
>
page
=
(
Map
<
String
,
Object
>)
object
.
get
(
"page"
);
if
(
null
==
page
.
get
(
"limit"
)||
MapUtil
.
getInt
(
page
,
"limit"
)>
2000
){
page
.
put
(
"limit"
,
2000
);
}
page
.
put
(
"page"
,
1
);
object
.
put
(
"page"
,
page
);
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/nationzj/bondProject/importantPage"
,
object
);
if
(
ObjectUtil
.
isEmpty
(
map
.
get
(
"data"
)))
throw
new
ServiceException
(
"导出失败,系统错误!"
);
Map
<
String
,
Object
>
data
=
BeanUtil
.
beanToMap
(
map
.
get
(
"data"
));
if
(
ObjectUtil
.
isEmpty
(
data
.
get
(
"list"
)))
throw
new
ServiceException
(
"导出失败,系统错误!"
);
List
<
Map
<
String
,
Object
>>
list
=
(
List
<
Map
<
String
,
Object
>>)
data
.
get
(
"list"
);
if
(
ObjectUtil
.
isEmpty
(
list
))
throw
new
ServiceException
(
"导出失败,无数据导出!"
);
List
<
ImportantProjectExportVo
>
result
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
ImportantProjectExportVo
vo
=
new
ImportantProjectExportVo
();
vo
.
setId
(
i
+
1
);
vo
.
setBuildingProjectType
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"buildingProjectType"
));
if
(
null
!=
list
.
get
(
i
).
get
(
"projectName"
)){
vo
.
setProjectName
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"projectName"
)));
}
if
(
null
!=
list
.
get
(
i
).
get
(
"chargeDepartment"
)){
vo
.
setChargeDepartment
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"chargeDepartment"
)));
}
if
(
null
!=
list
.
get
(
i
).
get
(
"constructUnit"
)){
vo
.
setConstructUnit
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"constructUnit"
)));
}
if
(
null
!=
list
.
get
(
i
).
get
(
"projectScale"
)){
vo
.
setProjectScale
(
StringUtils
.
removeRed
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"projectScale"
)));
}
vo
.
setProjectTotalInvestment
(
MapUtil
.
getDouble
(
list
.
get
(
i
),
"projectTotalInvestment"
));
vo
.
setDomicile
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"domicile"
));
vo
.
setFileTitle
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"fileTitle"
));
vo
.
setFileUrl
(
MapUtil
.
getStr
(
list
.
get
(
i
),
"fileUrl"
));
result
.
add
(
vo
);
}
return
result
;
}
}
dsk-operate-ui/src/layout/components/TagsView/index.vue
View file @
376e6c9d
...
...
@@ -451,7 +451,7 @@ export default {
/*overflow-y: auto;*/
overflow-y
:
overlay
;
padding
:
8px
0
0
;
width
:
325
px
;
width
:
146
px
;
text-align
:
left
;
border-radius
:
4px
;
box-shadow
:
0
2px
9px
2px
rgba
(
0
,
0
,
0
,.
09
)
,
0
1px
2px
-2px
rgba
(
0
,
0
,
0
,.
16
);
...
...
@@ -461,6 +461,9 @@ export default {
>
div
{
padding
:
8px
8px
8px
32px
;
line-height
:
20px
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
overflow
:
hidden
;
}
&
:hover
{
background
:
rgba
(
0
,
0
,
0
,
0
.04
);
...
...
dsk-operate-ui/src/utils/request.js
View file @
376e6c9d
...
...
@@ -17,7 +17,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL
:
process
.
env
.
VUE_APP_BASE_API
,
// 超时
timeout
:
1
0000
timeout
:
2
0000
})
// request拦截器
...
...
dsk-operate-ui/src/views/enterpriseManagement/index.vue
View file @
376e6c9d
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"企业名称"
prop=
"
role
Name"
>
<el-form-item
label=
"企业名称"
prop=
"
company
Name"
>
<el-input
v-model=
"queryParams.companyName"
placeholder=
"请输入企业名称"
...
...
@@ -10,7 +10,7 @@
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"用户名称"
prop=
"
roleKey
"
>
<el-form-item
label=
"用户名称"
prop=
"
contactUserName
"
>
<el-input
v-model=
"queryParams.contactUserName"
placeholder=
"请输入用户名称"
...
...
@@ -19,10 +19,10 @@
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"
电话号码"
prop=
"roleKey
"
>
<el-form-item
label=
"
手机号码"
prop=
"contactPhone
"
>
<el-input
v-model=
"queryParams.contactPhone"
placeholder=
"请输入
电话
号码"
placeholder=
"请输入
手机
号码"
clearable
style=
"width: 240px"
@
keyup
.
enter
.
native=
"handleQuery"
...
...
@@ -116,7 +116,7 @@
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-
delete
"
icon=
"el-icon-
zoom-in
"
@
click=
"handleLook(scope.row)"
v-hasPermi=
"['system:role:remove']"
>
查看
</el-button>
...
...
@@ -187,7 +187,7 @@
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"企业规模"
prop=
"accountCount"
>
<el-input
:disabled=
"disabled"
v-model=
"form.accountCount"
placeholder=
"请输入企业规模"
/>
<el-input
onkeyup=
"this.value=this.value.replace(/[^1-9]/g,'')"
:disabled=
"disabled"
v-model=
"form.accountCount"
placeholder=
"请输入企业规模"
/>
</el-form-item>
</el-col>
</el-row>
...
...
@@ -375,14 +375,13 @@
this
.
form
=
response
.
data
;
this
.
form
.
dateRange
=
[
response
.
data
.
startTime
,
response
.
data
.
expireTime
]
this
.
open
=
true
;
this
.
title
=
"修改企业"
;
this
.
title
=
this
.
disabled
==
true
?
'查看企业'
:
"修改企业"
;
});
},
//查看
handleLook
(
row
){
this
.
handleUpdate
(
row
)
this
.
disabled
=
true
this
.
getpack
()
},
/** 提交按钮 */
submitForm
:
function
()
{
...
...
@@ -405,9 +404,11 @@
loading
.
close
()
}
else
{
this
.
$modal
.
msgError
(
response
.
msg
)
loading
.
close
();
}
}).
catch
(
response
=>
{
this
.
$modal
.
msgError
(
response
.
msg
)
loading
.
close
();
});
}
else
{
saveTenant
(
this
.
form
).
then
(
response
=>
{
...
...
@@ -418,6 +419,7 @@
loading
.
close
();
}
else
{
this
.
$modal
.
msgError
(
response
.
msg
)
loading
.
close
();
}
}).
catch
(
response
=>
{
this
.
$modal
.
msgError
(
response
.
msg
)
...
...
dsk-operate-ui/src/views/enterpriseManagement/programme.vue
View file @
376e6c9d
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"方案名称"
prop=
"
rol
eName"
>
<el-form-item
label=
"方案名称"
prop=
"
packag
eName"
>
<el-input
v-model=
"queryParams.packageName"
placeholder=
"请输入方案名称"
...
...
@@ -92,7 +92,7 @@
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-
edit
"
icon=
"el-icon-
zoom-in
"
@
click=
"handleLook(scope.row)"
v-hasPermi=
"['system:role:edit']"
>
查看
</el-button>
...
...
@@ -336,7 +336,7 @@
}
})
})
this
.
title
=
"修改方案"
;
this
.
title
=
this
.
disabled
==
true
?
'查看方案'
:
"修改方案"
;
});
},
//查看
...
...
dsk-operate-ui/src/views/login.vue
View file @
376e6c9d
...
...
@@ -8,8 +8,8 @@
<!--快捷登录-->
<el-form
v-if=
"!islog && !islang && isDXlogin"
ref=
"dxform"
:model=
"dxform"
:rules=
"dxRules"
class=
"login-form"
>
<div
class=
"logintitle"
>
<div
class=
"on"
@
click=
"isDXlogin = true"
>
快捷登录
</div>
<div
@
click=
"isDXlogin = false"
>
密码登录
</div>
<div
class=
"on"
@
click=
"isDXlogin = true"
>
快捷登录
</div>
</div>
<el-form-item
prop=
"phonenumber"
>
<el-input
...
...
@@ -63,8 +63,8 @@
<!--密码登录-->
<el-form
v-if=
"!islog && !islang && !isDXlogin"
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
>
<div
class=
"logintitle"
>
<div
@
click=
"isDXlogin = true"
>
快捷登录
</div>
<div
class=
"on"
@
click=
"isDXlogin = false"
>
密码登录
</div>
<div
@
click=
"isDXlogin = true"
>
快捷登录
</div>
</div>
<el-form-item
prop=
"username"
>
<el-input
...
...
@@ -190,7 +190,7 @@
return
{
tenantId
:
-
1
,
islog
:
false
,
isDXlogin
:
tru
e
,
isDXlogin
:
fals
e
,
codeUrl
:
""
,
loginForm
:
{
username
:
""
,
...
...
@@ -303,10 +303,13 @@
//密码登录时根据手机号获取是否有多个租户
userTenantList
({
phone
:
this
.
loginForm
.
username
}).
then
(
res
=>
{
if
(
res
.
data
.
length
>
1
){
//需要安全验证(短信登录)
this
.
islang
=
true
this
.
dxform
.
phonenumber
=
this
.
loginForm
.
username
this
.
dxform
.
captchaCode
=
this
.
loginForm
.
code
this
.
showcode
=
false
let
_this
=
this
setTimeout
(()
=>
{
_this
.
islang
=
true
_this
.
dxform
.
phonenumber
=
_this
.
loginForm
.
username
_this
.
dxform
.
captchaCode
=
_this
.
loginForm
.
code
_this
.
showcode
=
false
},
1000
)
}
else
{
//无租户列表和一个租户直接登录
this
.
$store
.
dispatch
(
"Login"
,
froms
).
then
(()
=>
{
this
.
loading
=
false
;
...
...
@@ -343,6 +346,7 @@
}
})
}
else
{
this
.
$message
.
error
(
res
.
msg
)
this
.
getCode
()
this
.
showcode
=
true
}
...
...
dsk-operate-ui/src/views/system/dept/index.vue
View file @
376e6c9d
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
>
<el-form-item
label=
"
部门
名称"
prop=
"deptName"
>
<el-form-item
label=
"
组织
名称"
prop=
"deptName"
>
<el-input
v-model=
"queryParams.deptName"
placeholder=
"请输入
部门
名称"
placeholder=
"请输入
组织
名称"
clearable
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-select
v-model=
"queryParams.status"
placeholder=
"
部门
状态"
clearable
>
<el-select
v-model=
"queryParams.status"
placeholder=
"
组织
状态"
clearable
>
<el-option
v-for=
"dict in dict.type.sys_normal_disable"
:key=
"dict.value"
...
...
@@ -56,7 +56,7 @@
:default-expand-all=
"isExpandAll"
:tree-props=
"
{children: 'children', hasChildren: 'hasChildren'}"
>
<el-table-column
prop=
"deptName"
label=
"
部门
名称"
width=
"260"
></el-table-column>
<el-table-column
prop=
"deptName"
label=
"
组织
名称"
width=
"260"
></el-table-column>
<el-table-column
prop=
"orderNum"
label=
"排序"
width=
"200"
></el-table-column>
<el-table-column
prop=
"status"
label=
"状态"
width=
"100"
>
<template
slot-scope=
"scope"
>
...
...
@@ -96,20 +96,20 @@
</el-table-column>
</el-table>
<!-- 添加或修改
部门
对话框 -->
<!-- 添加或修改
组织
对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
width=
"600px"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-row>
<el-col
:span=
"24"
v-if=
"form.parentId !== 0"
>
<el-form-item
label=
"上级
部门
"
prop=
"parentId"
>
<treeselect
v-model=
"form.parentId"
:options=
"deptOptions"
:normalizer=
"normalizer"
placeholder=
"选择上级
部门
"
/>
<el-form-item
label=
"上级
组织
"
prop=
"parentId"
>
<treeselect
v-model=
"form.parentId"
:options=
"deptOptions"
:normalizer=
"normalizer"
placeholder=
"选择上级
组织
"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
label=
"
部门
名称"
prop=
"deptName"
>
<el-input
v-model=
"form.deptName"
placeholder=
"请输入
部门
名称"
/>
<el-form-item
label=
"
组织
名称"
prop=
"deptName"
>
<el-input
v-model=
"form.deptName"
placeholder=
"请输入
组织
名称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
...
...
@@ -137,7 +137,7 @@
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"
部门
状态"
>
<el-form-item
label=
"
组织
状态"
>
<el-radio-group
v-model=
"form.status"
>
<el-radio
v-for=
"dict in dict.type.sys_normal_disable"
...
...
@@ -200,7 +200,7 @@ export default {
showSearch
:
true
,
// 表格树数据
deptList
:
[],
//
部门
树选项
//
组织
树选项
deptOptions
:
[],
// 弹出层标题
title
:
""
,
...
...
@@ -220,10 +220,10 @@ export default {
// 表单校验
rules
:
{
parentId
:
[
{
required
:
true
,
message
:
"上级
部门
不能为空"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"上级
组织
不能为空"
,
trigger
:
"blur"
}
],
deptName
:
[
{
required
:
true
,
message
:
"
部门
名称不能为空"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"
组织
名称不能为空"
,
trigger
:
"blur"
}
],
orderNum
:
[
{
required
:
true
,
message
:
"显示排序不能为空"
,
trigger
:
"blur"
}
...
...
@@ -250,7 +250,7 @@ export default {
this
.
phone
=
this
.
$store
.
state
.
user
.
phonenumber
},
methods
:
{
/** 查询
部门
列表 */
/** 查询
组织
列表 */
getList
()
{
this
.
loading
=
true
;
listDept
(
this
.
queryParams
).
then
(
response
=>
{
...
...
@@ -258,7 +258,7 @@ export default {
this
.
loading
=
false
;
});
},
/** 转换
部门
数据结构 */
/** 转换
组织
数据结构 */
normalizer
(
node
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
;
...
...
@@ -304,7 +304,7 @@ export default {
this
.
form
.
parentId
=
row
.
deptId
;
}
this
.
open
=
true
;
this
.
title
=
"添加
部门
"
;
this
.
title
=
"添加
组织
"
;
listDept
().
then
(
response
=>
{
this
.
deptOptions
=
this
.
handleTree
(
response
.
data
,
"deptId"
);
});
...
...
@@ -323,7 +323,7 @@ export default {
getDept
(
row
.
deptId
).
then
(
response
=>
{
this
.
form
=
response
.
data
;
this
.
open
=
true
;
this
.
title
=
"修改
部门
"
;
this
.
title
=
"修改
组织
"
;
listDeptExcludeChild
(
row
.
deptId
).
then
(
response
=>
{
this
.
deptOptions
=
this
.
handleTree
(
response
.
data
,
"deptId"
);
if
(
this
.
deptOptions
.
length
==
0
)
{
...
...
@@ -339,15 +339,23 @@ export default {
if
(
valid
)
{
if
(
this
.
form
.
deptId
!=
undefined
)
{
updateDept
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
this
.
$modal
.
msgSuccess
(
"修改成功"
);
this
.
open
=
false
;
this
.
getList
();
}
else
{
this
.
$modal
.
msgError
(
response
.
msg
)
}
});
}
else
{
addDept
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
==
200
){
this
.
$modal
.
msgSuccess
(
"新增成功"
);
this
.
open
=
false
;
this
.
getList
();
}
else
{
this
.
$modal
.
msgError
(
response
.
msg
)
}
});
}
}
...
...
@@ -357,7 +365,7 @@ export default {
handleDelete
(
row
)
{
this
.
deptId
=
row
.
deptId
let
islast
=
true
let
txt
=
'是否确认删除名称为"'
+
row
.
deptName
+
'"的
数据项
?'
let
txt
=
'是否确认删除名称为"'
+
row
.
deptName
+
'"的
组织
?'
if
((
row
.
children
&&
row
.
children
.
length
>
0
)
||
row
.
existUsers
==
true
){
//该组织下还有数据
islast
=
false
txt
=
'是否删除该组织及该组织包含的所有人员?'
...
...
dsk-operate-ui/src/views/system/user/index.vue
View file @
376e6c9d
...
...
@@ -692,16 +692,19 @@ export default {
/** 删除按钮操作 */
handleDelete
(
row
)
{
const
userIds
=
row
.
userId
||
this
.
ids
;
let
_this
=
this
this
.
$modal
.
confirm
(
'是否确认删除用户编号为"'
+
userIds
+
'"的数据项?'
).
then
(
function
()
{
delUser
(
userIds
).
then
(
res
=>
{
if
(
res
.
code
==
200
){
this
.
getList
();
this
.
$modal
.
msgSuccess
(
"删除成功"
);
_
this
.
getList
();
_
this
.
$modal
.
msgSuccess
(
"删除成功"
);
}
else
{
this
.
$modal
.
msgError
(
res
.
msg
);
_
this
.
$modal
.
msgError
(
res
.
msg
);
}
});
}).
catch
(()
=>
{});
}).
catch
(()
=>
{
_this
.
$modal
.
msgError
(
res
.
msg
);
});
},
/** 导出按钮操作 */
handleExport
()
{
...
...
dsk-system/src/main/java/com/dsk/system/service/ISysTenantService.java
View file @
376e6c9d
...
...
@@ -24,6 +24,11 @@ public interface ISysTenantService {
// */
// List<SysTenantVo> queryList(SysTenantBo bo);
/**
* 禁用所有已过期租户
*/
void
handleExpiredTenant
();
/**
* 查询租户
*/
...
...
@@ -70,4 +75,5 @@ public interface ISysTenantService {
* 基于租户ID查询租户
*/
SysTenantVo
queryByTenantId
(
String
tenantId
);
}
dsk-system/src/main/java/com/dsk/system/service/SysLoginService.java
View file @
376e6c9d
...
...
@@ -100,6 +100,7 @@ public class SysLoginService {
String
defaultTenantId
=
RedisUtils
.
getCacheObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
username
);
log
.
info
(
"登录用户:{} 获取缓存默认租户:"
+
tenantId
,
username
);
if
(
StrUtil
.
isNotBlank
(
defaultTenantId
)){
defaultTenantId
=
checkDefaultTenant
(
defaultTenantId
,
username
);
tenantId
=
defaultTenantId
;
}
}
...
...
@@ -189,13 +190,14 @@ 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)){
// tenantId=defaultTenantId;
// }
// }
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
;
}
}
//查询手机号绑定的所有用户
if
(
StrUtil
.
isEmpty
(
tenantId
))
{
...
...
@@ -231,7 +233,7 @@ public class SysLoginService {
// 框架登录不限制从什么表查询 只要最终构建出 LoginUser 即可
SysUser
user
=
loadUserByUsername
(
username
);
checkLogin
(
LoginType
.
PASSWORD
,
username
,
()
->
!
validateSmsCode
(
username
,
smsCode
));
checkLogin
(
LoginType
.
SMS
,
username
,
()
->
!
validateSmsCode
(
username
,
smsCode
));
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
LoginUser
loginUser
=
buildLoginUser
(
user
);
// 生成token
...
...
@@ -501,18 +503,45 @@ public class SysLoginService {
}
SysTenantVo
tenant
=
sysTenantService
.
queryByTenantId
(
tenantId
);
if
(
ObjectUtil
.
isNull
(
tenant
))
{
log
.
info
(
"登录
租户:{} 不存在."
,
tenantId
);
log
.
info
(
"登录
企业:{} 不存在."
,
tenant
.
getCompanyName
()
);
throw
new
TenantException
(
"company.not.exists"
);
}
else
if
(
TenantStatus
.
DISABLE
.
getCode
().
equals
(
tenant
.
getStatus
()))
{
log
.
info
(
"登录
租户:{} 已被停用."
,
tenantId
);
log
.
info
(
"登录
企业:{} 已被停用."
,
tenant
.
getCompanyName
()
);
throw
new
TenantException
(
"company.blocked"
);
}
else
if
(
ObjectUtil
.
isNotNull
(
tenant
.
getExpireTime
())
&&
new
Date
().
after
(
tenant
.
getExpireTime
()))
{
log
.
info
(
"登录
租户:{} 已超过有效期."
,
tenantId
);
log
.
info
(
"登录
企业:{} 已超过有效期."
,
tenant
.
getCompanyName
()
);
throw
new
TenantException
(
"company.expired"
);
}
}
public
String
checkDefaultTenant
(
String
tenantId
,
String
phoneNumber
)
{
if
(!
TenantHelper
.
isEnable
())
{
return
null
;
}
if
(
TenantConstants
.
DEFAULT_TENANT_ID
.
equals
(
tenantId
))
{
return
null
;
}
SysTenantVo
tenant
=
sysTenantService
.
queryByTenantId
(
tenantId
);
if
(
ObjectUtil
.
isNull
(
tenant
))
{
log
.
info
(
"登录企业:{} 不存在."
,
tenant
.
getCompanyName
());
RedisUtils
.
deleteObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
phoneNumber
);
return
null
;
}
else
if
(
TenantStatus
.
DISABLE
.
getCode
().
equals
(
tenant
.
getStatus
()))
{
log
.
info
(
"登录企业:{} 已被停用."
,
tenant
.
getCompanyName
());
RedisUtils
.
deleteObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
phoneNumber
);
return
null
;
}
else
if
(
ObjectUtil
.
isNotNull
(
tenant
.
getExpireTime
())
&&
new
Date
().
after
(
tenant
.
getExpireTime
()))
{
log
.
info
(
"登录企业:{} 已超过有效期."
,
tenant
.
getCompanyName
());
RedisUtils
.
deleteObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
phoneNumber
);
return
null
;
}
return
tenantId
;
}
public
List
<
SysTenantVo
>
tenantListByAccount
(
String
username
)
{
return
TenantHelper
.
ignore
(()
->
sysTenantService
.
selectTenantList
(
username
));
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/ISysTenantPackageServiceImpl.java
View file @
376e6c9d
...
...
@@ -68,7 +68,8 @@ public class ISysTenantPackageServiceImpl implements ISysTenantPackageService {
@Override
public
List
<
SysTenantPackageSelectVo
>
selectList
()
{
LambdaQueryWrapper
<
SysTenantPackage
>
wrapper
=
new
LambdaQueryWrapper
<
SysTenantPackage
>()
.
eq
(
SysTenantPackage:
:
getStatus
,
TenantPackageConstants
.
NORMAL
);
.
eq
(
SysTenantPackage:
:
getStatus
,
TenantPackageConstants
.
NORMAL
)
.
orderByDesc
(
SysTenantPackage:
:
getCreateTime
);
List
<
SysTenantPackageVo
>
tenantPackageVo
=
baseMapper
.
selectVoList
(
wrapper
);
return
BeanUtil
.
copyToList
(
tenantPackageVo
,
SysTenantPackageSelectVo
.
class
);
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/ISysTenantServiceImpl.java
View file @
376e6c9d
...
...
@@ -32,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -72,6 +73,25 @@ public class ISysTenantServiceImpl implements ISysTenantService {
return
TableDataInfo
.
build
(
result
);
}
/**
* 禁用所有已过期租户
*/
@Override
public
void
handleExpiredTenant
()
{
Date
now
=
new
Date
();
//查询所有已过期租户
List
<
SysTenant
>
tenantList
=
baseMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysTenant
>()
.
eq
(
SysTenant:
:
getStatus
,
TenantConstants
.
NORMAL
)
.
gt
(
SysTenant:
:
getStartTime
,
now
)
.
or
()
.
lt
(
SysTenant:
:
getExpireTime
,
now
));
//批量禁用已过期租户
if
(!
tenantList
.
isEmpty
())
{
tenantList
.
forEach
(
sysTenant
->
sysTenant
.
setStatus
(
TenantConstants
.
DISABLE
));
baseMapper
.
updateBatchById
(
tenantList
);
}
}
// /**
// * 查询租户列表
// */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment