Commit 6c0c5b7f authored by huangjie's avatar huangjie

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

parents 46ccd5b1 236c708b
......@@ -5,7 +5,6 @@ import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.constant.Constants;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.core.domain.R;
......@@ -13,8 +12,6 @@ import com.dsk.common.enums.CaptchaType;
import com.dsk.common.exception.user.CaptchaException;
import com.dsk.common.exception.user.CaptchaExpireException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DingTalkUtil;
import com.dsk.common.utils.MessageUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.email.MailUtils;
import com.dsk.common.utils.redis.RedisUtils;
......@@ -82,14 +79,13 @@ public class CaptchaController {
// 验证码模板id 自行处理 (查数据库或写死均可)
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", code);
// SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
// SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
// if (!"OK".equals(smsResponse.getCode())) {
// log.error("验证码短信发送异常 => {}", smsResponse);
// return R.fail(smsResponse.getMessage());
// }
DingTalkUtil.sendDingTalkMsg("短信通知:"+phonenumber+"登录验证码:"+code+",请尽快输入验证码完成验证,勿将验证码透露给他人,如非本人操作,请忽略本条短信。");
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("验证码短信发送异常 => {}", smsResponse);
return R.fail(smsResponse.getMessage());
}
//DingTalkUtil.sendDingTalkMsg("短信通知:"+phonenumber+"登录验证码:"+code+",请尽快输入验证码完成验证,勿将验证码透露给他人,如非本人操作,请忽略本条短信。");
return R.ok();
}
......@@ -108,19 +104,30 @@ public class CaptchaController {
}
/**
* 开发需要,临时发送短信验证码
* 发送短信验证码
*/
@GetMapping("/getTempSmsCode")
public R<Void> getTempSmsCode() {
SysUser sysUser = userMapper.selectUserById(LoginHelper.getUserId());
String key = GlobalConstants.CAPTCHA_CODE_KEY + sysUser.getPhonenumber();
String phonenumber = sysUser.getPhonenumber();
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
String code = RandomUtil.randomNumbers(6);
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
return R.ok("验证码:" + code);
// 验证码模板id 自行处理 (查数据库或写死均可)
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", code);
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, "SMS_170345261", map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("验证码短信发送异常 => {}", smsResponse);
return R.fail(smsResponse.getMessage());
}
//DingTalkUtil.sendDingTalkMsg("短信通知:"+phonenumber+"登录验证码:"+code+",请尽快输入验证码完成验证,勿将验证码透露给他人,如非本人操作,请忽略本条短信。");
return R.ok();
}
/**
* 开发需要,临时校验短信验证码
* 校验短信验证码
*
* @param smsCode 验证码
*/
......
package com.dsk.web.controller.system;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.model.DskAccessTokenVO;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil;
......@@ -133,4 +135,18 @@ public class SysConfigController extends BaseController {
configService.resetConfigCache();
return R.ok();
}
/**
* 获取大司空open 插件访问token
*/
@SaCheckLogin
@Log(title = "获取dsk访问token", businessType = BusinessType.OTHER)
@GetMapping("/dsk/accessToken")
public R<DskAccessTokenVO> dskAccessToken() {
DskAccessTokenVO dskAccessTokenVO= configService.getDskAccessToken();
return R.ok(dskAccessTokenVO);
}
}
package com.dsk.web.controller.system;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.system.domain.SysRegion;
import com.dsk.system.service.SysRegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 地区信息
*
* @author lcl
* @create 2023/6/28
*/
@RestController
@RequestMapping("/system/region")
public class SysRegionController extends BaseController {
@Autowired
private SysRegionService baseService;
/**
* 通过父id获取下级地区信息
*/
@GetMapping("/list/{parentId}")
public R<List<SysRegion>> listByParentId(@PathVariable Integer parentId) {
return R.ok(baseService.selectByParentId(parentId));
}
}
......@@ -37,10 +37,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 用户信息
......@@ -209,7 +206,7 @@ public class SysUserController extends BaseController {
public R<Void> resetPwd(@RequestBody SysUser user) {
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
user.setPassword(BCrypt.hashpw(user.getPassword()));
user.setPassword(BCrypt.hashpw(new String(Base64.getDecoder().decode(user.getPassword()))));
return toAjax(userService.resetPwd(user));
}
......
......@@ -157,6 +157,7 @@ tenant:
- sys_user_post
- sys_user_role
- sys_client
- sys_region
- contact_info
- customer_user
- customer_follow_record
......
package com.dsk.common.core.domain.model;
import lombok.Data;
/**
* @author tanyang
* @create 2023-09-11 17:20
**/
@Data
public class DskAccessTokenVO {
private String accessToken;
private Long expire;
}
......@@ -12,8 +12,10 @@ import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.*;
import com.dsk.biz.utils.ExcelUtils;
import com.dsk.biz.utils.OldFileUtils;
import com.dsk.common.annotation.DataColumn;
import com.dsk.common.annotation.DataPermission;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.jsk.service.EnterpriseService;
import com.dsk.biz.mapper.BusinessInfoMapper;
import com.dsk.biz.mapper.BusinessLabelMapper;
......@@ -131,7 +133,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计
// businessBrowseVo.setFileCount(FileUtils.getAllFileNames(ShuZhiHuaConfig.getProfile() + businessId).size());
businessBrowseVo.setFileCount(OldFileUtils.getAllFileNames(FileUploadUtils.getDefaultBaseDir() + businessId).size());
return businessBrowseVo;
}
......@@ -189,32 +191,33 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
List<BusinessExcelDto> businessInfoList = null;
try {
businessInfoList = new ExcelUtils<>(BusinessExcelDto.class).importExcel(file.getInputStream(), 2);
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException("数据导入失败,请检查文档格式是否有误!");
}
// List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany());
row++;
if (count > 0) {
//如果存在,跳过该项目,不保存
// result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
log.info("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
errorCount++;
} else {
// //查询已有的项目名称
// Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany());
// row++;
// if (count > 0) {
// //如果存在,跳过该项目,不保存
//// result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
// log.info("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
// errorCount++;
// } else {
//保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo, businessAddDto);
businessAddDto.setUserId(userId);
try {
new BusinessInfoServiceImpl().insertBusinessInfo(businessAddDto);
// new BusinessInfoServiceImpl().insertBusinessInfo(businessAddDto);
this.insertBusinessInfo(businessAddDto);
rowSuccess++;
}catch (Exception e){
errorCount++;
}
}
// }
}
result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目去重条数" + errorCount);
......
......@@ -61,7 +61,7 @@ public class CustomerServiceImpl implements ICustomerService {
dto.setUserId(LoginHelper.getUserId());
dto.setStatus(ObjectUtils.isEmpty(dto.getStatus()) ? 0 : dto.getStatus());
final TableDataInfo<CustomerListVo> result = TableDataInfo.build(baseMapper.selectList(pageQuery.build(), dto));
if(!ObjectUtils.isEmpty(result.getRows()) && !ObjectUtils.isEmpty(dto.getCompanyName())){
if (!ObjectUtils.isEmpty(result.getRows()) && !ObjectUtils.isEmpty(dto.getCompanyName())) {
for (CustomerListVo vo : result.getRows()) {
vo.setCompanyName(StringUtils.markInRed(vo.getCompanyName(), dto.getCompanyName()));
}
......@@ -121,7 +121,7 @@ public class CustomerServiceImpl implements ICustomerService {
public TableDataInfo<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) {
if (ObjectUtils.isEmpty(dto.getCustomerId())) throw new BeanException("客户id不能为空");
dto.setUserId(LoginHelper.getUserId());
return businessInfoService.selectCustomerBusinessList(dto,pageQuery);
return businessInfoService.selectCustomerBusinessList(dto, pageQuery);
}
@Override
......@@ -197,7 +197,14 @@ public class CustomerServiceImpl implements ICustomerService {
customer.setLegalPerson(MapUtil.getStr(data, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
customer.setRegisterCapital(MapUtil.getStr(data, "registeredCapitalStr"));
String registeredCapitalStr = MapUtil.getStr(data, "registeredCapitalStr");
if (!ObjectUtils.isEmpty(registeredCapitalStr)) {
int length = registeredCapitalStr.indexOf(".0");
if (length == registeredCapitalStr.length() - 2) {
registeredCapitalStr = registeredCapitalStr.replace(".0", "");
}
}
customer.setRegisterCapital(registeredCapitalStr);
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(data, "provinceId"));
......@@ -213,11 +220,11 @@ public class CustomerServiceImpl implements ICustomerService {
customer.setRegisterAddress(MapUtil.getStr(data, "domicile"));
} else {
String address = null;
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) {
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) {
address = MapUtil.getStr(data, "province");
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "city"))) {
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "city"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "city"));
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "county"))) {
if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "county"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "county"));
}
}
......
......@@ -10,6 +10,7 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.service.OssService;
import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
......@@ -228,7 +229,7 @@ public class JskCombineInfoController extends BaseController {
*@date: 2023/9/12 16:05
*/
@RequestMapping(value = "/memberCount", method = RequestMethod.POST)
public R memberCount(@RequestBody JskCombineSearchDto dto) throws Exception {
public R memberCount(@RequestBody JskCombineCountDto dto) throws Exception {
return baseService.memberCount(dto);
}
}
package com.dsk.jsk.domain;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 集团户相关查询条件实体类
*
* @author lcl
* @create 2023/8/7
*/
@Data
public class JskCombineCountDto implements Serializable {
/**
* 集团id
*/
@NotNull(message = "集团id不能为空!")
private String combineId;
/**
* 截止时间
*/
private String endTime;
/**
* 资质类型
*/
private Integer qualificationType;
}
package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
......@@ -11,9 +13,11 @@ import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
import com.dsk.jsk.util.RedisCache;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -21,9 +25,12 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* @author lcl
......@@ -38,6 +45,9 @@ public class JskCombineInfoService {
@Autowired
private EnterpriseService enterpriseService;
@Resource
private RedisCache redisCache;
public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberList", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
......@@ -236,12 +246,23 @@ public class JskCombineInfoService {
*@Author: Dgm
*@date: 2023/9/12 16:05
*/
public R memberCount(JskCombineSearchDto dto) {
public R memberCount(JskCombineCountDto dto) {
String redisKey = CacheConstants.PERSONAL_LOCATION + dto.getCombineId();
if (ObjectUtil.isNotEmpty(redisKey)) {
Map<String, Object> cacheMap = redisCache.getCacheObject(redisKey);
if (MapUtils.isNotEmpty(cacheMap)) {
return R.ok(cacheMap);
}
}
dto.setQualificationType(209);
dto.setEndTime(DateUtil.formatDate(new Date()));
Map<String, Object> paramsMap = BeanUtil.beanToMap(dto, false, false);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberCount", paramsMap);
if (ObjectUtil.isNotEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
data.put("performance", businessCount(paramsMap));
map.put("data", data);
redisCache.setCacheObject(redisKey, data,24, TimeUnit.HOURS);
}
return BeanUtil.toBean(map, R.class);
}
......
......@@ -319,7 +319,6 @@
delete i,b,co,f,l,r,u
from business_info i
left join business_backlog b on b.business_id = i.id
left join business_contacts co on co.business_id = i.id
left join business_follow_record f on f.business_id = i.id
left join business_label l on l.business_id = i.id
left join business_relate_company r on r.business_id = i.id
......
import request from "@/utils/request";
//企业数据统计
export function statistic(data) {
//集团数据统计
export function infoMemberCount(data) {
return request({
url: '/enterprise/statistic',
url: '/combine/info/memberCount',
method: 'post',
data: data
})
......
......@@ -467,7 +467,7 @@
params.cityIds=cityCode
}
if(countyCode.length > 0){
params.areaIds=countyCode
params.districtIds=countyCode
}
}else {
if(params.provinceIds){
......@@ -476,8 +476,8 @@
if(params.cityIds){
delete params.cityIds
}
if(params.areaIds){
delete params.areaIds
if(params.districtIds){
delete params.districtIds
}
}
......
......@@ -94,31 +94,29 @@ export default {
this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute))
let arr = JSON.parse(JSON.stringify(val))
for(var i in arr){
for(var j in arr[i]){
// switch (j) {
// case 'ownershipStructure':
// if(arr[i][j]<1){
// this.sideRoute[0].disabled = true;
// }
// break;
// case 'qualification':
// if(arr[i][j]<1){
// this.sideRoute[1].disabled = true;
// }
// break;
// case 'performance':
// if(arr[i][j]<1){
// this.sideRoute[2].disabled = true;
// }
// break;
// case 'biddingAnnouncement':
// if(arr[i][j]<1){
// this.sideRoute[3].disabled = true;
// }
// break;
// default:
// break;
// }
switch (i) {
case 'member':
if(arr[i]<1){
this.sideRoute[0].disabled = true;
}
break;
case 'qualification':
if(arr[i]<1){
this.sideRoute[1].disabled = true;
}
break;
case 'performance':
if(arr[i]<1){
this.sideRoute[2].disabled = true;
}
break;
case 'biddingAnnouncement':
if(arr[i]<1){
this.sideRoute[3].disabled = true;
}
break;
default:
break;
}
}
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
......
<template>
<div class="app-container group-container">
<div class="header-container" ref="header">
<div class="header-container">
<div class="flex-box part-header">
<img class="header-logo" :src="require('@/assets/images/detail/company_logo.png')">
<img class="header-logo" :src="details && details.logoUrl || require('@/assets/images/detail/company_logo.png')">
{{name || '--'}}
</div>
</div>
......@@ -30,7 +30,7 @@
import Performance from "./component/performance"
import Zhaobiao from "./component/zhaobiao"
import { infoHeader } from '@/api/detail/party-a/index'
import {combineMemberLogo,statistic} from '@/api/detail/groupAccount/groupAccount'
import {combineMemberLogo,infoMemberCount} from '@/api/detail/groupAccount/groupAccount'
import elementResizeDetectorMaker from "element-resize-detector"
export default {
name: 'GroupAccount',
......@@ -49,6 +49,7 @@
isCompany: false,
isSkeleton: false,
name:'',
details:{},
}
},
created() {
......@@ -56,9 +57,9 @@
this.customerId = this.$route.params.id
}
combineMemberLogo({combineId: this.customerId}).then(res=>{
console.log(res.data)
this.details=res.data;
})
statistic({companyId: this.$route.query.cid}).then(res=>{
infoMemberCount({combineId: this.customerId}).then(res=>{
console.log(res.data)
if(res.code==200){
this.statisticObj = res.data
......@@ -67,13 +68,9 @@
// if (this.$route.query.path) { // 获取跳转对应板块
// this.currentPath.pathName = this.$route.query.path
// }
// this.$route.query.name=''
this.name=this.$route.query.name ? this.$route.query.name : '中建集团'
},
mounted(){
// this.mainWidth=this.$refs.header.offsetWidth;
// this.width=this.$refs.contentData.offsetWidth -160;
this.name=this.$route.query.name ? this.$route.query.name : this.details.companyName
},
mounted(){},
methods: {
showPartPage(e){
this.currentPath = e
......
......@@ -336,6 +336,7 @@ export default {
financial({cid:String(id)}).then(res=>{
if(res.code==200&&!res.data){
this.sideRoute[1].disabled = true
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
}
})
},
......@@ -414,7 +415,7 @@ export default {
return true
}
}
}
}
</script>
<style lang="scss" scoped>
......
......@@ -203,7 +203,7 @@ export default {
[name]: this.queryParams[name],
}
customerUpdate(data).then(res=>{
if(res.data){
if(res.code==200){
this.$message.success(res.msg)
this.nowedit = 0
}else{
......
......@@ -643,9 +643,9 @@
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && cityIds.push(arr[i].value)&&provinceIds.push(arr[i].parent.value);
arr[i].hasChildren && cityIds.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && areaIds.push(arr[i].value)&& cityIds.push(arr[i].parent.value)&&provinceIds.push(arr[i].parent.parent.value);
!arr[i].hasChildren && areaIds.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
......
......@@ -5,41 +5,9 @@
<el-row>
<el-col :span="16">
<div class="task-wrap">
<div class="item">
<router-link to="/project/overview" tag="a">
<img class="icon-img" src="@/assets/images/index/icon1.png"/>
<p class="text">项目管理</p>
</router-link>
</div>
<div class="item">
<router-link to="/custom/overview" tag="a">
<img class="icon-img" src="@/assets/images/index/icon2.png"/>
<p class="text">客户管理</p>
</router-link>
</div>
<div class="item">
<router-link to="/macro/nationalEconomies" tag="a">
<img class="icon-img" src="@/assets/images/index/icon3.png"/>
<p class="text">全国经济大全</p>
</router-link>
</div>
<div class="item">
<router-link to="/enterpriseData/Group" tag="a">
<img class="icon-img" src="@/assets/images/index/icon4.png"/>
<p class="text">集团户</p>
</router-link>
</div>
<div class="item">
<router-link to="/enterpriseData/Owner" tag="a">
<img class="icon-img" src="@/assets/images/index/icon5.png"/>
<p class="text">查城投平台</p>
</router-link>
</div>
<div class="item">
<router-link to="/radar" tag="a">
<img class="icon-img" src="@/assets/images/index/icon6.png"/>
<p class="text">商机雷达</p>
</router-link>
<div class="item" v-for="item in routerLink" @click="handleUrl(item)">
<img class="icon-img" :src="`${item.imgUrl}`"/>
<p class="text">{{item.name}}</p>
</div>
</div>
</el-col>
......@@ -109,7 +77,7 @@
</el-row>
<div class="empty" v-if="jtzbList.length === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
<div class="p1">抱歉,没找到相关数据</div>
</div>
</div>
<div class="content content_wap2">
......@@ -178,7 +146,7 @@
</el-row>
<div class="empty" v-if="dxmbList.length === 0 && !dxmzbState">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
<div class="p1">抱歉,没找到相关数据</div>
</div>
</div>
<div class="content_wap3" ref="returnTop">
......@@ -187,7 +155,7 @@
<skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="projectList.length === 0 && !zxzbIsSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div>
<div class="p1">抱歉,没找到相关数据</div>
</div>
<div class="list" v-if="!zxzbIsSkeleton">
<div class="item" v-for="(item,index) in projectList" :key="index">
......@@ -694,7 +662,16 @@ export default {
timePlaceholder:'中标日期',
show_page:true,
MaxPage:500,
nickName:''
nickName:'',
permissions:[],
routerLink:[
{url:'/project/overview',name:'项目管理',imgUrl:require('@/assets/images/index/icon1.png')},
{url:'/custom/overview',name:'客户管理',imgUrl:require('@/assets/images/index/icon2.png')},
{url:'/macro/nationalEconomies',name:'全国经济大全',imgUrl:require('@/assets/images/index/icon3.png')},
{url:'/enterpriseData/Group',name:'集团户',imgUrl:require('@/assets/images/index/icon4.png')},
{url:'/enterpriseData/Owner',name:'查城投平台',imgUrl:require('@/assets/images/index/icon5.png')},
{url:'/radar',name:'商机雷达',imgUrl:require('@/assets/images/index/icon6.png')},
]
};
},
created() {
......@@ -718,6 +695,7 @@ export default {
getInfo(){
getInfo().then(res=>{
console.log(res)
this.permissions=res.data.permissions;
this.nickName=res.data.user.nickName
}).catch(error=>{});
},
......@@ -1405,6 +1383,72 @@ export default {
let day = String(date.getDate()).padStart(2, 0)
return `${year}-${month}-${day}`
},
handleUrl(item){
switch (item.name) {
case '项目管理':
if(this.permissions.includes('project:info')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
case '客户管理':
if(this.permissions.includes('customer:info')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
case '全国经济大全':
if(this.permissions.includes('nationalEconomies:query')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
case '集团户':
if(this.permissions.includes('group:query')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
case '查城投平台':
if(this.permissions.includes('owner:query')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
case '商机雷达':
if(this.permissions.includes('radar:query')){
this.$router.push({ path: item.url })
}else {
this.$message({
message: '您好,请联系管理员开通页面权限',
type: 'warning'
});
}
break;
default:
break;
}
}
}
};
</script>
......
......@@ -877,7 +877,7 @@ export default {
span{
color: #232323;
padding: 2px 10px;
margin-bottom: 4px;
margin-bottom: 10px;
display: inline-block;
cursor: pointer;
margin-right: 8px;
......
......@@ -931,13 +931,15 @@ export default {
Day = datetime.getDate();
if(this.radio4=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
this.startDate4 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate4 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate4 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getcountGroupByProvince()
}
if(this.radio4=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000;
this.startDate4 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate4 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate4 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getcountGroupByProvince()
}
......@@ -950,13 +952,15 @@ export default {
Day = datetime.getDate();
if(this.radio5=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
this.startDate5 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate5 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate5 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getRangByMoney()
}
if(this.radio5=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000;
this.startDate5 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate5 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate5 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getRangByMoney()
}
......@@ -968,7 +972,6 @@ export default {
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
if(this.radio6=='今日'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
this.startDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6;
......@@ -977,7 +980,8 @@ export default {
}
if(this.radio6=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
this.startDate6 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate6 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6;
this.recordParams.endTime = this.endDate6;
......@@ -985,7 +989,8 @@ export default {
}
if(this.radio6=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000;
this.startDate6 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +new Date(newTime).getDate();
let endDay = (new Date(newTime).getDate()<10?'0':'')+new Date(newTime).getDate()
this.startDate6 = new Date(newTime).getFullYear() +"-" +((new Date(newTime).getMonth() + 1)<10?'0'+(new Date(newTime).getMonth() + 1):(new Date(newTime).getMonth() + 1)) +"-" +endDay;
this.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6;
this.recordParams.endTime = this.endDate6;
......@@ -1030,6 +1035,7 @@ export default {
<style lang="scss" scoped>
.chart-top{
margin-bottom: 12px;
.left{
float: left;
height: 122px;
......
package com.dsk.system.domain;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 行政区编码表(SysRegion)实体类
*
* @author makejava
* @since 2023-06-28 11:23:12
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sys_region")
public class SysRegion implements Serializable {
private static final long serialVersionUID = -17128129449360485L;
/**
* 行政区编码(数字型)
*/
private Integer id;
/**
* 行政区名称
*/
private String regionName;
/**
* 行政区名称(最新)
*/
private String fullName;
/**
* 行政区简称
*/
private String nameSimple;
/**
* 行政区编码(字符型)
*/
private String regionCode;
/**
* 行政区等级:1:省级,2:地市,3:区县,4:乡镇,
*/
private Integer regionLevel;
/**
* 父级id
*/
private Integer parentId;
/**
* 行政区类型:0:其他,1:省,2:直辖市,3:特别行政区,4:自治区
*/
private Integer regionType;
/**
* 权重
*/
private Integer weight;
/**
* 备注
*/
private String remark;
/**
* 0:开启,1:准备中,2:关闭
*/
private Integer status;
private Date createTime;
private Date updateTime;
private Integer updateId;
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.SysRegion;
import org.apache.ibatis.annotations.Mapper;
/**
* 行政区编码表(SysRegion)表数据库访问层
*
* @author makejava
* @since 2023-06-28 11:23:13
*/
@Mapper
public interface SysRegionMapper extends BaseMapper<SysRegion> {
}
package com.dsk.system.service;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.model.DskAccessTokenVO;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.SysConfig;
......@@ -93,4 +94,5 @@ public interface ISysConfigService {
*/
boolean checkConfigKeyUnique(SysConfig config);
DskAccessTokenVO getDskAccessToken();
}
package com.dsk.system.service;
import com.dsk.system.domain.SysRegion;
import java.util.List;
/**
* 行政区编码表(SysRegion)表服务接口
*
* @author makejava
* @since 2023-06-28 11:23:12
*/
public interface SysRegionService {
List<SysRegion> selectByParentId(Integer parentId);
}
......@@ -16,7 +16,6 @@ import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.common.core.domain.entity.SysDictType;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.DingTalkUtil;
import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.*;
......@@ -25,15 +24,17 @@ import com.dsk.system.domain.vo.SysTenantVo;
import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.provider.enumerate.SupplierType;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
* 企业Service业务层处理
......@@ -43,6 +44,7 @@ import java.util.List;
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class ISysTenantServiceImpl implements ISysTenantService {
private final SysTenantMapper baseMapper;
......@@ -236,14 +238,23 @@ public class ISysTenantServiceImpl implements ISysTenantService {
}
configMapper.insertBatch(sysConfigList);
////此处暂用钉钉机器人模拟发送短信
//String content = "【短信通知】:"
// + bo.getContactUserName()
// + ",您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
// + password
// + "。友情提示:为了您的账号安全,请勿泄露密码。";
//DingTalkUtil.sendDingTalkMsg(content);
//租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信
String content = "【短信通知】:"
+ bo.getContactUserName()
+ ",您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
+ password
+ "。友情提示:为了您的账号安全,请勿泄露密码。";
DingTalkUtil.sendDingTalkMsg(content);
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("company", bo.getContactUserName());
map.put("pwd",password);
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(bo.getContactPhone(), "SMS_463175230", map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("新增租户通知短信发送异常 => {}", smsResponse);
}
return true;
}
......
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.common.constant.CacheNames;
import com.dsk.common.constant.UserConstants;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.model.DskAccessTokenVO;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.service.ConfigService;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.redis.CacheUtils;
import com.dsk.common.utils.spring.SpringUtils;
......@@ -18,11 +27,13 @@ import com.dsk.system.domain.SysConfig;
import com.dsk.system.mapper.SysConfigMapper;
import com.dsk.system.service.ISysConfigService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -31,6 +42,7 @@ import java.util.Map;
*
* @author Lion Li
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
......@@ -213,6 +225,36 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
return true;
}
@Override
public DskAccessTokenVO getDskAccessToken() {
List<SysConfig> dskName = queryListByKey("dsk");
Assert.notEmpty(dskName,"大司空数据APPkey配置异常");
Map<String,Object> dskConfig=new HashMap<>();
for (SysConfig sysConfig : dskName) {
dskConfig.put(sysConfig.getConfigKey(),sysConfig.getConfigValue());
}
String domain = (String) dskConfig.get("dsk-Domain");
String accessTokenAPI = (String) dskConfig.get("dsk-accessTokenAPI");
String appkey = (String) dskConfig.get("dsk-Appkey");
String appSecret = (String) dskConfig.get("dsk-AppSecret");
Map<String,Object> dskAccessTokenDto=new HashMap<>();
dskAccessTokenDto.put("appKey",appkey);
dskAccessTokenDto.put("appSecret",appSecret);
String post = HttpUtil.post(domain + accessTokenAPI, JsonUtils.toJsonString(dskAccessTokenDto));
Assert.notEmpty(dskName,"大司空数据accessTokenAPI响应异常");
log.info("大司空数据accessToken API响应:"+post);
Dict dict = JsonUtils.parseMap(post);
Object dataObj = dict.getObj("data");
if (dict.getInt("code")!=200||ObjectUtil.isEmpty(dataObj)) {
throw new ServiceException("API数据accessTokenAPI响应异常",500);
}
return BeanUtil.toBean(dataObj,DskAccessTokenVO.class);
}
/**
* 根据参数 key 获取参数值
*
......@@ -224,4 +266,10 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
return SpringUtils.getAopProxy(this).selectConfigByKey(configKey);
}
public List<SysConfig> queryListByKey(String keyName){
LambdaQueryWrapper<SysConfig> dsk = new LambdaQueryWrapper<SysConfig>().likeRight(SysConfig::getConfigKey, keyName);
return baseMapper.selectList(dsk);
}
}
package com.dsk.system.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.system.domain.SysRegion;
import com.dsk.system.mapper.SysRegionMapper;
import com.dsk.system.service.SysRegionService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 行政区编码表(SysRegion)表服务实现类
*
* @author makejava
* @since 2023-06-28 11:23:12
*/
@Service("sysRegionService")
public class SysRegionServiceImpl implements SysRegionService {
@Resource
private SysRegionMapper baseMapper;
private static final Integer ACQUIESCE_PARENT_ID = 100000;
@Override
public List<SysRegion> selectByParentId(Integer parentId) {
return baseMapper.selectList(Wrappers.<SysRegion>lambdaQuery()
.eq(SysRegion::getParentId, ObjectUtils.isEmpty(parentId) ? ACQUIESCE_PARENT_ID : parentId)
.orderByAsc(SysRegion::getId));
}
}
......@@ -18,7 +18,6 @@ import com.dsk.common.core.service.UserService;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.DataBaseHelper;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DingTalkUtil;
import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils;
......@@ -27,11 +26,16 @@ import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.provider.enumerate.SupplierType;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
......@@ -273,13 +277,23 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
// 新增用户信息
int rows = baseMapper.insert(user);
if (rows > 0) {
//租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信
String content = "短信通知:"+user.getNickName()
+ "您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
+ password
+ "。友情提示:为了您的账号安全,请勿泄露密码。";
DingTalkUtil.sendDingTalkMsg(content);
//String content = "短信通知:"+user.getNickName()
// + "您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
// + password
// + "。友情提示:为了您的账号安全,请勿泄露密码。";
//DingTalkUtil.sendDingTalkMsg(content);
//租户新增成功,发送短信通知租户
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("company", user.getNickName());
map.put("pwd",password);
SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
SmsResponse smsResponse = smsBlend.sendMessage(user.getPhonenumber(), "SMS_463175230", map);
if (!"OK".equals(smsResponse.getCode())) {
log.error("新增用户通知短信发送异常 => {}", smsResponse);
}
}
// 新增用户岗位关联
insertUserPost(user);
......
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