Commit 6b4182c1 authored by danfuman's avatar danfuman

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

parents 9555bd6a fb3a2254
...@@ -190,3 +190,4 @@ sms: ...@@ -190,3 +190,4 @@ sms:
territory: ap-guangzhou territory: ap-guangzhou
dsk: dsk:
exportBackUrl: https://szhapi.jiansheku.com/export/backUrl
\ No newline at end of file
...@@ -160,6 +160,8 @@ tenant: ...@@ -160,6 +160,8 @@ tenant:
- sys_client - sys_client
- sys_region - sys_region
- sys_user_file_record - sys_user_file_record
- sys_oss_config
- sys_region
- contact_info - contact_info
- customer_user - customer_user
- customer_follow_record - customer_follow_record
......
...@@ -48,4 +48,15 @@ public interface GlobalConstants { ...@@ -48,4 +48,15 @@ public interface GlobalConstants {
*/ */
String BATCH_IMPORT_FAIL_USERS = GLOBAL_REDIS_KEY + "batch_import_fail_users"; String BATCH_IMPORT_FAIL_USERS = GLOBAL_REDIS_KEY + "batch_import_fail_users";
/**
* OSS配置
*/
String SYS_OSS_CONFIG = GLOBAL_REDIS_KEY + "sys_oss_config";
/**
* 默认配置KEY
*/
String DEFAULT_CONFIG_KEY = GLOBAL_REDIS_KEY + "sys_oss:default_config";
} }
...@@ -52,7 +52,6 @@ public class ExportController { ...@@ -52,7 +52,6 @@ public class ExportController {
public AjaxResult enterpriseInfoExport(@RequestBody JSONObject object) { public AjaxResult enterpriseInfoExport(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class); ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (null==compose.getAptitudeQueryDto() if (null==compose.getAptitudeQueryDto()
||CollectionUtils.isEmpty(compose.getAptitudeQueryDto().getAptitudeDtoList())
|| !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) { || !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
return AjaxResult.warn("导出筛选条件为空!"); return AjaxResult.warn("导出筛选条件为空!");
} }
...@@ -60,6 +59,7 @@ public class ExportController { ...@@ -60,6 +59,7 @@ public class ExportController {
object.put("exportExeclName","企业基本信息导出"); object.put("exportExeclName","企业基本信息导出");
} }
object.put("exportTemplateName","szh-enterprise-info.xlsx"); object.put("exportTemplateName","szh-enterprise-info.xlsx");
object.put("exportStartRow",3);
return exportService.enterpriseInfoExport(object); return exportService.enterpriseInfoExport(object);
} }
...@@ -70,14 +70,14 @@ public class ExportController { ...@@ -70,14 +70,14 @@ public class ExportController {
public AjaxResult enterpriseAptitudeExport(@RequestBody JSONObject object) { public AjaxResult enterpriseAptitudeExport(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class); ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (null==compose.getAptitudeQueryDto() if (null==compose.getAptitudeQueryDto()
||CollectionUtils.isEmpty(compose.getAptitudeQueryDto().getAptitudeDtoList()) || !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto(), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
|| !ObjectUtils.hasValueThroughObj(compose.getAptitudeQueryDto().getAptitudeDtoList().get(0), null, Arrays.asList("and", "or", "yes", "no", "level", "qualification", "new", "only"))) {
return AjaxResult.warn("导出筛选条件为空!"); return AjaxResult.warn("导出筛选条件为空!");
} }
if (StringUtils.isEmpty(compose.getExportExeclName())){ if (StringUtils.isEmpty(compose.getExportExeclName())){
object.put("exportExeclName","企业资质信息导出"); object.put("exportExeclName","企业资质信息导出");
} }
object.put("exportTemplateName","szh-cert-info.xlsx"); object.put("exportTemplateName","szh-cert-info.xlsx");
object.put("exportStartRow",3);
return exportService.enterpriseAptitudeExport(object); return exportService.enterpriseAptitudeExport(object);
} }
......
...@@ -46,7 +46,7 @@ public class ExportService { ...@@ -46,7 +46,7 @@ public class ExportService {
//企业基本信息导出 //企业基本信息导出
public AjaxResult enterpriseInfoExport(JSONObject object) { public AjaxResult enterpriseInfoExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString()); fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
...@@ -62,7 +62,7 @@ public class ExportService { ...@@ -62,7 +62,7 @@ public class ExportService {
//企业资质导出 //企业资质导出
public AjaxResult enterpriseAptitudeExport(JSONObject object) { public AjaxResult enterpriseAptitudeExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString()); fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
...@@ -78,7 +78,7 @@ public class ExportService { ...@@ -78,7 +78,7 @@ public class ExportService {
//重点项目清单 //重点项目清单
public AjaxResult importantExport(JSONObject object) { public AjaxResult importantExport(JSONObject object) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(object.get("exportExeclName").toString()); fileRecord.setFileName(object.get("exportExeclName").toString().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
...@@ -94,7 +94,7 @@ public class ExportService { ...@@ -94,7 +94,7 @@ public class ExportService {
//集团成员导出 //集团成员导出
public AjaxResult memberListExport(JskCombineSearchDto dto) { public AjaxResult memberListExport(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName()); fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
...@@ -110,7 +110,7 @@ public class ExportService { ...@@ -110,7 +110,7 @@ public class ExportService {
//集团中标业绩导出 //集团中标业绩导出
public AjaxResult exportWinBid(JskCombineSearchDto dto) { public AjaxResult exportWinBid(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName()); fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
...@@ -126,7 +126,7 @@ public class ExportService { ...@@ -126,7 +126,7 @@ public class ExportService {
//集团招标业绩 //集团招标业绩
public AjaxResult exportBid(JskCombineSearchDto dto) { public AjaxResult exportBid(JskCombineSearchDto dto) {
SysUserFileRecord fileRecord = new SysUserFileRecord(); SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName(dto.getExportExeclName()); fileRecord.setFileName(dto.getExportExeclName().concat(Constants.SUFFIX_XLSX));
fileRecord.setType(1); fileRecord.setType(1);
//生成中 //生成中
fileRecord.setStatus(2); fileRecord.setStatus(2);
......
...@@ -163,7 +163,6 @@ ...@@ -163,7 +163,6 @@
</template> </template>
<script> <script>
import ClipboardJS from 'clipboard';
import { changePath, encodeStr } from '@/assets/js/common'; import { changePath, encodeStr } from '@/assets/js/common';
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js'); var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js');
import "@/assets/lib/swiper/swiper-bundle.css"; import "@/assets/lib/swiper/swiper-bundle.css";
...@@ -205,11 +204,6 @@ export default { ...@@ -205,11 +204,6 @@ export default {
}, },
mounted() { mounted() {
this.handleWidth(); //企业背景是否收起 this.handleWidth(); //企业背景是否收起
if (this.childStatistic.combineMember) {
this.graphList.unshift({
id: 0, name: '所属集团-' + this.childStatistic.combineMember.companyName, isShow: true, intro: [], ico: require('@/assets/images/detail/overview/company_ssjt.png')
});
}
this.companySwiper(); //swiper滚动板块 this.companySwiper(); //swiper滚动板块
api.label({ companyId: this.companyId }).then(res => { api.label({ companyId: this.companyId }).then(res => {
if (res.code == 200) { if (res.code == 200) {
...@@ -320,6 +314,9 @@ export default { ...@@ -320,6 +314,9 @@ export default {
} }
this.companySwiper(); //swiper滚动板块 this.companySwiper(); //swiper滚动板块
}, },
resetGrapList() {
this.graphList = this.$options.data.call(this).graphList;
},
//获取认领状态 //获取认领状态
getClaimStatus() { getClaimStatus() {
this.ifClaim = this.companyInfo.claimStatus; this.ifClaim = this.companyInfo.claimStatus;
...@@ -406,6 +403,7 @@ export default { ...@@ -406,6 +403,7 @@ export default {
statistic: { statistic: {
handler(newVal, oldVal) { handler(newVal, oldVal) {
this.childStatistic = newVal; this.childStatistic = newVal;
this.resetGrapList();
this.handleStatistic(); this.handleStatistic();
}, },
deep: true, deep: true,
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" width="60"> <el-table-column label="序号" width="60">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{(queryParams.pageNum - 1) *queryParams.pageSize + scope.$index + 1}}</span> <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="企业名称" prop="companyName" :show-overflow-tooltip="true" width="150" /> <el-table-column label="企业名称" prop="companyName" :show-overflow-tooltip="true" width="150" />
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改对话框 --> <!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false"> <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
...@@ -85,8 +85,8 @@ ...@@ -85,8 +85,8 @@
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="续约时间" prop="dateRange"> <el-form-item label="续约时间" prop="dateRange">
<el-date-picker :disabled="disabled" v-model="form.dateRange" style="width: 100%" value-format="yyyy-MM-dd HH:mm:ss" <el-date-picker :disabled="disabled" v-model="form.dateRange" style="width: 100%" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange"
type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
...@@ -105,8 +105,7 @@ ...@@ -105,8 +105,7 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="企业规模" prop="accountCount"> <el-form-item label="企业规模" prop="accountCount">
<el-input onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" :disabled="disabled" v-model="form.accountCount" <el-input onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" :disabled="disabled" v-model="form.accountCount" placeholder="请输入企业规模" />
placeholder="请输入企业规模" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -114,7 +113,7 @@ ...@@ -114,7 +113,7 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status" :disabled="disabled"> <el-radio-group v-model="form.status" :disabled="disabled">
<el-radio v-for="dict in dict.type.sys_user_status" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio> <el-radio v-for="dict in dict.type.sys_user_status" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -258,6 +257,7 @@ export default { ...@@ -258,6 +257,7 @@ export default {
// 新增用户账号 // 新增用户账号
async handleAddAccount(row) { async handleAddAccount(row) {
try { try {
if (row.status == "1") return this.$message.warning("该企业账号已过期,不能添加用户");
if (!row.tenantId) return this.$message.warning("缺少租户ID"); if (!row.tenantId) return this.$message.warning("缺少租户ID");
await this.getAccountCount(row.tenantId); await this.getAccountCount(row.tenantId);
if (this.addAccountCount >= 6) { if (this.addAccountCount >= 6) {
...@@ -448,6 +448,7 @@ export default { ...@@ -448,6 +448,7 @@ export default {
.el-dialog__header { .el-dialog__header {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
} }
.el-dialog__body { .el-dialog__body {
padding: 15px 20px; padding: 15px 20px;
} }
......
package com.dsk.oss.factory; package com.dsk.oss.factory;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.oss.constant.OssConstant; import com.dsk.oss.constant.OssConstant;
import com.dsk.oss.exception.OssException; import com.dsk.oss.exception.OssException;
import com.dsk.oss.properties.OssProperties; import com.dsk.oss.properties.OssProperties;
...@@ -29,7 +30,7 @@ public class OssFactory { ...@@ -29,7 +30,7 @@ public class OssFactory {
*/ */
public static OssClient instance() { public static OssClient instance() {
// 获取redis 默认类型 // 获取redis 默认类型
String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY); String configKey = RedisUtils.getCacheObject(GlobalConstants.DEFAULT_CONFIG_KEY);
if (StringUtils.isEmpty(configKey)) { if (StringUtils.isEmpty(configKey)) {
throw new OssException("文件存储服务类型无法找到!"); throw new OssException("文件存储服务类型无法找到!");
} }
...@@ -40,7 +41,7 @@ public class OssFactory { ...@@ -40,7 +41,7 @@ public class OssFactory {
* 根据类型获取实例 * 根据类型获取实例
*/ */
public static OssClient instance(String configKey) { public static OssClient instance(String configKey) {
String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); String json = CacheUtils.get(GlobalConstants.SYS_OSS_CONFIG, configKey);
if (json == null) { if (json == null) {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
} }
......
...@@ -406,15 +406,15 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -406,15 +406,15 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public int deleteAuthUser(SysUserRole userRole) { public int deleteAuthUser(SysUserRole userRole) {
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(userRole.getRoleId());
//若该账号仅有一个角色,则不允许取消授权 //若该账号仅有一个角色,则不允许取消授权
SysUser sysUser = userMapper.selectUserById(userRole.getUserId()); SysUser sysUser = userMapper.selectUserById(userRole.getUserId());
if (sysUser.getRoles().size() == 1) { if (sysUser.getRoles().size() == 1) {
throw new ServiceException("至少保留一个角色在该账号下"); throw new ServiceException("至少保留一个角色在该账号下");
} }
//校验企业管理员角色下是否至少有一个账号
checkAdminHasUsers(userRole.getRoleId());
int rows = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>() int rows = userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getRoleId, userRole.getRoleId()) .eq(SysUserRole::getRoleId, userRole.getRoleId())
.eq(SysUserRole::getUserId, userRole.getUserId())); .eq(SysUserRole::getUserId, userRole.getUserId()));
...@@ -433,6 +433,9 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -433,6 +433,9 @@ public class SysRoleServiceImpl implements ISysRoleService {
*/ */
@Override @Override
public int deleteAuthUsers(Long roleId, Long[] userIds) { public int deleteAuthUsers(Long roleId, Long[] userIds) {
//校验企业管理员角色下是否至少有一个账号
Integer users = checkAdminHasUsers(roleId);
//若该账号仅有一个角色,则不允许取消授权 //若该账号仅有一个角色,则不允许取消授权
StringBuilder lackRoleAccount = new StringBuilder(); StringBuilder lackRoleAccount = new StringBuilder();
for (Long userId : userIds) { for (Long userId : userIds) {
...@@ -441,13 +444,12 @@ public class SysRoleServiceImpl implements ISysRoleService { ...@@ -441,13 +444,12 @@ public class SysRoleServiceImpl implements ISysRoleService {
lackRoleAccount.append(sysUser.getUserName()).append(","); lackRoleAccount.append(sysUser.getUserName()).append(",");
} }
} }
//将缺少角色的账号返回给前端 //将缺少角色的账号返回给前端
if (lackRoleAccount.toString().contains(",")) { if (lackRoleAccount.toString().contains(",")) {
throw new ServiceException(lackRoleAccount.substring(0, lackRoleAccount.length()-1)); throw new ServiceException(lackRoleAccount.substring(0, lackRoleAccount.length()-1));
} }
//校验企业管理员角色下是否至少有一个账号
Integer users = checkAdminHasUsers(roleId);
//如果取消授权企业管理员角色下所有账号,则抛异常 //如果取消授权企业管理员角色下所有账号,则抛异常
if (users != null && userIds.length == users) { if (users != null && userIds.length == users) {
throw new ServiceException("至少要保留一个账号在企业管理员角色下!"); throw new ServiceException("至少要保留一个账号在企业管理员角色下!");
......
...@@ -7,8 +7,10 @@ import com.dsk.acc.openapi.api.AccClient; ...@@ -7,8 +7,10 @@ import com.dsk.acc.openapi.api.AccClient;
import com.dsk.acc.openapi.client.Config; import com.dsk.acc.openapi.client.Config;
import com.dsk.acc.openapi.client.util.CommonUtils; import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.config.DskOpenApiConfig; import com.dsk.common.config.DskOpenApiConfig;
import com.dsk.common.constant.TenantConstants;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.system.domain.SysConfig; import com.dsk.system.domain.SysConfig;
import com.dsk.system.mapper.SysConfigMapper; import com.dsk.system.mapper.SysConfigMapper;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
...@@ -124,20 +126,14 @@ public class DskOpenApiUtil { ...@@ -124,20 +126,14 @@ public class DskOpenApiUtil {
return new TableDataInfo((List<?>) list, count); return new TableDataInfo((List<?>) list, count);
} }
private void initApiConfig() throws Exception { private void initApiConfig() {
DskOpenApiConfig dskOpenApiConfig = new DskOpenApiConfig(); TenantHelper.ignore(() -> {
Class<DskOpenApiConfig> clazz = DskOpenApiConfig.class; SysConfig accessKeyId = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-Appkey"));
Field[] fields = clazz.getDeclaredFields(); SysConfig accessKeySecret = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-AppSecret"));
for (int i = 0; i < fields.length; i++) { SysConfig endPoint = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getTenantId, TenantConstants.DEFAULT_TENANT_ID).eq(SysConfig::getConfigKey, "dsk-Domain"));
fields[i].setAccessible(true); config = new Config(accessKeyId.getConfigValue(), accessKeySecret.getConfigValue())
SysConfig config = sysConfigMapper.selectOne(Wrappers.<SysConfig>lambdaQuery().eq(SysConfig::getConfigKey, "plugIn-".concat(fields[i].getName()))); .setEndpoint(endPoint.getConfigValue());
fields[i].set(dskOpenApiConfig, config.getConfigValue()); });
}
if (ObjectUtils.isEmpty(dskOpenApiConfig)) {
throw new ServiceException("DskOpenApiConfig 初始化失败!");
}
config = new Config(dskOpenApiConfig.accessKeyId, dskOpenApiConfig.accessKeySecret)
.setEndpoint(dskOpenApiConfig.endPoint);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment