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
73a55eba
Commit
73a55eba
authored
May 18, 2023
by
danfuman
Browse files
Options
Browse Files
Download
Plain Diff
解决冲突
parents
d5391d86
24879f28
Changes
83
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
83 changed files
with
2730 additions
and
506 deletions
+2730
-506
CustomerController.java
...a/com/dsk/web/controller/customer/CustomerController.java
+38
-2
CustomerDecisionChainController.java
.../controller/customer/CustomerDecisionChainController.java
+8
-4
CustomerFollowRecordController.java
...b/controller/customer/CustomerFollowRecordController.java
+51
-0
EnterpriseController.java
...java/com/dsk/web/controller/dsk/EnterpriseController.java
+78
-3
EconomicController.java
...web/controller/search/macroMarket/EconomicController.java
+35
-0
application-dev.yml
dsk-admin/src/main/resources/application-dev.yml
+1
-92
application.yml
dsk-admin/src/main/resources/application.yml
+93
-0
BasePage.java
.../main/java/com/dsk/common/core/domain/model/BasePage.java
+76
-0
EnterpriseAffiliatesBody.java
...sk/common/core/domain/model/EnterpriseAffiliatesBody.java
+22
-0
EnterpriseBidDataGroupBody.java
.../common/core/domain/model/EnterpriseBidDataGroupBody.java
+27
-0
EnterpriseBidNoticePageBody.java
...common/core/domain/model/EnterpriseBidNoticePageBody.java
+22
-0
EnterpriseChangeInfoBody.java
...sk/common/core/domain/model/EnterpriseChangeInfoBody.java
+22
-0
EnterpriseDynamicPageBody.java
...k/common/core/domain/model/EnterpriseDynamicPageBody.java
+22
-0
EnterpriseIcInfoBody.java
...om/dsk/common/core/domain/model/EnterpriseIcInfoBody.java
+22
-0
EnterpriseInfoHeaderBody.java
...sk/common/core/domain/model/EnterpriseInfoHeaderBody.java
+22
-0
EnterpriseInvestmentBody.java
...sk/common/core/domain/model/EnterpriseInvestmentBody.java
+22
-0
EnterpriseKeymembersBody.java
...sk/common/core/domain/model/EnterpriseKeymembersBody.java
+22
-0
EnterprisePartnersBody.java
.../dsk/common/core/domain/model/EnterprisePartnersBody.java
+22
-0
EnterpriseProjectTenderDataGroupBody.java
...re/domain/model/EnterpriseProjectTenderDataGroupBody.java
+24
-0
EnterpriseStatisticBody.java
...dsk/common/core/domain/model/EnterpriseStatisticBody.java
+22
-0
EnterpriseSupplierPageBody.java
.../common/core/domain/model/EnterpriseSupplierPageBody.java
+43
-0
InsertAll.java
...va/com/dsk/common/core/mybatisplus/methods/InsertAll.java
+101
-0
AptitudeQueryDto.java
...n/src/main/java/com/dsk/common/dtos/AptitudeQueryDto.java
+1
-1
BeijingQueryDto.java
...on/src/main/java/com/dsk/common/dtos/BeijingQueryDto.java
+1
-1
BusinessInfoDto.java
...on/src/main/java/com/dsk/common/dtos/BusinessInfoDto.java
+1
-1
ComposePersonnelQueryDto.java
...in/java/com/dsk/common/dtos/ComposePersonnelQueryDto.java
+1
-1
EstablishmentDto.java
...n/src/main/java/com/dsk/common/dtos/EstablishmentDto.java
+1
-1
HeaderDto.java
dsk-common/src/main/java/com/dsk/common/dtos/HeaderDto.java
+0
-1
JskBidCandidateDto.java
...src/main/java/com/dsk/common/dtos/JskBidCandidateDto.java
+1
-1
JskBidNewsDto.java
...mmon/src/main/java/com/dsk/common/dtos/JskBidNewsDto.java
+1
-1
JskBidQueryDto.java
...mon/src/main/java/com/dsk/common/dtos/JskBidQueryDto.java
+1
-1
JskDataScreenDto.java
...n/src/main/java/com/dsk/common/dtos/JskDataScreenDto.java
+0
-1
LandMarketDto.java
...mmon/src/main/java/com/dsk/common/dtos/LandMarketDto.java
+1
-1
DskOpenApiUtil.java
...on/src/main/java/com/dsk/common/utils/DskOpenApiUtil.java
+30
-1
MyBatisConfig.java
...src/main/java/com/dsk/framework/config/MyBatisConfig.java
+132
-132
MybatisPlusConfig.java
...main/java/com/dsk/framework/config/MybatisPlusConfig.java
+120
-0
CreateAndUpdateMetaObjectHandler.java
...amework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
+80
-0
README.md
dsk-operate-ui/README.md
+3
-1
package.json
dsk-operate-ui/package.json
+1
-0
defaultTag.svg
dsk-operate-ui/src/assets/icons/svg/defaultTag.svg
+1
-0
defaultTags.svg
dsk-operate-ui/src/assets/icons/svg/defaultTags.svg
+1
-0
EXCEL.png
dsk-operate-ui/src/assets/images/EXCEL.png
+0
-0
delete.png
dsk-operate-ui/src/assets/images/delete.png
+0
-0
edit.png
dsk-operate-ui/src/assets/images/edit.png
+0
-0
follow.png
dsk-operate-ui/src/assets/images/follow.png
+0
-0
logo.png
dsk-operate-ui/src/assets/images/logo/logo.png
+0
-0
index.scss
dsk-operate-ui/src/assets/styles/index.scss
+58
-0
sidebar.scss
dsk-operate-ui/src/assets/styles/sidebar.scss
+86
-35
variables.scss
dsk-operate-ui/src/assets/styles/variables.scss
+7
-1
Navbar.vue
dsk-operate-ui/src/layout/components/Navbar.vue
+100
-133
Logo.vue
dsk-operate-ui/src/layout/components/Sidebar/Logo.vue
+6
-5
ScrollPane.vue
dsk-operate-ui/src/layout/components/TagsView/ScrollPane.vue
+11
-1
index.vue
dsk-operate-ui/src/layout/components/TagsView/index.vue
+68
-37
index.vue
dsk-operate-ui/src/layout/index.vue
+1
-3
index.js
dsk-operate-ui/src/router/index.js
+22
-2
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+23
-0
index.vue
dsk-operate-ui/src/views/detail/party-b/index.vue
+115
-0
index.vue
dsk-operate-ui/src/views/project/projectList/index.vue
+456
-18
Customer.java
...rc/main/java/com/dsk/system/domain/customer/Customer.java
+4
-8
CustomerDecisionChain.java
...com/dsk/system/domain/customer/CustomerDecisionChain.java
+8
-4
CustomerFollowRecord.java
.../com/dsk/system/domain/customer/CustomerFollowRecord.java
+59
-0
CustomerUser.java
...ain/java/com/dsk/system/domain/customer/CustomerUser.java
+52
-0
CustomerDecisionChainSearchDto.java
...m/domain/customer/dto/CustomerDecisionChainSearchDto.java
+1
-1
CustomerFollowRecordSearchDto.java
...em/domain/customer/dto/CustomerFollowRecordSearchDto.java
+24
-0
CustomerSearchDto.java
...com/dsk/system/domain/customer/dto/CustomerSearchDto.java
+22
-0
CustomerListVo.java
...ava/com/dsk/system/domain/customer/vo/CustomerListVo.java
+101
-0
EnterpriseService.java
...ain/java/com/dsk/system/dskService/EnterpriseService.java
+68
-2
CustomerDecisionChainMapper.java
...va/com/dsk/system/mapper/CustomerDecisionChainMapper.java
+1
-1
CustomerFollowRecordMapper.java
...ava/com/dsk/system/mapper/CustomerFollowRecordMapper.java
+18
-0
CustomerMapper.java
...m/src/main/java/com/dsk/system/mapper/CustomerMapper.java
+8
-1
CustomerUserMapper.java
...c/main/java/com/dsk/system/mapper/CustomerUserMapper.java
+18
-0
EconomicService.java
...src/main/java/com/dsk/system/service/EconomicService.java
+22
-0
ICustomerDecisionChainService.java
...com/dsk/system/service/ICustomerDecisionChainService.java
+2
-2
ICustomerFollowRecordService.java
.../com/dsk/system/service/ICustomerFollowRecordService.java
+21
-0
ICustomerService.java
...rc/main/java/com/dsk/system/service/ICustomerService.java
+9
-2
CustomerDecisionChainServiceImpl.java
...system/service/impl/CustomerDecisionChainServiceImpl.java
+3
-2
CustomerFollowRecordServiceImpl.java
.../system/service/impl/CustomerFollowRecordServiceImpl.java
+49
-0
CustomerServiceImpl.java
...java/com/dsk/system/service/impl/CustomerServiceImpl.java
+57
-1
EconomicServiceImpl.java
...java/com/dsk/system/service/impl/EconomicServiceImpl.java
+30
-0
CustomerDecisionChainMapper.xml
...es/mapper/system/customer/CustomerDecisionChainMapper.xml
+1
-1
CustomerFollowRecordMapper.xml
...ces/mapper/system/customer/CustomerFollowRecordMapper.xml
+7
-0
CustomerMapper.xml
.../main/resources/mapper/system/customer/CustomerMapper.xml
+13
-0
CustomerUserMapper.xml
...n/resources/mapper/system/customer/CustomerUserMapper.xml
+7
-0
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/customer/CustomerController.java
View file @
73a55eba
package
com
.
dsk
.
web
.
controller
.
customer
;
package
com
.
dsk
.
web
.
controller
.
customer
;
import
com.dsk.common.annotation.RepeatSubmit
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.utils.PageUtils
;
import
com.dsk.system.domain.customer.Customer
;
import
com.dsk.system.domain.customer.dto.CustomerSearchDto
;
import
com.dsk.system.service.ICustomerService
;
import
com.dsk.system.service.ICustomerService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.
web.bind.annotation.RequestMapping
;
import
org.springframework.
security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.
RestController
;
import
org.springframework.web.bind.annotation.
*
;
/**
/**
* 客户相关
* 客户相关
...
@@ -19,4 +25,34 @@ public class CustomerController extends BaseController {
...
@@ -19,4 +25,34 @@ public class CustomerController extends BaseController {
@Autowired
@Autowired
private
ICustomerService
baseService
;
private
ICustomerService
baseService
;
/**
* 查询客户列表
*/
@PreAuthorize
(
"@ss.hasPermi('customer:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
selectPageList
(
CustomerSearchDto
dto
){
startPage
();
return
getDataTable
(
baseService
.
selectList
(
dto
));
}
/**
* 添加客户
*/
@PreAuthorize
(
"@ss.hasPermi('customer:add')"
)
@PostMapping
()
@RepeatSubmit
public
AjaxResult
add
(
@RequestBody
Customer
customer
){
return
AjaxResult
.
success
(
baseService
.
add
(
customer
));
}
/**
* 编辑客户
*/
@PreAuthorize
(
"@ss.hasPermi('customer:edit')"
)
@PutMapping
()
@RepeatSubmit
public
AjaxResult
edit
(
@RequestBody
Customer
customer
){
return
AjaxResult
.
success
(
baseService
.
edit
(
customer
));
}
}
}
dsk-admin/src/main/java/com/dsk/web/controller/customer/CustomerDecisionChainController.java
View file @
73a55eba
package
com
.
dsk
.
web
.
controller
.
customer
;
package
com
.
dsk
.
web
.
controller
.
customer
;
import
com.dsk.common.annotation.RepeatSubmit
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.system.domain.CustomerDecisionChain
;
import
com.dsk.system.domain.
customer.
CustomerDecisionChain
;
import
com.dsk.system.domain.dto.CustomerDecisionChainSearchDto
;
import
com.dsk.system.domain.
customer.
dto.CustomerDecisionChainSearchDto
;
import
com.dsk.system.service.ICustomerDecisionChainService
;
import
com.dsk.system.service.ICustomerDecisionChainService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.access.prepost.PreAuthorize
;
...
@@ -37,7 +38,8 @@ public class CustomerDecisionChainController extends BaseController {
...
@@ -37,7 +38,8 @@ public class CustomerDecisionChainController extends BaseController {
*/
*/
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:add')"
)
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:add')"
)
@PostMapping
()
@PostMapping
()
public
AjaxResult
add
(
CustomerDecisionChain
customerDecisionChain
){
@RepeatSubmit
()
public
AjaxResult
add
(
@RequestBody
CustomerDecisionChain
customerDecisionChain
){
return
AjaxResult
.
success
(
baseService
.
insert
(
customerDecisionChain
));
return
AjaxResult
.
success
(
baseService
.
insert
(
customerDecisionChain
));
}
}
...
@@ -46,7 +48,8 @@ public class CustomerDecisionChainController extends BaseController {
...
@@ -46,7 +48,8 @@ public class CustomerDecisionChainController extends BaseController {
*/
*/
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:edit')"
)
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:edit')"
)
@PutMapping
()
@PutMapping
()
public
AjaxResult
edit
(
CustomerDecisionChain
customerDecisionChain
){
@RepeatSubmit
()
public
AjaxResult
edit
(
@RequestBody
CustomerDecisionChain
customerDecisionChain
){
return
AjaxResult
.
success
(
baseService
.
update
(
customerDecisionChain
));
return
AjaxResult
.
success
(
baseService
.
update
(
customerDecisionChain
));
}
}
...
@@ -55,6 +58,7 @@ public class CustomerDecisionChainController extends BaseController {
...
@@ -55,6 +58,7 @@ public class CustomerDecisionChainController extends BaseController {
*/
*/
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:del')"
)
@PreAuthorize
(
"@ss.hasPermi('customer:decision:chain:del')"
)
@DeleteMapping
(
"/{id}"
)
@DeleteMapping
(
"/{id}"
)
@RepeatSubmit
()
public
AjaxResult
del
(
@PathVariable
(
"id"
)
Long
id
){
public
AjaxResult
del
(
@PathVariable
(
"id"
)
Long
id
){
return
AjaxResult
.
success
(
baseService
.
deleteById
(
id
));
return
AjaxResult
.
success
(
baseService
.
deleteById
(
id
));
}
}
...
...
dsk-admin/src/main/java/com/dsk/web/controller/customer/CustomerFollowRecordController.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
web
.
controller
.
customer
;
import
com.dsk.common.annotation.RepeatSubmit
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.system.domain.customer.Customer
;
import
com.dsk.system.domain.customer.CustomerFollowRecord
;
import
com.dsk.system.domain.customer.dto.CustomerFollowRecordSearchDto
;
import
com.dsk.system.domain.customer.dto.CustomerSearchDto
;
import
com.dsk.system.service.ICustomerFollowRecordService
;
import
com.dsk.system.service.ICustomerService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.*
;
/**
* 客户跟进记录相关
*
* @author lcl
* @create 2023/5/18
*/
@RestController
@RequestMapping
(
"/customer/follow/record"
)
public
class
CustomerFollowRecordController
extends
BaseController
{
@Autowired
private
ICustomerFollowRecordService
baseService
;
/**
* 查询客户跟进记录列表
*/
// @PreAuthorize("@ss.hasPermi('customer:follow:record:list')")
@GetMapping
(
"/list"
)
public
TableDataInfo
selectPageList
(
CustomerFollowRecordSearchDto
dto
){
startPage
();
return
getDataTable
(
baseService
.
selectList
(
dto
));
}
/**
* 添加客户跟进记录
*/
// @PreAuthorize("@ss.hasPermi('customer:follow:record:add')")
@PostMapping
()
@RepeatSubmit
public
AjaxResult
add
(
@RequestBody
CustomerFollowRecord
followRecord
){
return
AjaxResult
.
success
(
baseService
.
add
(
followRecord
));
}
}
dsk-admin/src/main/java/com/dsk/web/controller/dsk/EnterpriseController.java
View file @
73a55eba
package
com
.
dsk
.
web
.
controller
.
dsk
;
package
com
.
dsk
.
web
.
controller
.
dsk
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.model.
EnterpriseBody
;
import
com.dsk.common.core.domain.model.
*
;
import
com.dsk.system.dskService.EnterpriseService
;
import
com.dsk.system.dskService.EnterpriseService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -25,9 +26,83 @@ public class EnterpriseController {
...
@@ -25,9 +26,83 @@ public class EnterpriseController {
@Autowired
@Autowired
private
EnterpriseService
enterpriseService
;
private
EnterpriseService
enterpriseService
;
@ApiOperation
(
value
=
"企业详情头部信息(建设库)"
)
@PostMapping
(
"/infoHeader"
)
@PostMapping
(
"/infoHeader"
)
public
R
infoHeader
(
@RequestBody
@Valid
EnterpriseBody
body
)
throws
Exception
public
R
infoHeader
(
@RequestBody
@Valid
Enterprise
InfoHeader
Body
body
)
throws
Exception
{
{
return
enterpriseService
.
infoHeader
(
body
);
return
enterpriseService
.
infoHeader
(
body
);
}
}
@ApiOperation
(
value
=
"企业统计信息"
)
@PostMapping
(
value
=
"statistic(建设库)"
)
public
R
statistic
(
@RequestBody
@Valid
EnterpriseStatisticBody
vo
)
throws
Exception
{
return
enterpriseService
.
statistic
(
vo
);
}
@ApiOperation
(
value
=
"招标偏好信息(openApi)"
)
@PostMapping
(
value
=
"bidDataGroup"
)
public
R
bidDataGroup
(
@RequestBody
@Valid
EnterpriseBidDataGroupBody
vo
)
throws
Exception
{
return
enterpriseService
.
bidDataGroup
(
vo
);
}
@ApiOperation
(
value
=
"供应商列表(建设库)"
)
@PostMapping
(
value
=
"supplierPage"
)
public
R
supplierPage
(
@RequestBody
@Valid
EnterpriseSupplierPageBody
vo
)
throws
Exception
{
return
enterpriseService
.
supplierPage
(
vo
);
}
@ApiOperation
(
value
=
"甲方业绩数据(openApi)"
)
@PostMapping
(
value
=
"projectTenderDataGroup"
)
public
R
projectTenderDataGroup
(
@RequestBody
@Valid
EnterpriseProjectTenderDataGroupBody
vo
)
throws
Exception
{
return
enterpriseService
.
projectTenderDataGroup
(
vo
);
}
@ApiOperation
(
value
=
"股东列表(openApi)"
)
@PostMapping
(
value
=
"partners"
)
public
R
partners
(
@RequestBody
@Valid
EnterprisePartnersBody
vo
)
throws
Exception
{
return
enterpriseService
.
partners
(
vo
);
}
@ApiOperation
(
value
=
"对外投资列表(openApi)"
)
@PostMapping
(
value
=
"investment"
)
public
R
investment
(
@RequestBody
@Valid
EnterpriseInvestmentBody
vo
)
throws
Exception
{
return
enterpriseService
.
investment
(
vo
);
}
@ApiOperation
(
value
=
"分支机构列表(openApi)"
)
@PostMapping
(
value
=
"affiliates"
)
public
R
affiliates
(
@RequestBody
@Valid
EnterpriseAffiliatesBody
vo
)
throws
Exception
{
return
enterpriseService
.
affiliates
(
vo
);
}
@ApiOperation
(
value
=
"招标公告列表(建设库)"
)
@PostMapping
(
value
=
"bidNoticePage"
)
public
R
bidNoticePage
(
@RequestBody
@Valid
EnterpriseBidNoticePageBody
vo
)
throws
Exception
{
return
enterpriseService
.
bidNoticePage
(
vo
);
}
@ApiOperation
(
value
=
"企业动态列表(建设库)"
)
@PostMapping
(
value
=
"dynamicPage"
)
public
R
dynamicPage
(
@RequestBody
@Valid
EnterpriseDynamicPageBody
vo
)
throws
Exception
{
return
enterpriseService
.
dynamicPage
(
vo
);
}
@ApiOperation
(
value
=
"工商基本信息(openApi)"
)
@PostMapping
(
value
=
"icInfo"
)
public
R
icInfo
(
@RequestBody
@Valid
EnterpriseIcInfoBody
vo
)
throws
Exception
{
return
enterpriseService
.
icInfo
(
vo
);
}
@ApiOperation
(
value
=
"工商变更信息列表(openApi)"
)
@PostMapping
(
value
=
"changeInfo"
)
public
R
changeInfo
(
@RequestBody
@Valid
EnterpriseChangeInfoBody
vo
)
throws
Exception
{
return
enterpriseService
.
changeInfo
(
vo
);
}
@ApiOperation
(
value
=
"高管信息列表(openApi)"
)
@PostMapping
(
value
=
"keymembers"
)
public
R
keymembers
(
@RequestBody
@Valid
EnterpriseKeymembersBody
vo
)
throws
Exception
{
return
enterpriseService
.
keymembers
(
vo
);
}
}
}
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/EconomicController.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
web
.
controller
.
search
.
macroMarket
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.system.service.EconomicService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @ClassName EconomicController
* @Description 经济大全
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping
(
value
=
"/economic"
)
public
class
EconomicController
{
@Autowired
private
EconomicService
economicService
;
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping
(
"/nationalPage"
)
public
AjaxResult
areaGroupByProvince
()
{
return
economicService
.
nationalPage
();
}
}
dsk-admin/src/main/resources/application-dev.yml
View file @
73a55eba
...
@@ -167,98 +167,7 @@ token:
...
@@ -167,98 +167,7 @@ token:
# # 加载全局的配置文件
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# configLocation: classpath:mybatis/mybatis-config.xml
# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus
:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage
:
com.dsk.**.mapper
# 对应的 XML 文件位置
mapperLocations
:
classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage
:
com.dsk.**.domain
# 针对 typeAliasesPackage,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
#typeAliasesSuperType: Class<?>
# 如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler
#typeHandlersPackage: null
# 如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#typeEnumsPackage: null
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
checkConfigLocation
:
false
# 通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:
# SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
# REUSE:该执行器类型会复用预处理语句(PreparedStatement)
# BATCH:该执行器类型会批量执行所有的更新语句
executorType
:
SIMPLE
configuration
:
# 自动驼峰命名规则(camel case)映射
# 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
mapUnderscoreToCamelCase
:
true
# 默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理
# org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
# org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
# com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.
defaultEnumTypeHandler
:
org.apache.ibatis.type.EnumTypeHandler
# 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
aggressiveLazyLoading
:
true
# MyBatis 自动映射策略
# NONE:不启用自动映射
# PARTIAL:只对非嵌套的 resultMap 进行自动映射
# FULL:对所有的 resultMap 都进行自动映射
autoMappingBehavior
:
PARTIAL
# MyBatis 自动映射时未知列或未知属性处理策
# NONE:不做任何处理 (默认值)
# WARNING:以日志的形式打印相关警告信息
# FAILING:当作映射失败处理,并抛出异常和详细信息
autoMappingUnknownColumnBehavior
:
NONE
# Mybatis一级缓存,默认为 SESSION
# SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库
# STATEMENT 关闭一级缓存
localCacheScope
:
SESSION
# 开启Mybatis二级缓存,默认为 true
cacheEnabled
:
false
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
# 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
logImpl
:
org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config
:
# 是否打印 Logo banner
banner
:
true
# 是否初始化 SqlRunner
enableSqlRunner
:
false
dbConfig
:
# 主键类型
# AUTO 数据库ID自增
# NONE 空
# INPUT 用户输入ID
# ASSIGN_ID 全局唯一ID
# ASSIGN_UUID 全局唯一ID UUID
idType
:
AUTO
# 表名前缀
tablePrefix
:
null
# 字段 format,例: %s,(对主键无效)
columnFormat
:
null
# 表名是否使用驼峰转下划线命名,只对表名生效
tableUnderline
:
true
# 大写命名,对表名和字段名均生效
capitalMode
:
false
# 全局的entity的逻辑删除字段属性名
logicDeleteField
:
null
# 逻辑已删除值
logicDeleteValue
:
2
# 逻辑未删除值
logicNotDeleteValue
:
0
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
# IGNORED 忽略判断
# NOT_NULL 非NULL判断
# NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
# DEFAULT 默认的,一般只用于注解里
# NEVER 不加入 SQL
insertStrategy
:
NOT_NULL
# 字段验证策略之 update,在 update 的时候的字段验证策略
updateStrategy
:
NOT_NULL
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
where-strategy
:
NOT_NULL
# PageHelper分页插件
# PageHelper分页插件
pagehelper
:
pagehelper
:
...
...
dsk-admin/src/main/resources/application.yml
View file @
73a55eba
spring
:
spring
:
profiles
:
profiles
:
active
:
dev
active
:
dev
# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus
:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
# 例如 com.**.**.mapper
mapperPackage
:
com.dsk.**.mapper
# 对应的 XML 文件位置
mapperLocations
:
classpath*:mapper/**/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage
:
com.dsk.**.domain
# 针对 typeAliasesPackage,如果配置了该属性,则仅仅会扫描路径下以该类作为父类的域对象
#typeAliasesSuperType: Class<?>
# 如果配置了该属性,SqlSessionFactoryBean 会把该包下面的类注册为对应的 TypeHandler
#typeHandlersPackage: null
# 如果配置了该属性,会将路径下的枚举类进行注入,让实体类字段能够简单快捷的使用枚举属性
#typeEnumsPackage: null
# 启动时是否检查 MyBatis XML 文件的存在,默认不检查
checkConfigLocation
:
false
# 通过该属性可指定 MyBatis 的执行器,MyBatis 的执行器总共有三种:
# SIMPLE:该执行器类型不做特殊的事情,为每个语句的执行创建一个新的预处理语句(PreparedStatement)
# REUSE:该执行器类型会复用预处理语句(PreparedStatement)
# BATCH:该执行器类型会批量执行所有的更新语句
executorType
:
SIMPLE
configuration
:
# 自动驼峰命名规则(camel case)映射
# 如果您的数据库命名符合规则无需使用 @TableField 注解指定数据库字段名
mapUnderscoreToCamelCase
:
true
# 默认枚举处理类,如果配置了该属性,枚举将统一使用指定处理器进行处理
# org.apache.ibatis.type.EnumTypeHandler : 存储枚举的名称
# org.apache.ibatis.type.EnumOrdinalTypeHandler : 存储枚举的索引
# com.baomidou.mybatisplus.extension.handlers.MybatisEnumTypeHandler : 枚举类需要实现IEnum接口或字段标记@EnumValue注解.
defaultEnumTypeHandler
:
org.apache.ibatis.type.EnumTypeHandler
# 当设置为 true 的时候,懒加载的对象可能被任何懒属性全部加载,否则,每个属性都按需加载。需要和 lazyLoadingEnabled 一起使用。
aggressiveLazyLoading
:
true
# MyBatis 自动映射策略
# NONE:不启用自动映射
# PARTIAL:只对非嵌套的 resultMap 进行自动映射
# FULL:对所有的 resultMap 都进行自动映射
autoMappingBehavior
:
PARTIAL
# MyBatis 自动映射时未知列或未知属性处理策
# NONE:不做任何处理 (默认值)
# WARNING:以日志的形式打印相关警告信息
# FAILING:当作映射失败处理,并抛出异常和详细信息
autoMappingUnknownColumnBehavior
:
NONE
# Mybatis一级缓存,默认为 SESSION
# SESSION session级别缓存,同一个session相同查询语句不会再次查询数据库
# STATEMENT 关闭一级缓存
localCacheScope
:
SESSION
# 开启Mybatis二级缓存,默认为 true
cacheEnabled
:
false
# 更详细的日志输出 会有性能损耗 org.apache.ibatis.logging.stdout.StdOutImpl
# 关闭日志记录 (可单纯使用 p6spy 分析) org.apache.ibatis.logging.nologging.NoLoggingImpl
# 默认日志输出 org.apache.ibatis.logging.slf4j.Slf4jImpl
logImpl
:
org.apache.ibatis.logging.slf4j.Slf4jImpl
global-config
:
# 是否打印 Logo banner
banner
:
true
# 是否初始化 SqlRunner
enableSqlRunner
:
false
dbConfig
:
# 主键类型
# AUTO 数据库ID自增
# NONE 空
# INPUT 用户输入ID
# ASSIGN_ID 全局唯一ID
# ASSIGN_UUID 全局唯一ID UUID
idType
:
AUTO
# 表名前缀
tablePrefix
:
null
# 字段 format,例: %s,(对主键无效)
columnFormat
:
null
# 表名是否使用驼峰转下划线命名,只对表名生效
tableUnderline
:
true
# 大写命名,对表名和字段名均生效
capitalMode
:
false
# 全局的entity的逻辑删除字段属性名
logicDeleteField
:
null
# 逻辑已删除值
logicDeleteValue
:
2
# 逻辑未删除值
logicNotDeleteValue
:
0
# 字段验证策略之 insert,在 insert 的时候的字段验证策略
# IGNORED 忽略判断
# NOT_NULL 非NULL判断
# NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
# DEFAULT 默认的,一般只用于注解里
# NEVER 不加入 SQL
insertStrategy
:
NOT_NULL
# 字段验证策略之 update,在 update 的时候的字段验证策略
updateStrategy
:
NOT_NULL
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
where-strategy
:
NOT_NULL
dsk-common/src/main/java/com/dsk/common/core/domain/model/BasePage.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
/**
* 基础分页类
* @author hypnos
* @Description
* @Date Created in 2022-10-27 07:08:54
* @Modified By hypnos
*/
public
class
BasePage
{
/**
* 当前页码
*/
private
Integer
pageIndex
=
1
;
/**
* 每页数量
*/
private
Integer
pageSize
=
10
;
/**
* 最大页码
*/
private
Integer
pageMaxIndex
;
/**
* 最大条数
*/
private
Integer
pageMaxSize
;
public
Integer
getPageIndex
()
{
return
pageMaxIndex
!=
null
&&
pageIndex
>
pageMaxIndex
?
pageMaxIndex
:
pageIndex
;
}
public
void
setPageIndex
(
Integer
pageIndex
)
{
this
.
pageIndex
=
pageIndex
;
}
public
Integer
getPageSize
()
{
return
pageMaxSize
!=
null
&&
pageSize
>
pageMaxSize
?
pageMaxSize
:
pageSize
;
}
public
void
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
public
Integer
getPageMaxIndex
()
{
return
pageMaxIndex
;
}
public
void
setPageMaxIndex
(
Integer
pageMaxIndex
)
{
this
.
pageMaxIndex
=
pageMaxIndex
;
}
public
Integer
getPageMaxSize
()
{
return
pageMaxSize
;
}
public
void
setPageMaxSize
(
Integer
pageMaxSize
)
{
this
.
pageMaxSize
=
pageMaxSize
;
}
@Override
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
builder
.
append
(
"BasePageVo [pageIndex="
);
builder
.
append
(
pageIndex
);
builder
.
append
(
", pageSize="
);
builder
.
append
(
pageSize
);
builder
.
append
(
"]"
);
return
builder
.
toString
();
}
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseAffiliatesBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* 分支结构列表
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseAffiliatesBody
extends
BasePage
{
//企业Id
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseBidDataGroupBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseBidDataGroupBody
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
/**
* 时间跨度id 1:年,2:月,3:周
*/
@NotNull
(
message
=
"spanId不能为空"
)
private
Integer
spanId
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseBody.java
→
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseB
idNoticePageB
ody.java
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
public
class
EnterpriseBody
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseBidNoticePageBody
extends
BasePage
{
{
/**
/**
* 企业id
* 企业id
...
@@ -10,19 +19,4 @@ public class EnterpriseBody
...
@@ -10,19 +19,4 @@ public class EnterpriseBody
@NotNull
(
message
=
"企业id不能为空"
)
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
companyId
;
private
Integer
companyId
;
public
Integer
getCompanyId
()
{
return
companyId
;
}
public
void
setCompanyId
(
Integer
companyId
)
{
this
.
companyId
=
companyId
;
}
@Override
public
String
toString
()
{
final
StringBuffer
sb
=
new
StringBuffer
(
"com.dsk.common.core.domain.model.EnterpriseBody{"
);
sb
.
append
(
"companyId='"
).
append
(
companyId
).
append
(
'\''
);
sb
.
append
(
'}'
);
return
sb
.
toString
();
}
}
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseChangeInfoBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseChangeInfoBody
extends
BasePage
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseDynamicPageBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseDynamicPageBody
extends
BasePage
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
companyId
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseIcInfoBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseIcInfoBody
extends
BasePage
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseInfoHeaderBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseInfoHeaderBody
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
companyId
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseInvestmentBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* 对外投资列表
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseInvestmentBody
extends
BasePage
{
//企业Id
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseKeymembersBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseKeymembersBody
extends
BasePage
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterprisePartnersBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* 股东列表
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterprisePartnersBody
extends
BasePage
{
//企业Id
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseProjectTenderDataGroupBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* 甲方业绩数据
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseProjectTenderDataGroupBody
{
//企业Id
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
//group类型 0:金额,1:项目类型
private
Integer
type
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseStatisticBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseStatisticBody
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
companyId
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseSupplierPageBody.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
/**
* 企业详情供应商信息列表
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseSupplierPageBody
extends
BasePage
{
//企业Id
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
companyId
;
//是否企业首页用,首页用到缓存
private
Boolean
isIndex
=
true
;
//查询关键词(供应商名)
private
String
key
;
//排序字段
private
String
orderColumn
;
@Override
public
String
toString
()
{
final
StringBuffer
sb
=
new
StringBuffer
(
"com.dsk.common.core.domain.model.EnterpriseSupplierPageBody{"
);
sb
.
append
(
"companyId="
).
append
(
companyId
);
sb
.
append
(
", isIndex="
).
append
(
isIndex
);
sb
.
append
(
", key='"
).
append
(
key
).
append
(
'\''
);
sb
.
append
(
", orderColumn='"
).
append
(
orderColumn
).
append
(
'\''
);
sb
.
append
(
", pageIndex="
).
append
(
getPageIndex
());
sb
.
append
(
", pageSize="
).
append
(
getPageSize
());
sb
.
append
(
'}'
);
return
sb
.
toString
();
}
}
dsk-common/src/main/java/com/dsk/common/core/mybatisplus/methods/InsertAll.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
common
.
core
.
mybatisplus
.
methods
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.core.injector.AbstractMethod
;
import
com.baomidou.mybatisplus.core.metadata.TableFieldInfo
;
import
com.baomidou.mybatisplus.core.metadata.TableInfo
;
import
com.baomidou.mybatisplus.core.metadata.TableInfoHelper
;
import
com.dsk.common.utils.StringUtils
;
import
org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator
;
import
org.apache.ibatis.executor.keygen.KeyGenerator
;
import
org.apache.ibatis.executor.keygen.NoKeyGenerator
;
import
org.apache.ibatis.mapping.MappedStatement
;
import
org.apache.ibatis.mapping.SqlSource
;
import
java.util.List
;
/**
* 单sql批量插入( 全量填充 )
*
* @author Lion Li
*/
public
class
InsertAll
extends
AbstractMethod
{
private
final
static
String
[]
FILL_PROPERTY
=
{
"createTime"
,
"createBy"
,
"updateTime"
,
"updateBy"
};
@Override
public
MappedStatement
injectMappedStatement
(
Class
<?>
mapperClass
,
Class
<?>
modelClass
,
TableInfo
tableInfo
)
{
final
String
sql
=
"<script>insert into %s %s values %s</script>"
;
final
String
fieldSql
=
prepareFieldSql
(
tableInfo
);
final
String
valueSql
=
prepareValuesSqlForMysqlBatch
(
tableInfo
);
KeyGenerator
keyGenerator
=
new
NoKeyGenerator
();
String
sqlMethod
=
"insertAll"
;
String
keyProperty
=
null
;
String
keyColumn
=
null
;
// 表包含主键处理逻辑,如果不包含主键当普通字段处理
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyProperty
()))
{
if
(
tableInfo
.
getIdType
()
==
IdType
.
AUTO
)
{
/** 自增主键 */
keyGenerator
=
new
Jdbc3KeyGenerator
();
keyProperty
=
tableInfo
.
getKeyProperty
();
keyColumn
=
tableInfo
.
getKeyColumn
();
}
else
{
if
(
null
!=
tableInfo
.
getKeySequence
())
{
keyGenerator
=
TableInfoHelper
.
genKeyGenerator
(
sqlMethod
,
tableInfo
,
builderAssistant
);
keyProperty
=
tableInfo
.
getKeyProperty
();
keyColumn
=
tableInfo
.
getKeyColumn
();
}
}
}
final
String
sqlResult
=
String
.
format
(
sql
,
tableInfo
.
getTableName
(),
fieldSql
,
valueSql
);
SqlSource
sqlSource
=
languageDriver
.
createSqlSource
(
configuration
,
sqlResult
,
modelClass
);
return
this
.
addInsertMappedStatement
(
mapperClass
,
modelClass
,
sqlMethod
,
sqlSource
,
keyGenerator
,
keyProperty
,
keyColumn
);
}
private
String
prepareFieldSql
(
TableInfo
tableInfo
)
{
StringBuilder
fieldSql
=
new
StringBuilder
();
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyColumn
()))
{
fieldSql
.
append
(
tableInfo
.
getKeyColumn
()).
append
(
","
);
}
tableInfo
.
getFieldList
().
forEach
(
x
->
fieldSql
.
append
(
x
.
getColumn
()).
append
(
","
));
fieldSql
.
delete
(
fieldSql
.
length
()
-
1
,
fieldSql
.
length
());
fieldSql
.
insert
(
0
,
"("
);
fieldSql
.
append
(
")"
);
return
fieldSql
.
toString
();
}
private
String
prepareValuesSqlForMysqlBatch
(
TableInfo
tableInfo
)
{
final
StringBuilder
valueSql
=
new
StringBuilder
();
valueSql
.
append
(
"<foreach collection=\"list\" item=\"item\" index=\"index\" open=\"(\" separator=\"),(\" close=\")\">"
);
if
(
StringUtils
.
isNotBlank
(
tableInfo
.
getKeyColumn
()))
{
valueSql
.
append
(
"\n#{item."
).
append
(
tableInfo
.
getKeyProperty
()).
append
(
"},\n"
);
}
List
<
TableFieldInfo
>
fieldList
=
tableInfo
.
getFieldList
();
int
last
=
fieldList
.
size
()
-
1
;
for
(
int
i
=
0
;
i
<
fieldList
.
size
();
i
++)
{
String
property
=
fieldList
.
get
(
i
).
getProperty
();
if
(!
StringUtils
.
equalsAny
(
property
,
FILL_PROPERTY
))
{
valueSql
.
append
(
"<if test=\"item."
).
append
(
property
).
append
(
" != null\">"
);
valueSql
.
append
(
"#{item."
).
append
(
property
).
append
(
"}"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
valueSql
.
append
(
"</if>"
);
valueSql
.
append
(
"<if test=\"item."
).
append
(
property
).
append
(
" == null\">"
);
valueSql
.
append
(
"DEFAULT"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
valueSql
.
append
(
"</if>"
);
}
else
{
valueSql
.
append
(
"#{item."
).
append
(
property
).
append
(
"}"
);
if
(
i
!=
last
)
{
valueSql
.
append
(
","
);
}
}
}
valueSql
.
append
(
"</foreach>"
);
return
valueSql
.
toString
();
}
}
dsk-common/src/main/java/com/dsk/common/dtos/AptitudeQueryDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/BeijingQueryDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/BusinessInfoDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/ComposePersonnelQueryDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/EstablishmentDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/HeaderDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.md.common.entity.Page
;
import
lombok.Data
;
import
lombok.Data
;
/**
/**
...
...
dsk-common/src/main/java/com/dsk/common/dtos/JskBidCandidateDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/JskBidNewsDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/JskBidQueryDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/JskDataScreenDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.md.common.entity.Page
;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
...
...
dsk-common/src/main/java/com/dsk/common/dtos/LandMarketDto.java
View file @
73a55eba
package
com
.
dsk
.
common
.
dtos
;
package
com
.
dsk
.
common
.
dtos
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.alibaba.fastjson
2
.annotation.JSONField
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
...
...
dsk-common/src/main/java/com/dsk/common/utils/DskOpenApiUtil.java
View file @
73a55eba
...
@@ -24,6 +24,10 @@ public class DskOpenApiUtil {
...
@@ -24,6 +24,10 @@ public class DskOpenApiUtil {
return
request
(
path
,
bodyMap
,
"json"
);
return
request
(
path
,
bodyMap
,
"json"
);
}
}
public
Map
<
String
,
Object
>
requestBodyWithHeader
(
String
path
,
Map
<
String
,
Object
>
bodyMap
,
Map
<
String
,
String
>
headerMap
){
return
requestWithHeader
(
path
,
bodyMap
,
"json"
,
headerMap
);
}
/**
/**
* <b>application/x-www-form-urlencoded请求</b>
* <b>application/x-www-form-urlencoded请求</b>
* @param path 请求路径
* @param path 请求路径
...
@@ -59,4 +63,29 @@ public class DskOpenApiUtil {
...
@@ -59,4 +63,29 @@ public class DskOpenApiUtil {
}
}
}
}
/**
* <b>开放平台统一请求</b>
* @param path 请求路径
* @param bodyMap 参数体
* @param reqBodyType 请求格式
* @return
*/
public
Map
<
String
,
Object
>
requestWithHeader
(
String
path
,
Map
<
String
,
Object
>
bodyMap
,
String
reqBodyType
,
Map
<
String
,
String
>
headerMap
){
try
{
AccClient
.
init
(
new
Config
(
dskOpenApiConfig
.
accessKeyId
,
dskOpenApiConfig
.
accessKeySecret
)
.
setEndpoint
(
dskOpenApiConfig
.
endPoint
));
Map
<
String
,
?>
res
=
AccClient
.
request
(
reqBodyType
,
path
,
bodyMap
,
headerMap
);
if
(!
res
.
containsKey
(
"headers"
)
||
!
res
.
containsKey
(
"body"
))
{
throw
new
RuntimeException
(
String
.
format
(
"请求无返回:path=%s"
,
path
));
}
Object
resBody
=
res
.
get
(
"body"
);
if
(
resBody
==
null
)
{
return
null
;
}
return
CommonUtils
.
assertAsMap
(
resBody
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
String
.
format
(
"请求异常:path=%s,err=%s"
,
path
,
e
.
getMessage
()));
}
}
}
}
\ No newline at end of file
dsk-framework/src/main/java/com/dsk/framework/config/MyBatisConfig.java
View file @
73a55eba
This diff is collapsed.
Click to expand it.
dsk-framework/src/main/java/com/dsk/framework/config/MybatisPlusConfig.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
framework
.
config
;
import
com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer
;
import
com.baomidou.mybatisplus.core.MybatisConfiguration
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.baomidou.mybatisplus.core.injector.AbstractMethod
;
import
com.baomidou.mybatisplus.core.injector.DefaultSqlInjector
;
import
com.baomidou.mybatisplus.core.injector.ISqlInjector
;
import
com.baomidou.mybatisplus.core.metadata.TableInfo
;
import
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
;
import
com.dsk.common.core.mybatisplus.methods.InsertAll
;
import
com.dsk.framework.mybatisplus.CreateAndUpdateMetaObjectHandler
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
import
java.util.List
;
/**
* mybatis-plus配置类
*
* @author Lion Li
*/
@EnableTransactionManagement
(
proxyTargetClass
=
true
)
@Configuration
// 指定要扫描的Mapper类的包的路径
@MapperScan
(
"${mybatis-plus.mapperPackage}"
)
public
class
MybatisPlusConfig
{
@Bean
public
MybatisPlusInterceptor
mybatisPlusInterceptor
()
{
MybatisPlusInterceptor
interceptor
=
new
MybatisPlusInterceptor
();
// 分页插件
interceptor
.
addInnerInterceptor
(
paginationInnerInterceptor
());
// 乐观锁插件
interceptor
.
addInnerInterceptor
(
optimisticLockerInnerInterceptor
());
// 阻断插件
// interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return
interceptor
;
}
/**
* 分页插件,自动识别数据库类型
* https://baomidou.com/guide/interceptor-pagination.html
*/
public
PaginationInnerInterceptor
paginationInnerInterceptor
()
{
PaginationInnerInterceptor
paginationInnerInterceptor
=
new
PaginationInnerInterceptor
();
// 设置最大单页限制数量,默认 500 条,-1 不受限制
paginationInnerInterceptor
.
setMaxLimit
(
500L
);
// 分页合理化
paginationInnerInterceptor
.
setOverflow
(
true
);
// paginationInnerInterceptor.setOptimizeJoin(new JsqlParserCountOptimize(true));
return
paginationInnerInterceptor
;
}
/**
* 乐观锁插件
* https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public
OptimisticLockerInnerInterceptor
optimisticLockerInnerInterceptor
()
{
return
new
OptimisticLockerInnerInterceptor
();
}
/**
* 如果是对全表的删除或更新操作,就会终止该操作
* https://baomidou.com/guide/interceptor-block-attack.html
*/
// public BlockAttackInnerInterceptor blockAttackInnerInterceptor() {
// return new BlockAttackInnerInterceptor();
// }
/**
* sql性能规范插件(垃圾SQL拦截)
* 如有需要可以启用
*/
// public IllegalSQLInnerInterceptor illegalSQLInnerInterceptor() {
// return new IllegalSQLInnerInterceptor();
// }
/**
* 自定义主键策略
* https://baomidou.com/guide/id-generator.html
*/
// @Bean
// public IdentifierGenerator idGenerator() {
// return new CustomIdGenerator();
// }
/**
* 元对象字段填充控制器
* https://baomidou.com/guide/auto-fill-metainfo.html
*/
@Bean
public
MetaObjectHandler
metaObjectHandler
()
{
return
new
CreateAndUpdateMetaObjectHandler
();
}
/**
* TenantLineInnerInterceptor 多租户插件
* https://baomidou.com/guide/interceptor-tenant-line.html
* DynamicTableNameInnerInterceptor 动态表名插件
* https://baomidou.com/guide/interceptor-dynamic-table-name.html
*/
@Bean
ConfigurationCustomizer
mybatisConfigurationCustomizer
()
{
return
new
ConfigurationCustomizer
()
{
@Override
public
void
customize
(
MybatisConfiguration
configuration
)
{
configuration
.
addInterceptor
(
new
com
.
github
.
pagehelper
.
PageInterceptor
());
}
};
}
}
dsk-framework/src/main/java/com/dsk/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
framework
.
mybatisplus
;
import
cn.hutool.http.HttpStatus
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.dsk.common.core.domain.model.LoginUser
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.SecurityUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.reflection.MetaObject
;
import
java.util.Date
;
/**
* MP注入处理器
*
* @author Lion Li
* @date 2021/4/25
*/
@Slf4j
public
class
CreateAndUpdateMetaObjectHandler
implements
MetaObjectHandler
{
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
try
{
//根据属性名字设置要填充的值
if
(
metaObject
.
hasGetter
(
"createTime"
))
{
this
.
setFieldValByName
(
"createTime"
,
new
Date
(),
metaObject
);
}
if
(
metaObject
.
hasGetter
(
"createBy"
))
{
this
.
setFieldValByName
(
"createBy"
,
getLoginNickname
(),
metaObject
);
}
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"自动注入异常 => "
+
e
.
getMessage
(),
HttpStatus
.
HTTP_UNAUTHORIZED
);
}
updateFill
(
metaObject
);
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
try
{
if
(
metaObject
.
hasGetter
(
"updateBy"
))
{
this
.
setFieldValByName
(
"updateBy"
,
getLoginNickname
(),
metaObject
);
}
if
(
metaObject
.
hasGetter
(
"updateTime"
))
{
this
.
setFieldValByName
(
"updateTime"
,
new
Date
(),
metaObject
);
}
}
catch
(
Exception
e
)
{
throw
new
ServiceException
(
"自动注入异常 => "
+
e
.
getMessage
(),
HttpStatus
.
HTTP_UNAUTHORIZED
);
}
}
/**
* 获取登录用户名
*/
private
String
getLoginUsername
()
{
LoginUser
loginUser
;
try
{
loginUser
=
SecurityUtils
.
getLoginUser
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"自动注入警告 => 用户未登录"
);
return
null
;
}
return
loginUser
.
getUsername
();
}
/**
* 获取登录用户名
*/
private
String
getLoginNickname
()
{
LoginUser
loginUser
;
try
{
loginUser
=
SecurityUtils
.
getLoginUser
();
}
catch
(
Exception
e
)
{
log
.
warn
(
"自动注入警告 => 用户未登录"
);
return
null
;
}
return
loginUser
.
getUser
().
getNickName
();
}
}
dsk-operate-ui/README.md
View file @
73a55eba
...
@@ -20,4 +20,6 @@ npm run dev
...
@@ -20,4 +20,6 @@ npm run dev
4
*
组件引用:公用组件存放目录src/components;单独引用的组件存放目录可在页面同级目录下建component文件夹存。
4
*
组件引用:公用组件存放目录src/components;单独引用的组件存放目录可在页面同级目录下建component文件夹存。
5
*
表格小样例:src/views/macro/nationalEconomies/index.vue
5
*
表格小样例:src/views/macro/nationalEconomies/index.vue。
\ No newline at end of file
6
*
页面上能使用栅栏布局的就用栅栏布局,拉伸收缩能达到适当的自适应效果。
\ No newline at end of file
dsk-operate-ui/package.json
View file @
73a55eba
...
@@ -41,6 +41,7 @@
...
@@ -41,6 +41,7 @@
"clipboard"
:
"2.0.8"
,
"clipboard"
:
"2.0.8"
,
"core-js"
:
"3.25.3"
,
"core-js"
:
"3.25.3"
,
"echarts"
:
"5.4.0"
,
"echarts"
:
"5.4.0"
,
"element-resize-detector"
:
"^1.2.4"
,
"element-ui"
:
"2.15.12"
,
"element-ui"
:
"2.15.12"
,
"file-saver"
:
"2.0.5"
,
"file-saver"
:
"2.0.5"
,
"fuse.js"
:
"6.4.3"
,
"fuse.js"
:
"6.4.3"
,
...
...
dsk-operate-ui/src/assets/icons/svg/defaultTag.svg
0 → 100644
View file @
73a55eba
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1684392363345"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"4078"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"16"
height=
"16"
><path
d=
"M300.8 202.666667l-12.8 64h-42.666667v640h533.333334v-640h-42.666667l-12.8-64h119.466667v768h-661.333334v-768h119.466667zM554.666667 640v64H320v-64h234.666667z m149.333333-170.666667v64H320v-64h384zM512 53.333333A96 96 0 0 1 608 149.333333v10.666667h58.24l34.133333 170.666667H323.626667l34.133333-170.666667h58.24V149.333333A96 96 0 0 1 512 53.333333z m0 64A32 32 0 0 0 480 149.333333v74.666667h-69.76l-8.533333 42.666667h220.586666l-8.533333-42.666667H544V149.333333A32 32 0 0 0 512 117.333333z"
fill=
"#979797"
p-id=
"4079"
></path></svg>
\ No newline at end of file
dsk-operate-ui/src/assets/icons/svg/defaultTags.svg
0 → 100644
View file @
73a55eba
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1684392363345"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"4078"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"16"
height=
"16"
><path
d=
"M300.8 202.666667l-12.8 64h-42.666667v640h533.333334v-640h-42.666667l-12.8-64h119.466667v768h-661.333334v-768h119.466667zM554.666667 640v64H320v-64h234.666667z m149.333333-170.666667v64H320v-64h384zM512 53.333333A96 96 0 0 1 608 149.333333v10.666667h58.24l34.133333 170.666667H323.626667l34.133333-170.666667h58.24V149.333333A96 96 0 0 1 512 53.333333z m0 64A32 32 0 0 0 480 149.333333v74.666667h-69.76l-8.533333 42.666667h220.586666l-8.533333-42.666667H544V149.333333A32 32 0 0 0 512 117.333333z"
fill=
"#58637B"
p-id=
"4079"
></path></svg>
\ No newline at end of file
dsk-operate-ui/src/assets/images/EXCEL.png
0 → 100644
View file @
73a55eba
381 Bytes
dsk-operate-ui/src/assets/images/delete.png
0 → 100644
View file @
73a55eba
327 Bytes
dsk-operate-ui/src/assets/images/edit.png
0 → 100644
View file @
73a55eba
245 Bytes
dsk-operate-ui/src/assets/images/follow.png
0 → 100644
View file @
73a55eba
260 Bytes
dsk-operate-ui/src/assets/images/logo/logo.png
View replaced file @
d5391d86
View file @
73a55eba
5.53 KB
|
W:
|
H:
465 Bytes
|
W:
|
H:
2-up
Swipe
Onion skin
dsk-operate-ui/src/assets/styles/index.scss
View file @
73a55eba
...
@@ -494,6 +494,14 @@ ul, li {
...
@@ -494,6 +494,14 @@ ul, li {
width
:
16px
;
width
:
16px
;
}
}
}
}
.btnsmall
{
display
:
inline-block
;
font-size
:
12px
;
border-radius
:
2px
;
width
:
72px
;
text-align
:
center
;
margin
:
0
4px
;
}
.btn_default
{
.btn_default
{
border
:
1px
solid
#0081FF
;
border
:
1px
solid
#0081FF
;
color
:
#0081FF
;
color
:
#0081FF
;
...
@@ -527,6 +535,25 @@ ul, li {
...
@@ -527,6 +535,25 @@ ul, li {
background-color
:
#006AD1
;
background-color
:
#006AD1
;
}
}
}
}
.btn_cancel
{
border
:
1px
solid
#CCCCCC
;
color
:
#4f4f4f
;
&
.h28
{
line-height
:
26px
;
}
&
.h32
{
line-height
:
30px
;
}
&
.h34
{
line-height
:
32px
;
}
&
:hover
{
color
:
#4f4f4f
;
border-color
:
#CCCCCC
;
background-color
:
#F4F4F4
;
}
}
//搜索框
//搜索框
.searchInput
{
.searchInput
{
width
:
590px
;
width
:
590px
;
...
@@ -556,3 +583,34 @@ ul, li {
...
@@ -556,3 +583,34 @@ ul, li {
}
}
}
}
}
}
//导出EXCEL
.btn-export
{
display
:
inline-block
;
color
:
#232323
;
font-size
:
14px
;
height
:
24px
;
line-height
:
24px
;
cursor
:
pointer
;
img
{
margin-right
:
5px
;
float
:
left
;
width
:
18px
;
height
:
18px
;
margin-top
:
2px
;
}
&
:hover
{
color
:
#0081FF
;
}
}
//有链接字体颜色
.wordprimary
{
color
:
#0081FF
;
cursor
:
pointer
;
}
//分割线
.el-divider--horizontal
{
margin
:
0
;
}
.el-divider
{
background-color
:
#efefef
;
}
dsk-operate-ui/src/assets/styles/sidebar.scss
View file @
73a55eba
...
@@ -42,8 +42,10 @@
...
@@ -42,8 +42,10 @@
.el-scrollbar
{
.el-scrollbar
{
height
:
100%
;
height
:
100%
;
}
}
&
.has-logo
{
&
.has-logo
{
.el-scrollbar
{
.el-scrollbar
{
height
:
calc
(
100%
-
50px
);
height
:
calc
(
100%
-
50px
);
...
@@ -61,55 +63,82 @@
...
@@ -61,55 +63,82 @@
}
}
.svg-icon
{
.svg-icon
{
margin-right
:
16px
;
margin-right
:
6px
;
}
.el-submenu__icon-arrow
{
top
:
54%
;
right
:
5px
;
color
:
#d8d8d8
;
}
}
.el-menu
{
.el-menu
{
border
:
none
;
border
:
none
;
height
:
100%
;
height
:
100%
;
width
:
100%
!
important
;
width
:
calc
(
100%
-
16px
)
!
important
;
margin
:
0
8px
;
}
.el-menu--inline
{
margin
:
0
;
width
:
100%
!
important
;
}
.el-menu--inline
.nest-menu
.el-menu-item
{
width
:
100%
!
important
;
min-width
:
128px
;
color
:
#fff
!
important
;
}
}
.el-menu-item
,
.el-submenu__title
{
.el-menu-item
,
.el-submenu__title
{
height
:
40px
;
line-height
:
40px
;
border
:
1px
solid
#141b2f
;
color
:
#fff
;
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
overflow
:
hidden
!
important
;
overflow
:
hidden
!
important
;
text-overflow
:
ellipsis
!
important
;
text-overflow
:
ellipsis
!
important
;
white-space
:
nowrap
!
important
;
white-space
:
nowrap
!
important
;
}
}
// menu hover
// menu hover
.submenu-title-noDropdown
,
.el-menu-item.is-active
{
.el-submenu__title
{
// 点击菜单的颜色
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
border-radius
:
10px
;
border
:
1px
solid
#2b3f69
;
&
:hover
{
&
:hover
{
background-color
:
rgba
(
0
,
0
,
0
,
0
.06
)
!
important
;
background-color
:
#1e2c4c
!
important
;
border-radius
:
10px
;
color
:
#fff
!
important
;
border
:
1px
solid
#2b3f69
;
}
}
}
}
&
.theme-dark
.is-active
>
.el-submenu__title
{
color
:
$base-menu-color-active
!
important
;
}
&
.nest-menu
.el-submenu
>
.el-submenu__title
,
&
.el-submenu
.el-menu-item
{
min-width
:
$base-sidebar-width
!
important
;
// menu hover
.submenu-title-noDropdown
,
.el-submenu__title
{
color
:
#fff
!
important
;
&
:hover
{
&
:hover
{
background-color
:
rgba
(
0
,
0
,
0
,
0
.06
)
!
important
;
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
border-radius
:
10px
;
border
:
1px
solid
#2b3f69
;
}
}
}
}
&
.theme-dark
.nest-menu
.el-submenu
>
.el-submenu__title
,
&
.theme-dark
.el-submenu
.el-menu-item
{
background-color
:
$base-sub-menu-background
!
important
;
&
:hover
{
background-color
:
$base-sub-menu-hover
!
important
;
}
}
}
.sidebar-container
.el-submenu
.el-menu-item
:hover
,
.sidebar-container
.nest-menu
.el-submenu
>
.el-submenu__title
:hover
{
background-color
:
#1e2c4c
!
important
;
color
:
#fff
!
important
;
border-radius
:
10px
;
border
:
1px
solid
#2b3f69
;
}
}
.hideSidebar
{
.hideSidebar
{
.sidebar-container
{
.sidebar-container
{
width
:
54
px
!
important
;
width
:
48
px
!
important
;
}
}
.main-container
{
.main-container
{
...
@@ -117,14 +146,25 @@
...
@@ -117,14 +146,25 @@
}
}
.submenu-title-noDropdown
{
.submenu-title-noDropdown
{
padding
:
0
!
important
;
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
text-align
:
center
;
cursor
:
pointer
;
position
:
relative
;
position
:
relative
;
.el-tooltip
{
.el-tooltip
{
padding
:
0
!
important
;
padding
:
0
!
important
;
.svg-icon
{
.svg-icon
{
margin-left
:
20px
;
margin
:
0px
!
important
;
width
:
1em
;
height
:
1em
;
font-size
:
16px
;
margin-bottom
:
-2px
;
vertical-align
:
-0
.15em
;
fill
:
currentColor
;
overflow
:
hidden
;
}
}
}
}
}
}
...
@@ -133,10 +173,21 @@
...
@@ -133,10 +173,21 @@
overflow
:
hidden
;
overflow
:
hidden
;
&
>
.el-submenu__title
{
&
>
.el-submenu__title
{
padding
:
0
!
important
;
margin-bottom
:
6px
;
padding
:
0
6px
!
important
;
text-align
:
center
;
cursor
:
pointer
;
.svg-icon
{
.svg-icon
{
margin-left
:
20px
;
margin
:
0px
!
important
;
width
:
1em
;
height
:
1em
;
font-size
:
16px
;
margin-bottom
:
-2px
;
vertical-align
:
-0
.15em
;
fill
:
currentColor
;
overflow
:
hidden
;
margin-left
:
0px
;
}
}
}
}
...
...
dsk-operate-ui/src/assets/styles/variables.scss
View file @
73a55eba
...
@@ -36,7 +36,13 @@ $base-sub-menu-background:#000c17;
...
@@ -36,7 +36,13 @@ $base-sub-menu-background:#000c17;
$base-sub-menu-hover:#001528;
$base-sub-menu-hover:#001528;
*/
*/
$base-sidebar-width
:
200px
;
// 央企颜色设置自定义
$base-menu-background
:
#141b2f
;
$base-menu-light-background
:
#fff
;
// 选中菜单的字体颜色
$base-logo-light-title-color
:
#fff
;
// 对应base-logo-title-color
$base-sidebar-width
:
144px
;
//系统默认颜色
//系统默认颜色
$systemColor
:
#0081FF
;
$systemColor
:
#0081FF
;
...
...
dsk-operate-ui/src/layout/components/Navbar.vue
View file @
73a55eba
<
template
>
<
template
>
<div
class=
"navbar"
>
<div
id=
"navBar"
class=
"navbar"
>
<hamburger
id=
"hamburger-container"
:is-active=
"sidebar.opened"
class=
"hamburger-container"
@
toggleClick=
"toggleSideBar"
/>
<div
class=
"left-menu"
:style=
"
{width: scrollerWidth}">
<tags-view
/>
<breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
v-if=
"!topNav"
/>
</div>
<top-nav
id=
"topmenu-container"
class=
"topmenu-container"
v-if=
"topNav"
/>
<div
ref=
"rightMenu"
class=
"flex-box right-menu"
>
<div
class=
"menu-bells"
><img
src=
"@/assets/images/message.png"
><i
/></div>
<div
class=
"right-menu"
>
<i
class=
"menu-line"
/>
<template
v-if=
"device!=='mobile'"
>
<el-dropdown
class=
"avatar-container"
trigger=
"hover"
>
<search
id=
"header-search"
class=
"right-menu-item"
/>
<div
class=
"flex-box avatar-wrapper"
>
<img
v-if=
"avatar"
class=
"pic-avatar"
src=
"@/assets/images/avatar.png"
>
<el-tooltip
content=
"源码地址"
effect=
"dark"
placement=
"bottom"
>
<span
v-else
class=
"user-avatar"
>
{{
name
&&
name
.
slice
(
0
,
1
)
}}
</span>
<ruo-yi-git
id=
"ruoyi-git"
class=
"right-menu-item hover-effect"
/>
{{
name
}}
</el-tooltip>
<el-tooltip
content=
"文档地址"
effect=
"dark"
placement=
"bottom"
>
<ruo-yi-doc
id=
"ruoyi-doc"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
<screenfull
id=
"screenfull"
class=
"right-menu-item hover-effect"
/>
<el-tooltip
content=
"布局大小"
effect=
"dark"
placement=
"bottom"
>
<size-select
id=
"size-select"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
</
template
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<img
:src=
"avatar"
class=
"user-avatar"
>
<i
class=
"el-icon-caret-bottom"
/>
</div>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
class=
"user-dropdown"
>
<router-link
to=
"/user/profile"
>
<router-link
to=
"/user/profile"
>
<el-dropdown-item>
个人
中心
</el-dropdown-item>
<el-dropdown-item>
用户
中心
</el-dropdown-item>
</router-link>
</router-link>
<el-dropdown-item
@
click
.
native=
"setting = true"
>
<span>
布局设置
</span>
</el-dropdown-item>
<el-dropdown-item
divided
@
click
.
native=
"logout"
>
<el-dropdown-item
divided
@
click
.
native=
"logout"
>
<span>
退出
登录
</span>
<span>
退出
</span>
</el-dropdown-item>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
...
@@ -48,53 +27,36 @@
...
@@ -48,53 +27,36 @@
<
script
>
<
script
>
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
}
from
'vuex'
import
Breadcrumb
from
'@/components/Breadcrumb'
import
elementResizeDetectorMaker
from
"element-resize-detector"
import
TopNav
from
'@/components/TopNav'
import
TagsView
from
'./TagsView'
import
Hamburger
from
'@/components/Hamburger'
import
Screenfull
from
'@/components/Screenfull'
import
SizeSelect
from
'@/components/SizeSelect'
import
Search
from
'@/components/HeaderSearch'
import
RuoYiGit
from
'@/components/RuoYi/Git'
import
RuoYiDoc
from
'@/components/RuoYi/Doc'
export
default
{
export
default
{
components
:
{
components
:
{
Breadcrumb
,
TagsView
TopNav
,
},
Hamburger
,
data
()
{
Screenfull
,
return
{
SizeSelect
,
scrollerWidth
:
null
Search
,
}
RuoYiGit
,
RuoYiDoc
},
},
computed
:
{
computed
:
{
...
mapGetters
([
...
mapGetters
([
'sidebar'
,
'sidebar'
,
'avatar'
,
'avatar'
,
'device'
'name'
]),
])
setting
:
{
get
()
{
return
this
.
$store
.
state
.
settings
.
showSettings
},
},
set
(
val
)
{
mounted
()
{
this
.
$store
.
dispatch
(
'settings/changeSetting'
,
{
const
_this
=
this
,
erd
=
elementResizeDetectorMaker
(),
navBar
=
document
.
getElementById
(
"navBar"
)
key
:
'showSettings'
,
erd
.
listenTo
(
navBar
,
element
=>
{
value
:
val
_this
.
$nextTick
(()
=>
{
const
nvWidth
=
navBar
.
offsetWidth
const
rtWidth
=
_this
.
$refs
.
rightMenu
.
offsetWidth
this
.
scrollerWidth
=
(
nvWidth
-
rtWidth
-
100
)
+
'px'
||
'800px'
})
})
})
}
},
topNav
:
{
get
()
{
return
this
.
$store
.
state
.
settings
.
topNav
}
}
},
},
methods
:
{
methods
:
{
toggleSideBar
()
{
this
.
$store
.
dispatch
(
'app/toggleSideBar'
)
},
async
logout
()
{
async
logout
()
{
this
.
$confirm
(
'确定注销并退出系统吗?'
,
'提示'
,
{
this
.
$confirm
(
'确定注销并退出系统吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
confirmButtonText
:
'确定'
,
...
@@ -112,89 +74,94 @@ export default {
...
@@ -112,89 +74,94 @@ export default {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.navbar
{
.navbar
{
height
:
5
0
px
;
height
:
5
6
px
;
overflow
:
hidden
;
overflow
:
inherit
;
position
:
relative
;
position
:
relative
;
background
:
#fff
;
background
:
#fff
;
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,.
08
);
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,.
08
);
.hamburger-container
{
.left-menu
{
line-height
:
46px
;
height
:
100%
;
float
:
left
;
cursor
:
pointer
;
transition
:
background
.3s
;
-webkit-tap-highlight-color
:transparent
;
&
:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
}
}
.breadcrumb-container
{
float
:
left
;
float
:
left
;
}
}
.topmenu-container
{
position
:
absolute
;
left
:
50px
;
}
.errLog-container
{
display
:
inline-block
;
vertical-align
:
top
;
}
.right-menu
{
.right-menu
{
float
:
right
;
float
:
right
;
height
:
100%
;
height
:
100%
;
line-height
:
50px
;
&
:focus
{
&
:focus
{
outline
:
none
;
outline
:
none
;
}
}
.right-menu-item
{
.menu-bells
{
display
:
inline-block
;
position
:
relative
;
padding
:
0
8px
;
margin-right
:
16px
;
height
:
100%
;
font-size
:
18px
;
color
:
#5a5e66
;
vertical-align
:
text-bottom
;
&
.hover-effect
{
cursor
:
pointer
;
cursor
:
pointer
;
transition
:
background
.3s
;
img
{
width
:
24px
;
&
:hover
{
height
:
24px
;
background
:
rgba
(
0
,
0
,
0
,
.025
)
}
i
{
width
:
6px
;
height
:
6px
;
background
:
#FF4545
;
border-radius
:
50%
;
position
:
absolute
;
right
:
0
;
top
:
0
;
}
}
}
}
.menu-line
{
display
:
inline-block
;
width
:
1px
;
height
:
24px
;
background
:
#EEEEEE
;
margin-right
:
16px
;
}
}
.avatar-container
{
.avatar-container
{
margin-right
:
30
px
;
margin-right
:
24
px
;
margin-top
:
-5px
;
.avatar-wrapper
{
.avatar-wrapper
{
margin-top
:
5px
;
font-size
:
12px
;
position
:
relative
;
color
:
#232323
;
line-height
:
20px
;
.user-avatar
{
cursor
:
pointer
;
cursor
:
pointer
;
width
:
40px
;
.pic-avatar
{
height
:
40px
;
width
:
20px
;
border-radius
:
10px
;
height
:
20px
;
border-radius
:
50%
;
margin-right
:
4px
;
overflow
:
hidden
;
}
}
.user-avatar
{
.el-icon-caret-bottom
{
display
:
inline-block
;
cursor
:
pointer
;
cursor
:
pointer
;
position
:
absolute
;
width
:
20px
;
right
:
-20px
;
height
:
20px
;
top
:
25px
;
line-height
:
20px
;
font-size
:
12px
;
text-align
:
center
;
background
:
#E3EEF9
;
color
:
#0081FF
;
border-radius
:
50%
;
margin-right
:
4px
;
}
}
}
}
}
}
}
}
.user-dropdown
{
.el-dropdown-menu__item
{
font-size
:
12px
;
color
:
#232323
;
line-height
:
24px
;
border-top
:
0
;
margin-top
:
0
;
padding
:
0
12px
;
&
:focus
,
&
:not
(
.is-disabled
)
:hover
{
background
:
#E3EEF9
;
}
&
:before
{
height
:
0
;
margin
:
0
;
}
}
}
}
}
</
style
>
</
style
>
dsk-operate-ui/src/layout/components/Sidebar/Logo.vue
View file @
73a55eba
...
@@ -55,9 +55,10 @@ export default {
...
@@ -55,9 +55,10 @@ export default {
.sidebar-logo-container
{
.sidebar-logo-container
{
position
:
relative
;
position
:
relative
;
width
:
100%
;
width
:
100%
;
height
:
50px
;
height
:
55px
;
line-height
:
50px
;
line-height
:
55px
;
background
:
#2b2f3a
;
background
:
#141b2f
;
border-bottom
:
1px
solid
#1a2743
;
text-align
:
center
;
text-align
:
center
;
overflow
:
hidden
;
overflow
:
hidden
;
...
@@ -66,8 +67,8 @@ export default {
...
@@ -66,8 +67,8 @@ export default {
width
:
100%
;
width
:
100%
;
&
.sidebar-logo
{
&
.sidebar-logo
{
width
:
32
px
;
width
:
16
px
;
height
:
32
px
;
height
:
23
px
;
vertical-align
:
middle
;
vertical-align
:
middle
;
margin-right
:
12px
;
margin-right
:
12px
;
}
}
...
...
dsk-operate-ui/src/layout/components/TagsView/ScrollPane.vue
View file @
73a55eba
...
@@ -87,7 +87,17 @@ export default {
...
@@ -87,7 +87,17 @@ export default {
bottom
:
0px
;
bottom
:
0px
;
}
}
.el-scrollbar__wrap
{
.el-scrollbar__wrap
{
height
:
39px
;
height
:
100%
;
padding-top
:
24px
;
margin-bottom
:
0
!
important
;
}
.is-horizontal
{
width
:
0
;
height
:
0
;
}
.is-vertical
{
width
:
0
;
height
:
0
;
}
}
}
}
}
}
...
...
dsk-operate-ui/src/layout/components/TagsView/index.vue
View file @
73a55eba
...
@@ -2,19 +2,22 @@
...
@@ -2,19 +2,22 @@
<div
id=
"tags-view-container"
class=
"tags-view-container"
>
<div
id=
"tags-view-container"
class=
"tags-view-container"
>
<scroll-pane
ref=
"scrollPane"
class=
"tags-view-wrapper"
@
scroll=
"handleScroll"
>
<scroll-pane
ref=
"scrollPane"
class=
"tags-view-wrapper"
@
scroll=
"handleScroll"
>
<router-link
<router-link
v-for=
"
tag
in visitedViews"
v-for=
"
(tag, index)
in visitedViews"
ref=
"tag"
ref=
"tag"
:key=
"tag.path"
:key=
"tag.path"
:class=
"isActive(tag)?'active':''"
:class=
"isActive(tag)?'active':''"
:to=
"
{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
:to=
"
{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span"
tag="span"
class="tags-view-item"
class="tags-view-item"
:style="activeStyle(tag)"
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@contextmenu.prevent.native="openMenu(tag,$event)"
@contextmenu.prevent.native="openMenu(tag,$event)"
>
>
<svg
:class=
"isActive(tag)?'tags-icon tags-icon-active':'tags-icon'"
aria-hidden=
"true"
>
<use
:xlink:href=
"iconName(tag)"
/>
</svg>
{{
tag
.
title
}}
{{
tag
.
title
}}
<span
v-if=
"!isAffix(tag)"
class=
"el-icon-close"
@
click
.
prevent
.
stop=
"closeSelectedTag(tag)"
/>
<span
v-if=
"!isAffix(tag)"
class=
"el-icon-close"
@
click
.
prevent
.
stop=
"closeSelectedTag(tag)"
/>
<i
:class=
"index!=visitedViews.length-1 && index != isActiveIndex() && index != isActiveIndex()-1?'tags-item-line':'tags-item-line item-color'"
/>
</router-link>
</router-link>
</scroll-pane>
</scroll-pane>
<ul
v-show=
"visible"
:style=
"
{left:left+'px',top:top+'px'}" class="contextmenu">
<ul
v-show=
"visible"
:style=
"
{left:left+'px',top:top+'px'}" class="contextmenu">
...
@@ -47,6 +50,19 @@ export default {
...
@@ -47,6 +50,19 @@ export default {
visitedViews
()
{
visitedViews
()
{
return
this
.
$store
.
state
.
tagsView
.
visitedViews
return
this
.
$store
.
state
.
tagsView
.
visitedViews
},
},
iconName
()
{
return
function
(
val
)
{
let
tagIcon
=
val
.
meta
.
tagIcon
||
'defaultTag'
,
tagIcons
=
val
.
meta
.
tagIcons
||
'defaultTags'
let
icon
=
this
.
isActive
(
val
)
?
tagIcons
:
tagIcon
if
(
!
icon
)
{
const
index
=
val
.
path
.
indexOf
(
'/'
,
val
.
path
.
indexOf
(
'/'
)
+
1
)
const
parentPath
=
val
.
path
.
slice
(
0
,
index
)
const
currentRoute
=
this
.
$router
.
options
.
routes
.
find
(
item
=>
item
.
path
===
parentPath
)
icon
=
this
.
isActive
(
val
)
?
currentRoute
.
meta
.
tagIcons
:
currentRoute
.
meta
.
tagIcon
}
return
`#icon-
${
icon
}
`
}
},
routes
()
{
routes
()
{
return
this
.
$store
.
state
.
permission
.
routes
return
this
.
$store
.
state
.
permission
.
routes
},
},
...
@@ -75,16 +91,13 @@ export default {
...
@@ -75,16 +91,13 @@ export default {
isActive
(
route
)
{
isActive
(
route
)
{
return
route
.
path
===
this
.
$route
.
path
return
route
.
path
===
this
.
$route
.
path
},
},
activeStyle
(
tag
)
{
if
(
!
this
.
isActive
(
tag
))
return
{};
return
{
"background-color"
:
this
.
theme
,
"border-color"
:
this
.
theme
};
},
isAffix
(
tag
)
{
isAffix
(
tag
)
{
return
tag
.
meta
&&
tag
.
meta
.
affix
return
tag
.
meta
&&
tag
.
meta
.
affix
},
},
isActiveIndex
()
{
const
idx
=
this
.
visitedViews
.
findIndex
(
item
=>
item
.
path
===
this
.
$route
.
path
)
||
0
return
idx
},
isFirstView
()
{
isFirstView
()
{
try
{
try
{
return
this
.
selectedTag
.
fullPath
===
'/index'
||
this
.
selectedTag
.
fullPath
===
this
.
visitedViews
[
1
].
fullPath
return
this
.
selectedTag
.
fullPath
===
'/index'
||
this
.
selectedTag
.
fullPath
===
this
.
visitedViews
[
1
].
fullPath
...
@@ -239,44 +252,63 @@ export default {
...
@@ -239,44 +252,63 @@ export default {
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.tags-view-container
{
.tags-view-container
{
height
:
34
px
;
height
:
56
px
;
width
:
100%
;
width
:
100%
;
background
:
#fff
;
background
:
#fff
;
border-bottom
:
1px
solid
#d8dce5
;
box-shadow
:
0
1px
3px
0
rgba
(
0
,
0
,
0
,
.12
)
,
0
0
3px
0
rgba
(
0
,
0
,
0
,
.04
);
.tags-view-wrapper
{
.tags-view-wrapper
{
.tags-view-item
{
.tags-view-item
{
display
:
inline-block
;
display
:
inline-block
;
position
:
relative
;
position
:
relative
;
cursor
:
pointer
;
cursor
:
pointer
;
height
:
26
px
;
min-width
:
128
px
;
line-height
:
26
px
;
height
:
32
px
;
border
:
1px
solid
#d8dce5
;
line-height
:
32px
;
color
:
#495060
;
color
:
#495060
;
background
:
#fff
;
background
:
#fff
;
padding
:
0
8px
;
padding
:
0
20px
0
8px
;
font-size
:
12px
;
font-size
:
12px
;
margin-left
:
5px
;
.tags-icon
{
margin-top
:
4px
;
width
:
16px
;
height
:
16px
;
fill
:
currentColor
;
color
:
#5a5e66
;
margin
:
8px
4px
-3px
4px
;
&
.tags-icon-active
{
color
:
pink
;
}
}
.tags-item-line
{
display
:
block
;
width
:
1px
;
height
:
24px
;
background
:
#D0D1D9
;
position
:
absolute
;
right
:
0
;
top
:
4px
;
z-index
:
2
;
&
.item-color
{
background
:
#FFFFFF
;
}
}
&
:first-of-type
{
&
:first-of-type
{
margin-left
:
15px
;
margin-left
:
24px
;
}
&
:hover
{
.el-icon-close
{
background-color
:
rgba
(
153
,
153
,
153
,
0
.3
);
color
:
#999999
;
}
}
&
:last-of-type
{
margin-right
:
15px
;
}
}
&
.active
{
&
.active
{
background-color
:
#42b983
;
background-color
:
#F5F5F5
;
color
:
#fff
;
color
:
#232323
;
border-color
:
#42b983
;
border-top-left-radius
:
10px
;
&
:
:
before
{
border-top-right-radius
:
10px
;
content
:
''
;
&
:hover
{
background
:
#fff
;
.el-icon-close
{
display
:
inline-block
;
background-color
:
initial
;
width
:
8px
;
color
:
initial
;
height
:
8px
;
}
border-radius
:
50%
;
position
:
relative
;
margin-right
:
2px
;
}
}
}
}
}
}
...
@@ -310,6 +342,9 @@ export default {
...
@@ -310,6 +342,9 @@ export default {
.tags-view-wrapper
{
.tags-view-wrapper
{
.tags-view-item
{
.tags-view-item
{
.el-icon-close
{
.el-icon-close
{
position
:
absolute
;
right
:
5px
;
top
:
8px
;
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
vertical-align
:
2px
;
vertical-align
:
2px
;
...
@@ -322,10 +357,6 @@ export default {
...
@@ -322,10 +357,6 @@ export default {
display
:
inline-block
;
display
:
inline-block
;
vertical-align
:
-3px
;
vertical-align
:
-3px
;
}
}
&
:hover
{
background-color
:
#b4bccc
;
color
:
#fff
;
}
}
}
}
}
}
}
...
...
dsk-operate-ui/src/layout/index.vue
View file @
73a55eba
...
@@ -2,10 +2,9 @@
...
@@ -2,10 +2,9 @@
<div
:class=
"classObj"
class=
"app-wrapper"
:style=
"
{'--current-color': theme}">
<div
:class=
"classObj"
class=
"app-wrapper"
:style=
"
{'--current-color': theme}">
<div
v-if=
"device==='mobile'&&sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
/>
<div
v-if=
"device==='mobile'&&sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
/>
<sidebar
v-if=
"!sidebar.hide"
class=
"sidebar-container"
/>
<sidebar
v-if=
"!sidebar.hide"
class=
"sidebar-container"
/>
<div
:class=
"
{
hasTagsView:needTagsView,
sidebarHide:sidebar.hide}" class="main-container">
<div
:class=
"
{sidebarHide:sidebar.hide}" class="main-container">
<div
:class=
"
{'fixed-header':fixedHeader}">
<div
:class=
"
{'fixed-header':fixedHeader}">
<navbar/>
<navbar/>
<tags-view
v-if=
"needTagsView"
/>
</div>
</div>
<app-main/>
<app-main/>
<right-panel>
<right-panel>
...
@@ -39,7 +38,6 @@ export default {
...
@@ -39,7 +38,6 @@ export default {
sideTheme
:
state
=>
state
.
settings
.
sideTheme
,
sideTheme
:
state
=>
state
.
settings
.
sideTheme
,
sidebar
:
state
=>
state
.
app
.
sidebar
,
sidebar
:
state
=>
state
.
app
.
sidebar
,
device
:
state
=>
state
.
app
.
device
,
device
:
state
=>
state
.
app
.
device
,
needTagsView
:
state
=>
state
.
settings
.
tagsView
,
fixedHeader
:
state
=>
state
.
settings
.
fixedHeader
fixedHeader
:
state
=>
state
.
settings
.
fixedHeader
}),
}),
classObj
()
{
classObj
()
{
...
...
dsk-operate-ui/src/router/index.js
View file @
73a55eba
...
@@ -70,7 +70,7 @@ export const constantRoutes = [
...
@@ -70,7 +70,7 @@ export const constantRoutes = [
path
:
'index'
,
path
:
'index'
,
component
:
()
=>
import
(
'@/views/index'
),
component
:
()
=>
import
(
'@/views/index'
),
name
:
'Index'
,
name
:
'Index'
,
meta
:
{
title
:
'首页'
,
icon
:
'
dashboard
'
,
affix
:
true
}
meta
:
{
title
:
'首页'
,
icon
:
'
index'
,
icons
:
'indexs'
,
tagIcon
:
'indexTag'
,
tagIcons
:
'indexTags
'
,
affix
:
true
}
}
}
]
]
},
},
...
@@ -88,6 +88,26 @@ export const constantRoutes = [
...
@@ -88,6 +88,26 @@ export const constantRoutes = [
}
}
]
]
},
},
{
path
:
'/party'
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'party-a'
,
component
:
()
=>
import
(
'@/views/detail/party-a/index'
),
name
:
'PartyA'
,
meta
:
{
title
:
'甲方详情'
,
icon
:
'custom'
,
icons
:
'customs'
,
tagIcon
:
'customTag'
,
tagIcons
:
'customTags'
}
},
{
path
:
'party-b'
,
component
:
()
=>
import
(
'@/views/detail/party-b/index'
),
name
:
'PartyB'
,
meta
:
{
title
:
'已方详情'
,
icon
:
'users'
}
}
]
},
{
{
path
:
'/financing'
,
path
:
'/financing'
,
component
:
Layout
,
component
:
Layout
,
...
@@ -174,7 +194,7 @@ export const dynamicRoutes = [
...
@@ -174,7 +194,7 @@ export const dynamicRoutes = [
meta
:
{
title
:
'修改生成配置'
,
activeMenu
:
'/tool/gen'
}
meta
:
{
title
:
'修改生成配置'
,
activeMenu
:
'/tool/gen'
}
}
}
]
]
}
,
}
]
]
// 防止连续点击多次路由报错
// 防止连续点击多次路由报错
...
...
dsk-operate-ui/src/views/detail/party-a/index.vue
0 → 100644
View file @
73a55eba
<
template
>
<div
class=
"app-container"
>
甲方详情
</div>
</
template
>
<
script
>
export
default
{
name
:
'PartyA'
,
data
()
{
return
{
}
},
created
()
{
},
methods
:
{
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
dsk-operate-ui/src/views/detail/party-b/index.vue
0 → 100644
View file @
73a55eba
<
template
>
<div
v-loading=
"loading"
class=
"app-container"
>
<iframe
ref=
"companyIframe"
marginwidth=
"0"
marginheight=
"0"
frameborder=
"0"
scrolling=
"no"
width=
"100%"
:height=
"iframeHight"
:src=
"src"
/>
</div>
</
template
>
<
script
>
export
default
{
name
:
'EnterpriseData'
,
components
:
{
},
data
()
{
return
{
loading
:
false
,
// 是否加载中
companyId
:
null
,
// 企业ID
iframeHight
:
window
.
innerHeight
,
// iframe高度
scrollTop
:
0
,
// 滚动条距离内部页面顶部距离
token
:
this
.
$store
.
getters
.
token
// 需要携带的token
}
},
created
()
{
if
(
this
.
$route
.
query
.
companyId
)
{
// 获取companyId
this
.
loading
=
true
this
.
companyId
=
this
.
encodeStr
(
window
.
atob
(
this
.
$route
.
query
.
companyId
))
this
.
src
=
`https://pre-plug.jiansheku.com/enterprise/
${
this
.
companyId
}
?token=
${
this
.
token
}
`
}
// 示例传参:?companyId=window.btoa('12306')
},
mounted
()
{
this
.
getInframeHight
()
// 实时控制iframe高度
window
.
addEventListener
(
'scroll'
,
this
.
scrolling
)
// 监听页面滚动事件
},
beforeDestroy
()
{
window
.
removeEventListener
(
'scroll'
,
this
.
scrolling
)
// 销毁页面滚动事件
},
methods
:
{
getInframeHight
()
{
const
_this
=
this
window
.
addEventListener
(
'message'
,
function
(
e
)
{
const
data
=
e
.
data
const
sc
=
document
&&
document
.
documentElement
.
scrollTop
||
document
&&
document
.
body
.
scrollTop
if
(
data
&&
typeof
data
===
'object'
)
{
// 动态设置iFrame高度
if
(
data
.
height
)
{
_this
.
iframeHight
=
data
.
height
_this
.
loading
=
false
}
// 点击栏目名及子标签动态设置滚动高度
if
(
data
.
scrollHeight
)
{
window
.
scrollTo
(
sc
,
parseInt
(
data
.
scrollHeight
)
+
83
)
}
// 点击下拉子标签动态设置滚动高度
if
(
data
.
clientHeight
)
{
window
.
scrollTo
(
sc
,
sc
-
30
)
}
}
})
},
scrolling
()
{
// 滚动条距文档顶部的距离
const
scrollTop
=
window
.
pageYOffset
||
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
this
.
scrollTop
=
scrollTop
// 准备传值
this
.
$nextTick
(()
=>
{
const
ifa
=
this
.
$refs
.
companyIframe
ifa
.
contentWindow
.
postMessage
({
'scrollTop'
:
this
.
scrollTop
},
'*'
)
})
},
// companyId加密
encodeStr
(
str
,
secondary
)
{
const
table
=
'VyB2Kz79QWYjpiD5lRCIMwJEhqFSx0GN1cveZfU4gs6rk8dPbLtAomOnT3'
const
ss
=
[
2
,
7
,
5
,
1
,
4
,
8
,
3
,
0
,
6
]
const
xor
=
177451812
const
add
=
8728348608
const
mp2
=
new
Map
()
let
content
=
secondary
?
str
:
' '
let
result
=
''
// 最终加密id
if
(
!
secondary
)
{
let
s
=
parseInt
(
str
)
s
=
(
s
^
xor
)
+
add
for
(
let
i
=
0
;
i
<
table
.
length
;
i
++
)
{
const
s1
=
table
.
substring
(
i
,
i
+
1
)
mp2
.
set
(
i
,
s1
)
}
for
(
let
i
=
0
;
i
<
9
;
i
++
)
{
const
r
=
mp2
.
get
(
parseInt
(
s
/
this
.
power
(
58
,
i
)
%
58
))
content
=
this
.
changeStr
(
content
,
ss
[
i
],
r
)
}
}
// 二次加密
const
idArr
=
content
.
split
(
''
)
for
(
var
i
=
0
;
i
<
idArr
.
length
;
i
++
)
{
const
hex
=
idArr
[
i
].
charCodeAt
().
toString
(
16
)
result
=
result
+
hex
}
return
result
},
power
(
a
,
b
)
{
let
power
=
1
for
(
let
c
=
0
;
c
<
b
;
c
++
)
{
power
*=
a
}
return
power
},
changeStr
(
str
,
index
,
changeStr
)
{
return
str
.
substr
(
0
,
index
)
+
changeStr
+
str
.
substr
(
index
+
changeStr
.
length
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
dsk-operate-ui/src/views/project/projectList/index.vue
View file @
73a55eba
This diff is collapsed.
Click to expand it.
dsk-system/src/main/java/com/dsk/system/domain/Customer.java
→
dsk-system/src/main/java/com/dsk/system/domain/
customer/
Customer.java
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
;
package
com
.
dsk
.
system
.
domain
.
customer
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
...
@@ -101,17 +99,15 @@ public class Customer implements Serializable {
...
@@ -101,17 +99,15 @@ public class Customer implements Serializable {
* 其它管理体系特点
* 其它管理体系特点
*/
*/
private
String
otherMsCharacteistic
;
private
String
otherMsCharacteistic
;
/**
* 最后跟进时间
*/
private
Date
lastFollowTime
;
private
Long
createId
;
private
Long
createId
;
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Date
createTime
;
private
Date
createTime
;
private
Long
updateId
;
private
Long
updateId
;
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Date
updateTime
;
private
Date
updateTime
;
...
...
dsk-system/src/main/java/com/dsk/system/domain/CustomerDecisionChain.java
→
dsk-system/src/main/java/com/dsk/system/domain/
customer/
CustomerDecisionChain.java
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
;
package
com
.
dsk
.
system
.
domain
.
customer
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
...
@@ -54,10 +52,16 @@ public class CustomerDecisionChain implements Serializable {
...
@@ -54,10 +52,16 @@ public class CustomerDecisionChain implements Serializable {
*/
*/
private
String
remark
;
private
String
remark
;
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Date
createTime
;
private
Date
createTime
;
/**
* 更新人
*/
private
String
updateBy
;
private
Long
updateId
;
private
Long
updateId
;
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Date
updateTime
;
private
Date
updateTime
;
...
...
dsk-system/src/main/java/com/dsk/system/domain/customer/CustomerFollowRecord.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
customer
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 客户跟进记录(CustomerFollowRecord)实体类
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Data
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@TableName
(
"customer_follow_record"
)
public
class
CustomerFollowRecord
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
17639570424991398L
;
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 客户id
*/
private
String
customerId
;
/**
* 用户id
*/
private
Long
userId
;
/**
* 拜访方式(visit_mode_type)
*/
private
String
visitMode
;
/**
* 下次拜访时间
*/
private
Date
nextVisitTime
;
/**
* 拜访对象姓名
*/
private
String
name
;
/**
* 拜访对象职务
*/
private
String
position
;
/**
* 拜访内容
*/
private
String
content
;
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Date
createTime
;
}
dsk-system/src/main/java/com/dsk/system/domain/customer/CustomerUser.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
customer
;
import
com.baomidou.mybatisplus.annotation.*
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 客户负责人表
*
* @author lcl
* @create 2023/5/17
*/
@Data
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@TableName
(
"customer_user"
)
public
class
CustomerUser
implements
Serializable
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 客户id
*/
private
String
customerId
;
/**
* 负责人id
*/
private
Long
userId
;
/**
* 状态
*/
private
Integer
status
;
/**
* 创建时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
Date
careteTime
;
/**
* 修改时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
Date
updateTime
;
public
CustomerUser
(
String
customerId
,
Long
userId
)
{
this
.
customerId
=
customerId
;
this
.
userId
=
userId
;
}
}
dsk-system/src/main/java/com/dsk/system/domain/dto/CustomerDecisionChainSearchDto.java
→
dsk-system/src/main/java/com/dsk/system/domain/
customer/
dto/CustomerDecisionChainSearchDto.java
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
dto
;
package
com
.
dsk
.
system
.
domain
.
customer
.
dto
;
import
lombok.Data
;
import
lombok.Data
;
...
...
dsk-system/src/main/java/com/dsk/system/domain/customer/dto/CustomerFollowRecordSearchDto.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
customer
.
dto
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* 客户跟进记录筛选对象
*
* @author lcl
* @create 2023/5/18
*/
@Data
public
class
CustomerFollowRecordSearchDto
implements
Serializable
{
/**
* 客户id
*/
private
String
customerId
;
/**
* 用户id
*/
private
Long
userId
;
}
dsk-system/src/main/java/com/dsk/system/domain/customer/dto/CustomerSearchDto.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
customer
.
dto
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public
class
CustomerSearchDto
implements
Serializable
{
/**
* 企业名称
*/
private
String
companyName
;
/**
* 用户id
*/
private
Long
userId
;
}
dsk-system/src/main/java/com/dsk/system/domain/customer/vo/CustomerListVo.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
domain
.
customer
.
vo
;
import
lombok.Data
;
/**
* @author lcl
* @create 2023/5/17
*/
@Data
public
class
CustomerListVo
{
private
String
customerId
;
/**
* jsk企业id
*/
private
Integer
companyId
;
/**
* 客户名称(企业名称)
*/
private
String
companyName
;
/**
* 合作项目
*/
private
Integer
cooperationProject
;
/**
* 跟进项目
*/
private
Integer
followProject
;
/**
* 储备项目
*/
private
Integer
reserveProject
;
/**
* 法定代表人
*/
private
String
legalPerson
;
/**
* 注册资本(字符串)
*/
private
String
registerCapitalStr
;
/**
* 企业性质
*/
private
String
companyNature
;
/**
* 企业级别
*/
private
String
companyLevel
;
/**
* 信用等级
*/
private
String
creditLevel
;
/**
* 上级公司
*/
private
String
superCompany
;
/**
* 是否上市 0:否 1:是
*/
private
Integer
isOn
;
/**
* 是否主要客户 0:否 1:是
*/
private
Integer
isMajor
;
/**
* 发包属性
*/
private
String
companyAttribute
;
/**
* 主要业务
*/
private
String
mainBusiness
;
/**
* 经营范围
*/
private
String
businessScope
;
/**
* 商务条件特点
*/
private
String
businessCharacteristic
;
/**
* 决策链条
*/
private
String
decisionChain
;
/**
* 招投标流程特点
*/
private
String
bidCharacteristic
;
/**
* 履约阶段特点
*/
private
String
performanceCharacteristic
;
/**
* 其它管理体系特点
*/
private
String
otherMsCharacteistic
;
/**
* 跟进人
*/
private
String
followUser
;
}
dsk-system/src/main/java/com/dsk/system/dskService/EnterpriseService.java
View file @
73a55eba
...
@@ -2,13 +2,14 @@ package com.dsk.system.dskService;
...
@@ -2,13 +2,14 @@ package com.dsk.system.dskService;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.domain.model.
EnterpriseBody
;
import
com.dsk.common.core.domain.model.
*
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
/**
/**
...
@@ -26,8 +27,73 @@ public class EnterpriseService {
...
@@ -26,8 +27,73 @@ public class EnterpriseService {
@Autowired
@Autowired
private
DskOpenApiUtil
dskOpenApiUtil
;
private
DskOpenApiUtil
dskOpenApiUtil
;
public
R
infoHeader
(
EnterpriseBody
body
)
throws
Exception
{
public
R
infoHeader
(
Enterprise
InfoHeader
Body
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/api/jsk/enterprise/infoHeader"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/api/jsk/enterprise/infoHeader"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
}
public
R
statistic
(
EnterpriseStatisticBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/api/jsk/enterprise/statistic"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
bidDataGroup
(
EnterpriseBidDataGroupBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/bidDataGroup"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
supplierPage
(
EnterpriseSupplierPageBody
body
)
throws
Exception
{
Map
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"Api-Version"
,
"1.0"
);
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBodyWithHeader
(
"/api/jsk/enterpriseBusiness/selectPageSupplierInfo"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
),
headerMap
);
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
projectTenderDataGroup
(
EnterpriseProjectTenderDataGroupBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/projectTenderDataGroup"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
//todo 新数据,待入库
public
R
partners
(
EnterprisePartnersBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/partners"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
investment
(
EnterpriseInvestmentBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/investment"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
affiliates
(
EnterpriseAffiliatesBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/affiliates"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
bidNoticePage
(
EnterpriseBidNoticePageBody
body
)
throws
Exception
{
Map
<
String
,
String
>
headerMap
=
new
HashMap
<>();
headerMap
.
put
(
"Api-Version"
,
"1.0"
);
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBodyWithHeader
(
"/api/jsk/enterpriseBusiness/selectPageBidNoticeInfo"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
),
headerMap
);
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
dynamicPage
(
EnterpriseDynamicPageBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/api/jsk/enterprise/dynamic"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
icInfo
(
EnterpriseIcInfoBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/icInfo"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
changeInfo
(
EnterpriseChangeInfoBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/changeInfo"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
keymembers
(
EnterpriseKeymembersBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/keymembers"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
}
}
dsk-system/src/main/java/com/dsk/system/mapper/CustomerDecisionChainMapper.java
View file @
73a55eba
package
com
.
dsk
.
system
.
mapper
;
package
com
.
dsk
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.system.domain.CustomerDecisionChain
;
import
com.dsk.system.domain.
customer.
CustomerDecisionChain
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
...
...
dsk-system/src/main/java/com/dsk/system/mapper/CustomerFollowRecordMapper.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.system.domain.customer.CustomerFollowRecord
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 客户跟进记录(CustomerFollowRecord)表数据库访问层
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Mapper
public
interface
CustomerFollowRecordMapper
extends
BaseMapper
<
CustomerFollowRecord
>
{
}
dsk-system/src/main/java/com/dsk/system/mapper/CustomerMapper.java
View file @
73a55eba
package
com
.
dsk
.
system
.
mapper
;
package
com
.
dsk
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.system.domain.Customer
;
import
com.dsk.system.domain.customer.Customer
;
import
com.dsk.system.domain.customer.dto.CustomerSearchDto
;
import
com.dsk.system.domain.customer.vo.CustomerListVo
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
...
@@ -14,5 +19,7 @@ import org.apache.ibatis.annotations.Mapper;
...
@@ -14,5 +19,7 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
@Mapper
public
interface
CustomerMapper
extends
BaseMapper
<
Customer
>
{
public
interface
CustomerMapper
extends
BaseMapper
<
Customer
>
{
List
<
CustomerListVo
>
selectList
(
@Param
(
"dto"
)
CustomerSearchDto
dto
);
}
}
dsk-system/src/main/java/com/dsk/system/mapper/CustomerUserMapper.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.system.domain.customer.CustomerUser
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 客户负责人表(Customer)表数据库访问层
*
* @author makejava
* @since 2023-05-16 09:28:00
*/
@Mapper
public
interface
CustomerUserMapper
extends
BaseMapper
<
CustomerUser
>
{
}
dsk-system/src/main/java/com/dsk/system/service/EconomicService.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
service
;
import
com.dsk.common.core.domain.AjaxResult
;
/**
* @ClassName EconomicService
* @Description 经济大全业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public
interface
EconomicService
{
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
nationalPage
();
}
dsk-system/src/main/java/com/dsk/system/service/ICustomerDecisionChainService.java
View file @
73a55eba
package
com
.
dsk
.
system
.
service
;
package
com
.
dsk
.
system
.
service
;
import
com.dsk.system.domain.CustomerDecisionChain
;
import
com.dsk.system.domain.
customer.
CustomerDecisionChain
;
import
com.dsk.system.domain.dto.CustomerDecisionChainSearchDto
;
import
com.dsk.system.domain.
customer.
dto.CustomerDecisionChainSearchDto
;
import
java.util.List
;
import
java.util.List
;
...
...
dsk-system/src/main/java/com/dsk/system/service/ICustomerFollowRecordService.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
service
;
import
com.dsk.system.domain.customer.CustomerFollowRecord
;
import
com.dsk.system.domain.customer.dto.CustomerFollowRecordSearchDto
;
import
java.util.List
;
/**
* 客户跟进记录(CustomerFollowRecord)表服务接口
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
public
interface
ICustomerFollowRecordService
{
List
<
CustomerFollowRecord
>
selectList
(
CustomerFollowRecordSearchDto
dto
);
boolean
add
(
CustomerFollowRecord
followRecord
);
}
dsk-system/src/main/java/com/dsk/system/service/ICustomerService.java
View file @
73a55eba
package
com
.
dsk
.
system
.
service
;
package
com
.
dsk
.
system
.
service
;
import
com.dsk.system.domain.customer.Customer
;
import
com.dsk.system.domain.Customer
;
import
com.dsk.system.domain.customer.dto.CustomerSearchDto
;
import
com.dsk.system.domain.customer.vo.CustomerListVo
;
import
java.util.List
;
import
java.util.List
;
...
@@ -13,4 +14,10 @@ import java.util.List;
...
@@ -13,4 +14,10 @@ import java.util.List;
*/
*/
public
interface
ICustomerService
{
public
interface
ICustomerService
{
List
<
CustomerListVo
>
selectList
(
CustomerSearchDto
dto
);
boolean
add
(
Customer
customer
);
boolean
edit
(
Customer
customer
);
}
}
dsk-system/src/main/java/com/dsk/system/service/impl/CustomerDecisionChainServiceImpl.java
View file @
73a55eba
...
@@ -3,8 +3,8 @@ package com.dsk.system.service.impl;
...
@@ -3,8 +3,8 @@ package com.dsk.system.service.impl;
import
cn.hutool.core.bean.BeanException
;
import
cn.hutool.core.bean.BeanException
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.common.utils.SecurityUtils
;
import
com.dsk.common.utils.SecurityUtils
;
import
com.dsk.system.domain.CustomerDecisionChain
;
import
com.dsk.system.domain.
customer.
CustomerDecisionChain
;
import
com.dsk.system.domain.dto.CustomerDecisionChainSearchDto
;
import
com.dsk.system.domain.
customer.
dto.CustomerDecisionChainSearchDto
;
import
com.dsk.system.mapper.CustomerDecisionChainMapper
;
import
com.dsk.system.mapper.CustomerDecisionChainMapper
;
import
com.dsk.system.service.ICustomerDecisionChainService
;
import
com.dsk.system.service.ICustomerDecisionChainService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
...
@@ -86,5 +86,6 @@ public class CustomerDecisionChainServiceImpl implements ICustomerDecisionChainS
...
@@ -86,5 +86,6 @@ public class CustomerDecisionChainServiceImpl implements ICustomerDecisionChainS
private
void
verifyParameter
(
CustomerDecisionChain
customerDecisionChain
){
private
void
verifyParameter
(
CustomerDecisionChain
customerDecisionChain
){
if
(
ObjectUtils
.
isEmpty
(
customerDecisionChain
.
getCustomerId
()))
throw
new
BeanException
(
"客户id不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
customerDecisionChain
.
getCustomerId
()))
throw
new
BeanException
(
"客户id不能为空!"
);
customerDecisionChain
.
setUpdateId
(
SecurityUtils
.
getUserId
());
customerDecisionChain
.
setUpdateId
(
SecurityUtils
.
getUserId
());
customerDecisionChain
.
setUpdateBy
(
SecurityUtils
.
getLoginUser
().
getUser
().
getNickName
());
}
}
}
}
dsk-system/src/main/java/com/dsk/system/service/impl/CustomerFollowRecordServiceImpl.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanException
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.common.utils.SecurityUtils
;
import
com.dsk.system.domain.customer.CustomerFollowRecord
;
import
com.dsk.system.domain.customer.dto.CustomerFollowRecordSearchDto
;
import
com.dsk.system.mapper.CustomerFollowRecordMapper
;
import
com.dsk.system.service.ICustomerFollowRecordService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* 客户跟进记录(CustomerFollowRecord)表服务实现类
*
* @author makejava
* @since 2023-05-18 15:07:59
*/
@Slf4j
@Service
public
class
CustomerFollowRecordServiceImpl
implements
ICustomerFollowRecordService
{
@Resource
private
CustomerFollowRecordMapper
baseMapper
;
@Override
public
List
<
CustomerFollowRecord
>
selectList
(
CustomerFollowRecordSearchDto
dto
)
{
LambdaQueryWrapper
<
CustomerFollowRecord
>
wrapper
=
Wrappers
.
lambdaQuery
();
if
(!
ObjectUtils
.
isEmpty
(
dto
.
getCustomerId
()))
{
wrapper
.
eq
(
CustomerFollowRecord:
:
getCustomerId
,
dto
.
getCustomerId
());
}
wrapper
.
eq
(
CustomerFollowRecord:
:
getUserId
,
SecurityUtils
.
getUserId
())
.
orderByDesc
(
CustomerFollowRecord:
:
getCreateTime
);
return
baseMapper
.
selectList
(
wrapper
);
}
@Override
public
boolean
add
(
CustomerFollowRecord
followRecord
)
{
if
(
ObjectUtils
.
isEmpty
(
followRecord
.
getContent
()))
throw
new
BeanException
(
"跟进内容不能为空"
);
if
(
ObjectUtils
.
isEmpty
(
followRecord
.
getCustomerId
()))
throw
new
BeanException
(
"跟进客户不能为空"
);
followRecord
.
setUserId
(
SecurityUtils
.
getUserId
());
return
baseMapper
.
insert
(
followRecord
)
!=
0
;
}
}
dsk-system/src/main/java/com/dsk/system/service/impl/CustomerServiceImpl.java
View file @
73a55eba
package
com
.
dsk
.
system
.
service
.
impl
;
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanException
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.SecurityUtils
;
import
com.dsk.system.domain.customer.Customer
;
import
com.dsk.system.domain.customer.CustomerUser
;
import
com.dsk.system.domain.customer.dto.CustomerSearchDto
;
import
com.dsk.system.domain.customer.vo.CustomerListVo
;
import
com.dsk.system.mapper.CustomerMapper
;
import
com.dsk.system.mapper.CustomerMapper
;
import
com.dsk.system.mapper.CustomerUserMapper
;
import
com.dsk.system.service.ICustomerService
;
import
com.dsk.system.service.ICustomerService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
/**
* 客户信息表(Customer)表服务实现类
* 客户信息表(Customer)表服务实现类
...
@@ -16,6 +27,51 @@ import javax.annotation.Resource;
...
@@ -16,6 +27,51 @@ import javax.annotation.Resource;
public
class
CustomerServiceImpl
implements
ICustomerService
{
public
class
CustomerServiceImpl
implements
ICustomerService
{
@Resource
@Resource
private
CustomerMapper
customerMapper
;
private
CustomerMapper
baseMapper
;
@Resource
private
CustomerUserMapper
customerUserMapper
;
@Override
public
List
<
CustomerListVo
>
selectList
(
CustomerSearchDto
dto
)
{
dto
.
setUserId
(
SecurityUtils
.
getUserId
());
List
<
CustomerListVo
>
vos
=
baseMapper
.
selectList
(
dto
);
for
(
CustomerListVo
vo
:
vos
)
{
//TODO 客户项目相关统计
//合作项目
vo
.
setCooperationProject
(
1
);
//跟进项目
vo
.
setFollowProject
(
1
);
//储备项目
vo
.
setReserveProject
(
1
);
}
return
vos
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
add
(
Customer
customer
)
{
if
(
ObjectUtils
.
isEmpty
(
customer
.
getCompanyName
()))
throw
new
BeanException
(
"企业名称不能为空"
);
final
Long
userId
=
SecurityUtils
.
getUserId
();
customer
.
setCreateId
(
userId
);
customer
.
setUpdateId
(
userId
);
//TODO 查询企业id
customer
.
setCompanyId
(
0
);
int
i
=
baseMapper
.
insert
(
customer
);
if
(
i
==
0
)
throw
new
ServiceException
(
"客户信息添加错误!"
);
int
ui
=
customerUserMapper
.
insert
(
new
CustomerUser
(
customer
.
getCustomerId
(),
userId
));
if
(
ui
==
0
)
throw
new
ServiceException
(
"客户跟进人信息添加错误!"
);
return
true
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
edit
(
Customer
customer
)
{
if
(
ObjectUtils
.
isEmpty
(
customer
.
getCustomerId
()))
throw
new
BeanException
(
"客户id不能为空"
);
customer
.
setUpdateId
(
SecurityUtils
.
getUserId
());
int
u
=
baseMapper
.
updateById
(
customer
);
return
u
!=
0
;
}
}
}
dsk-system/src/main/java/com/dsk/system/service/impl/EconomicServiceImpl.java
0 → 100644
View file @
73a55eba
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.system.service.EconomicService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* @ClassName EconomicServiceImpl
* @Description 经济大全实现
* @Author Dgm
* @Date 2023/5/18 10:23
* @Version
*/
@Service
public
class
EconomicServiceImpl
implements
EconomicService
{
@Autowired
private
DskOpenApiUtil
dskOpenApiUtil
;
@Override
public
AjaxResult
nationalPage
()
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/xx"
,
null
);
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
}
dsk-system/src/main/resources/mapper/CustomerDecisionChainMapper.xml
→
dsk-system/src/main/resources/mapper/
system/customer/
CustomerDecisionChainMapper.xml
View file @
73a55eba
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.system.mapper.CustomerDecisionChainMapper"
>
<mapper
namespace=
"com.dsk.system.mapper.CustomerDecisionChainMapper"
>
<resultMap
type=
"com.dsk.system.domain.CustomerDecisionChain"
id=
"CustomerDecisionChainMap"
>
<resultMap
type=
"com.dsk.system.domain.
customer.
CustomerDecisionChain"
id=
"CustomerDecisionChainMap"
>
<result
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"customerId"
column=
"customer_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"customerId"
column=
"customer_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"name"
column=
"name"
jdbcType=
"VARCHAR"
/>
<result
property=
"name"
column=
"name"
jdbcType=
"VARCHAR"
/>
...
...
dsk-system/src/main/resources/mapper/system/customer/CustomerFollowRecordMapper.xml
0 → 100644
View file @
73a55eba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.system.mapper.CustomerFollowRecordMapper"
>
</mapper>
dsk-system/src/main/resources/mapper/system/customer/CustomerMapper.xml
View file @
73a55eba
...
@@ -2,6 +2,19 @@
...
@@ -2,6 +2,19 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.system.mapper.CustomerMapper"
>
<mapper
namespace=
"com.dsk.system.mapper.CustomerMapper"
>
<select
id=
"selectList"
resultType=
"com.dsk.system.domain.customer.vo.CustomerListVo"
>
select
ct.customer_id, ct.company_id, ct.company_name, ct.legal_person, ct.register_capital_str,
ct.register_capital, ct.company_nature, ct.company_level, ct.credit_level, ct.super_company,
ct.is_on, ct.is_major, ct.company_attribute, ct.main_business, ct.business_scope,
ct.business_characteristic, ct.decision_chain, ct.bid_characteristic, ct.performance_characteristic,
ct.other_ms_characteistic, u.nick_name followUser
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
join sys_user u on ctu.user_id = u.user_id
where ctu.user_id = #{dto.userId}
<if
test=
"dto.companyName != null and dto.companyName != '' "
>
and ct.company_name like concat('%',#{dto.companyName},'%')
</if>
</select>
</mapper>
</mapper>
dsk-system/src/main/resources/mapper/system/customer/CustomerUserMapper.xml
0 → 100644
View file @
73a55eba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.dsk.system.mapper.CustomerUserMapper"
>
</mapper>
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