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; ...@@ -5,7 +5,6 @@ import cn.hutool.captcha.AbstractCaptcha;
import cn.hutool.captcha.generator.CodeGenerator; import cn.hutool.captcha.generator.CodeGenerator;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.constant.GlobalConstants; import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
...@@ -13,8 +12,6 @@ import com.dsk.common.enums.CaptchaType; ...@@ -13,8 +12,6 @@ import com.dsk.common.enums.CaptchaType;
import com.dsk.common.exception.user.CaptchaException; import com.dsk.common.exception.user.CaptchaException;
import com.dsk.common.exception.user.CaptchaExpireException; import com.dsk.common.exception.user.CaptchaExpireException;
import com.dsk.common.helper.LoginHelper; 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.StringUtils;
import com.dsk.common.utils.email.MailUtils; import com.dsk.common.utils.email.MailUtils;
import com.dsk.common.utils.redis.RedisUtils; import com.dsk.common.utils.redis.RedisUtils;
...@@ -82,14 +79,13 @@ public class CaptchaController { ...@@ -82,14 +79,13 @@ public class CaptchaController {
// 验证码模板id 自行处理 (查数据库或写死均可) // 验证码模板id 自行处理 (查数据库或写死均可)
LinkedHashMap<String, String> map = new LinkedHashMap<>(1); LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
map.put("code", code); map.put("code", code);
// SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA); SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
// SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map); SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
// if (!"OK".equals(smsResponse.getCode())) { if (!"OK".equals(smsResponse.getCode())) {
// log.error("验证码短信发送异常 => {}", smsResponse); log.error("验证码短信发送异常 => {}", smsResponse);
// return R.fail(smsResponse.getMessage()); return R.fail(smsResponse.getMessage());
// } }
DingTalkUtil.sendDingTalkMsg("短信通知:"+phonenumber+"登录验证码:"+code+",请尽快输入验证码完成验证,勿将验证码透露给他人,如非本人操作,请忽略本条短信。"); //DingTalkUtil.sendDingTalkMsg("短信通知:"+phonenumber+"登录验证码:"+code+",请尽快输入验证码完成验证,勿将验证码透露给他人,如非本人操作,请忽略本条短信。");
return R.ok(); return R.ok();
} }
...@@ -108,19 +104,30 @@ public class CaptchaController { ...@@ -108,19 +104,30 @@ public class CaptchaController {
} }
/** /**
* 开发需要,临时发送短信验证码 * 发送短信验证码
*/ */
@GetMapping("/getTempSmsCode") @GetMapping("/getTempSmsCode")
public R<Void> getTempSmsCode() { public R<Void> getTempSmsCode() {
SysUser sysUser = userMapper.selectUserById(LoginHelper.getUserId()); 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); String code = RandomUtil.randomNumbers(6);
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION)); 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 验证码 * @param smsCode 验证码
*/ */
......
package com.dsk.web.controller.system; package com.dsk.web.controller.system;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import com.dsk.common.annotation.Log; import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R; 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.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType; import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil; import com.dsk.common.utils.poi.ExcelUtil;
...@@ -133,4 +135,18 @@ public class SysConfigController extends BaseController { ...@@ -133,4 +135,18 @@ public class SysConfigController extends BaseController {
configService.resetConfigCache(); configService.resetConfigCache();
return R.ok(); 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.*; ...@@ -37,10 +37,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 用户信息 * 用户信息
...@@ -209,7 +206,7 @@ public class SysUserController extends BaseController { ...@@ -209,7 +206,7 @@ public class SysUserController extends BaseController {
public R<Void> resetPwd(@RequestBody SysUser user) { public R<Void> resetPwd(@RequestBody SysUser user) {
userService.checkUserAllowed(user); userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId()); 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)); return toAjax(userService.resetPwd(user));
} }
......
...@@ -157,6 +157,7 @@ tenant: ...@@ -157,6 +157,7 @@ tenant:
- sys_user_post - sys_user_post
- sys_user_role - sys_user_role
- sys_client - sys_client
- sys_region
- contact_info - contact_info
- customer_user - customer_user
- customer_follow_record - 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; ...@@ -12,8 +12,10 @@ import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto; import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.*; import com.dsk.biz.domain.vo.*;
import com.dsk.biz.utils.ExcelUtils; import com.dsk.biz.utils.ExcelUtils;
import com.dsk.biz.utils.OldFileUtils;
import com.dsk.common.annotation.DataColumn; import com.dsk.common.annotation.DataColumn;
import com.dsk.common.annotation.DataPermission; import com.dsk.common.annotation.DataPermission;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.jsk.service.EnterpriseService; import com.dsk.jsk.service.EnterpriseService;
import com.dsk.biz.mapper.BusinessInfoMapper; import com.dsk.biz.mapper.BusinessInfoMapper;
import com.dsk.biz.mapper.BusinessLabelMapper; import com.dsk.biz.mapper.BusinessLabelMapper;
...@@ -131,7 +133,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -131,7 +133,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount()); businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount()); businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计 //资料文档统计
// businessBrowseVo.setFileCount(FileUtils.getAllFileNames(ShuZhiHuaConfig.getProfile() + businessId).size()); businessBrowseVo.setFileCount(OldFileUtils.getAllFileNames(FileUploadUtils.getDefaultBaseDir() + businessId).size());
return businessBrowseVo; return businessBrowseVo;
} }
...@@ -189,32 +191,33 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -189,32 +191,33 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
List<BusinessExcelDto> businessInfoList = null; List<BusinessExcelDto> businessInfoList = null;
try { try {
businessInfoList = new ExcelUtils<>(BusinessExcelDto.class).importExcel(file.getInputStream(), 2); businessInfoList = new ExcelUtils<>(BusinessExcelDto.class).importExcel(file.getInputStream(), 2);
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); throw new ServiceException("数据导入失败,请检查文档格式是否有误!");
} }
// List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file); // List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) { for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称 // //查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany()); // Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany());
row++; // row++;
if (count > 0) { // if (count > 0) {
//如果存在,跳过该项目,不保存 // //如果存在,跳过该项目,不保存
// result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条"); //// result.add("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
log.info("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条"); // log.info("第" + row + "行的" + businessInfo.getProjectName() + "的项目已存在,跳过该项目,保存下一条");
errorCount++; // errorCount++;
} else { // } else {
//保存到数据库 //保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto(); BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo, businessAddDto); BeanUtil.copyProperties(businessInfo, businessAddDto);
businessAddDto.setUserId(userId); businessAddDto.setUserId(userId);
try { try {
new BusinessInfoServiceImpl().insertBusinessInfo(businessAddDto); // new BusinessInfoServiceImpl().insertBusinessInfo(businessAddDto);
this.insertBusinessInfo(businessAddDto);
rowSuccess++; rowSuccess++;
}catch (Exception e){ }catch (Exception e){
errorCount++; errorCount++;
} }
} // }
} }
result.add("导入项目成功条数" + rowSuccess); result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目去重条数" + errorCount); result.add("导入项目去重条数" + errorCount);
......
...@@ -61,7 +61,7 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -61,7 +61,7 @@ public class CustomerServiceImpl implements ICustomerService {
dto.setUserId(LoginHelper.getUserId()); dto.setUserId(LoginHelper.getUserId());
dto.setStatus(ObjectUtils.isEmpty(dto.getStatus()) ? 0 : dto.getStatus()); dto.setStatus(ObjectUtils.isEmpty(dto.getStatus()) ? 0 : dto.getStatus());
final TableDataInfo<CustomerListVo> result = TableDataInfo.build(baseMapper.selectList(pageQuery.build(), dto)); 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()) { for (CustomerListVo vo : result.getRows()) {
vo.setCompanyName(StringUtils.markInRed(vo.getCompanyName(), dto.getCompanyName())); vo.setCompanyName(StringUtils.markInRed(vo.getCompanyName(), dto.getCompanyName()));
} }
...@@ -121,7 +121,7 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -121,7 +121,7 @@ public class CustomerServiceImpl implements ICustomerService {
public TableDataInfo<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) { public TableDataInfo<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery) {
if (ObjectUtils.isEmpty(dto.getCustomerId())) throw new BeanException("客户id不能为空"); if (ObjectUtils.isEmpty(dto.getCustomerId())) throw new BeanException("客户id不能为空");
dto.setUserId(LoginHelper.getUserId()); dto.setUserId(LoginHelper.getUserId());
return businessInfoService.selectCustomerBusinessList(dto,pageQuery); return businessInfoService.selectCustomerBusinessList(dto, pageQuery);
} }
@Override @Override
...@@ -197,7 +197,14 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -197,7 +197,14 @@ public class CustomerServiceImpl implements ICustomerService {
customer.setLegalPerson(MapUtil.getStr(data, "legalPerson")); customer.setLegalPerson(MapUtil.getStr(data, "legalPerson"));
} }
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) { 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())) { if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(data, "provinceId")); customer.setProvinceId(MapUtil.getInt(data, "provinceId"));
...@@ -213,11 +220,11 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -213,11 +220,11 @@ public class CustomerServiceImpl implements ICustomerService {
customer.setRegisterAddress(MapUtil.getStr(data, "domicile")); customer.setRegisterAddress(MapUtil.getStr(data, "domicile"));
} else { } else {
String address = null; String address = null;
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) { if (!ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) {
address = 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")); 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")); address = address.concat("-").concat(MapUtil.getStr(data, "county"));
} }
} }
......
...@@ -10,6 +10,7 @@ import com.dsk.common.core.page.TableDataInfo; ...@@ -10,6 +10,7 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.core.service.OssService; import com.dsk.common.core.service.OssService;
import com.dsk.jsk.domain.JskCombineBidPageDto; import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto; import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto; import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo; import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo; import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
...@@ -228,7 +229,7 @@ public class JskCombineInfoController extends BaseController { ...@@ -228,7 +229,7 @@ public class JskCombineInfoController extends BaseController {
*@date: 2023/9/12 16:05 *@date: 2023/9/12 16:05
*/ */
@RequestMapping(value = "/memberCount", method = RequestMethod.POST) @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); 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; package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil; 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.AjaxResult;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
...@@ -11,9 +13,11 @@ import com.dsk.common.utils.DskOpenApiUtil; ...@@ -11,9 +13,11 @@ import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.JskCombineBidPageDto; import com.dsk.jsk.domain.JskCombineBidPageDto;
import com.dsk.jsk.domain.JskCombineCertificateDto; import com.dsk.jsk.domain.JskCombineCertificateDto;
import com.dsk.jsk.domain.JskCombineCountDto;
import com.dsk.jsk.domain.JskCombineSearchDto; import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo; import com.dsk.jsk.domain.vo.JskCombineBidProjectExportVo;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo; import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
import com.dsk.jsk.util.RedisCache;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -21,9 +25,12 @@ import org.springframework.http.HttpStatus; ...@@ -21,9 +25,12 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
/** /**
* @author lcl * @author lcl
...@@ -38,6 +45,9 @@ public class JskCombineInfoService { ...@@ -38,6 +45,9 @@ public class JskCombineInfoService {
@Autowired @Autowired
private EnterpriseService enterpriseService; private EnterpriseService enterpriseService;
@Resource
private RedisCache redisCache;
public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception { public TableDataInfo memberList(JskCombineSearchDto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberList", BeanUtil.beanToMap(dto, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberList", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map); return dskOpenApiUtil.responsePage(map);
...@@ -236,12 +246,23 @@ public class JskCombineInfoService { ...@@ -236,12 +246,23 @@ public class JskCombineInfoService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/9/12 16:05 *@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> paramsMap = BeanUtil.beanToMap(dto, false, false);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberCount", paramsMap); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/combine/memberCount", paramsMap);
if (ObjectUtil.isNotEmpty(map.get("data"))) { if (ObjectUtil.isNotEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data")); Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
data.put("performance", businessCount(paramsMap)); data.put("performance", businessCount(paramsMap));
map.put("data", data);
redisCache.setCacheObject(redisKey, data,24, TimeUnit.HOURS);
} }
return BeanUtil.toBean(map, R.class); return BeanUtil.toBean(map, R.class);
} }
......
...@@ -319,7 +319,6 @@ ...@@ -319,7 +319,6 @@
delete i,b,co,f,l,r,u delete i,b,co,f,l,r,u
from business_info i from business_info i
left join business_backlog b on b.business_id = i.id 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_follow_record f on f.business_id = i.id
left join business_label l on l.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 left join business_relate_company r on r.business_id = i.id
......
import request from "@/utils/request"; import request from "@/utils/request";
//企业数据统计 //集团数据统计
export function statistic(data) { export function infoMemberCount(data) {
return request({ return request({
url: '/enterprise/statistic', url: '/combine/info/memberCount',
method: 'post', method: 'post',
data: data data: data
}) })
......
...@@ -467,7 +467,7 @@ ...@@ -467,7 +467,7 @@
params.cityIds=cityCode params.cityIds=cityCode
} }
if(countyCode.length > 0){ if(countyCode.length > 0){
params.areaIds=countyCode params.districtIds=countyCode
} }
}else { }else {
if(params.provinceIds){ if(params.provinceIds){
...@@ -476,8 +476,8 @@ ...@@ -476,8 +476,8 @@
if(params.cityIds){ if(params.cityIds){
delete params.cityIds delete params.cityIds
} }
if(params.areaIds){ if(params.districtIds){
delete params.areaIds delete params.districtIds
} }
} }
......
...@@ -94,31 +94,29 @@ export default { ...@@ -94,31 +94,29 @@ export default {
this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute)) this.sideRoute = JSON.parse(JSON.stringify(this.defaultRoute))
let arr = JSON.parse(JSON.stringify(val)) let arr = JSON.parse(JSON.stringify(val))
for(var i in arr){ for(var i in arr){
for(var j in arr[i]){ switch (i) {
// switch (j) { case 'member':
// case 'ownershipStructure': if(arr[i]<1){
// if(arr[i][j]<1){ this.sideRoute[0].disabled = true;
// this.sideRoute[0].disabled = true; }
// } break;
// break; case 'qualification':
// case 'qualification': if(arr[i]<1){
// if(arr[i][j]<1){ this.sideRoute[1].disabled = true;
// this.sideRoute[1].disabled = true; }
// } break;
// break; case 'performance':
// case 'performance': if(arr[i]<1){
// if(arr[i][j]<1){ this.sideRoute[2].disabled = true;
// this.sideRoute[2].disabled = true; }
// } break;
// break; case 'biddingAnnouncement':
// case 'biddingAnnouncement': if(arr[i]<1){
// if(arr[i][j]<1){ this.sideRoute[3].disabled = true;
// this.sideRoute[3].disabled = true; }
// } break;
// break; default:
// default: break;
// break;
// }
} }
} }
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute)) this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
......
<template> <template>
<div class="app-container group-container"> <div class="app-container group-container">
<div class="header-container" ref="header"> <div class="header-container">
<div class="flex-box part-header"> <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 || '--'}} {{name || '--'}}
</div> </div>
</div> </div>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
import Performance from "./component/performance" import Performance from "./component/performance"
import Zhaobiao from "./component/zhaobiao" import Zhaobiao from "./component/zhaobiao"
import { infoHeader } from '@/api/detail/party-a/index' 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" import elementResizeDetectorMaker from "element-resize-detector"
export default { export default {
name: 'GroupAccount', name: 'GroupAccount',
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
isCompany: false, isCompany: false,
isSkeleton: false, isSkeleton: false,
name:'', name:'',
details:{},
} }
}, },
created() { created() {
...@@ -56,9 +57,9 @@ ...@@ -56,9 +57,9 @@
this.customerId = this.$route.params.id this.customerId = this.$route.params.id
} }
combineMemberLogo({combineId: this.customerId}).then(res=>{ 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) console.log(res.data)
if(res.code==200){ if(res.code==200){
this.statisticObj = res.data this.statisticObj = res.data
...@@ -67,13 +68,9 @@ ...@@ -67,13 +68,9 @@
// if (this.$route.query.path) { // 获取跳转对应板块 // if (this.$route.query.path) { // 获取跳转对应板块
// this.currentPath.pathName = 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 : this.details.companyName
this.name=this.$route.query.name ? this.$route.query.name : '中建集团'
},
mounted(){
// this.mainWidth=this.$refs.header.offsetWidth;
// this.width=this.$refs.contentData.offsetWidth -160;
}, },
mounted(){},
methods: { methods: {
showPartPage(e){ showPartPage(e){
this.currentPath = e this.currentPath = e
......
...@@ -336,6 +336,7 @@ export default { ...@@ -336,6 +336,7 @@ export default {
financial({cid:String(id)}).then(res=>{ financial({cid:String(id)}).then(res=>{
if(res.code==200&&!res.data){ if(res.code==200&&!res.data){
this.sideRoute[1].disabled = true this.sideRoute[1].disabled = true
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
} }
}) })
}, },
...@@ -414,7 +415,7 @@ export default { ...@@ -414,7 +415,7 @@ export default {
return true return true
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
......
...@@ -203,7 +203,7 @@ export default { ...@@ -203,7 +203,7 @@ export default {
[name]: this.queryParams[name], [name]: this.queryParams[name],
} }
customerUpdate(data).then(res=>{ customerUpdate(data).then(res=>{
if(res.data){ if(res.code==200){
this.$message.success(res.msg) this.$message.success(res.msg)
this.nowedit = 0 this.nowedit = 0
}else{ }else{
......
...@@ -643,9 +643,9 @@ ...@@ -643,9 +643,9 @@
for (var i in arr) { for (var i in arr) {
if (arr[i].parent) { if (arr[i].parent) {
if (!arr[i].parent.checked) { 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 && 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); !arr[i].hasChildren && this.domicile.push(arr[i].label);
} }
} else { } else {
......
...@@ -5,41 +5,9 @@ ...@@ -5,41 +5,9 @@
<el-row> <el-row>
<el-col :span="16"> <el-col :span="16">
<div class="task-wrap"> <div class="task-wrap">
<div class="item"> <div class="item" v-for="item in routerLink" @click="handleUrl(item)">
<router-link to="/project/overview" tag="a"> <img class="icon-img" :src="`${item.imgUrl}`"/>
<img class="icon-img" src="@/assets/images/index/icon1.png"/> <p class="text">{{item.name}}</p>
<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> </div>
</div> </div>
</el-col> </el-col>
...@@ -109,7 +77,7 @@ ...@@ -109,7 +77,7 @@
</el-row> </el-row>
<div class="empty" v-if="jtzbList.length === 0 && !isSkeleton"> <div class="empty" v-if="jtzbList.length === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png"> <img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div> <div class="p1">抱歉,没找到相关数据</div>
</div> </div>
</div> </div>
<div class="content content_wap2"> <div class="content content_wap2">
...@@ -178,7 +146,7 @@ ...@@ -178,7 +146,7 @@
</el-row> </el-row>
<div class="empty" v-if="dxmbList.length === 0 && !dxmzbState"> <div class="empty" v-if="dxmbList.length === 0 && !dxmzbState">
<img class="img" src="@/assets/images/project/empty.png"> <img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div> <div class="p1">抱歉,没找到相关数据</div>
</div> </div>
</div> </div>
<div class="content_wap3" ref="returnTop"> <div class="content_wap3" ref="returnTop">
...@@ -187,7 +155,7 @@ ...@@ -187,7 +155,7 @@
<skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton> <skeleton v-if="zxzbIsSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="projectList.length === 0 && !zxzbIsSkeleton"> <div class="empty" v-if="projectList.length === 0 && !zxzbIsSkeleton">
<img class="img" src="@/assets/images/project/empty.png"> <img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,暂无数据展示</div> <div class="p1">抱歉,没找到相关数据</div>
</div> </div>
<div class="list" v-if="!zxzbIsSkeleton"> <div class="list" v-if="!zxzbIsSkeleton">
<div class="item" v-for="(item,index) in projectList" :key="index"> <div class="item" v-for="(item,index) in projectList" :key="index">
...@@ -694,7 +662,16 @@ export default { ...@@ -694,7 +662,16 @@ export default {
timePlaceholder:'中标日期', timePlaceholder:'中标日期',
show_page:true, show_page:true,
MaxPage:500, 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() { created() {
...@@ -718,6 +695,7 @@ export default { ...@@ -718,6 +695,7 @@ export default {
getInfo(){ getInfo(){
getInfo().then(res=>{ getInfo().then(res=>{
console.log(res) console.log(res)
this.permissions=res.data.permissions;
this.nickName=res.data.user.nickName this.nickName=res.data.user.nickName
}).catch(error=>{}); }).catch(error=>{});
}, },
...@@ -1405,6 +1383,72 @@ export default { ...@@ -1405,6 +1383,72 @@ export default {
let day = String(date.getDate()).padStart(2, 0) let day = String(date.getDate()).padStart(2, 0)
return `${year}-${month}-${day}` 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> </script>
......
...@@ -877,7 +877,7 @@ export default { ...@@ -877,7 +877,7 @@ export default {
span{ span{
color: #232323; color: #232323;
padding: 2px 10px; padding: 2px 10px;
margin-bottom: 4px; margin-bottom: 10px;
display: inline-block; display: inline-block;
cursor: pointer; cursor: pointer;
margin-right: 8px; margin-right: 8px;
......
...@@ -931,13 +931,15 @@ export default { ...@@ -931,13 +931,15 @@ export default {
Day = datetime.getDate(); Day = datetime.getDate();
if(this.radio4=='近三天'){ if(this.radio4=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000; 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.endDate4 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getcountGroupByProvince() this.getcountGroupByProvince()
} }
if(this.radio4=='近七天'){ if(this.radio4=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000; 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.endDate4 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getcountGroupByProvince() this.getcountGroupByProvince()
} }
...@@ -950,13 +952,15 @@ export default { ...@@ -950,13 +952,15 @@ export default {
Day = datetime.getDate(); Day = datetime.getDate();
if(this.radio5=='近三天'){ if(this.radio5=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000; 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.endDate5 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getRangByMoney() this.getRangByMoney()
} }
if(this.radio5=='近七天'){ if(this.radio5=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000; 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.endDate5 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.getRangByMoney() this.getRangByMoney()
} }
...@@ -968,7 +972,6 @@ export default { ...@@ -968,7 +972,6 @@ export default {
Month = datetime.getMonth() + 1; Month = datetime.getMonth() + 1;
Day = datetime.getDate(); Day = datetime.getDate();
if(this.radio6=='今日'){ if(this.radio6=='今日'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
this.startDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day; this.startDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day; this.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6; this.recordParams.startTime = this.startDate6;
...@@ -977,7 +980,8 @@ export default { ...@@ -977,7 +980,8 @@ export default {
} }
if(this.radio6=='近三天'){ if(this.radio6=='近三天'){
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000; 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.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6; this.recordParams.startTime = this.startDate6;
this.recordParams.endTime = this.endDate6; this.recordParams.endTime = this.endDate6;
...@@ -985,7 +989,8 @@ export default { ...@@ -985,7 +989,8 @@ export default {
} }
if(this.radio6=='近七天'){ if(this.radio6=='近七天'){
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000; 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.endDate6 = Year + "-" + (Month<10?'0'+Month:Month) + "-" + Day;
this.recordParams.startTime = this.startDate6; this.recordParams.startTime = this.startDate6;
this.recordParams.endTime = this.endDate6; this.recordParams.endTime = this.endDate6;
...@@ -1030,6 +1035,7 @@ export default { ...@@ -1030,6 +1035,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.chart-top{ .chart-top{
margin-bottom: 12px;
.left{ .left{
float: left; float: left;
height: 122px; 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; package com.dsk.system.service;
import com.dsk.common.core.domain.PageQuery; 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.page.TableDataInfo;
import com.dsk.system.domain.SysConfig; import com.dsk.system.domain.SysConfig;
...@@ -93,4 +94,5 @@ public interface ISysConfigService { ...@@ -93,4 +94,5 @@ public interface ISysConfigService {
*/ */
boolean checkConfigKeyUnique(SysConfig config); 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; ...@@ -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.domain.entity.SysDictType;
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.utils.DingTalkUtil;
import com.dsk.common.utils.PasswordUtils; import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.*; import com.dsk.system.domain.*;
...@@ -25,15 +24,17 @@ import com.dsk.system.domain.vo.SysTenantVo; ...@@ -25,15 +24,17 @@ import com.dsk.system.domain.vo.SysTenantVo;
import com.dsk.system.mapper.*; import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysTenantService; import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor; 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.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/** /**
* 企业Service业务层处理 * 企业Service业务层处理
...@@ -43,6 +44,7 @@ import java.util.List; ...@@ -43,6 +44,7 @@ import java.util.List;
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
@Slf4j
public class ISysTenantServiceImpl implements ISysTenantService { public class ISysTenantServiceImpl implements ISysTenantService {
private final SysTenantMapper baseMapper; private final SysTenantMapper baseMapper;
...@@ -236,14 +238,23 @@ public class ISysTenantServiceImpl implements ISysTenantService { ...@@ -236,14 +238,23 @@ public class ISysTenantServiceImpl implements ISysTenantService {
} }
configMapper.insertBatch(sysConfigList); configMapper.insertBatch(sysConfigList);
////此处暂用钉钉机器人模拟发送短信
//String content = "【短信通知】:"
// + bo.getContactUserName()
// + ",您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
// + password
// + "。友情提示:为了您的账号安全,请勿泄露密码。";
//DingTalkUtil.sendDingTalkMsg(content);
//租户新增成功,发送短信通知租户 //租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信 LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
String content = "【短信通知】:" map.put("company", bo.getContactUserName());
+ bo.getContactUserName() map.put("pwd",password);
+ ",您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为" SmsBlend smsBlend = SmsFactory.createSmsBlend(SupplierType.ALIBABA);
+ password SmsResponse smsResponse = smsBlend.sendMessage(bo.getContactPhone(), "SMS_463175230", map);
+ "。友情提示:为了您的账号安全,请勿泄露密码。"; if (!"OK".equals(smsResponse.getCode())) {
DingTalkUtil.sendDingTalkMsg(content); log.error("新增租户通知短信发送异常 => {}", smsResponse);
}
return true; return true;
} }
......
package com.dsk.system.service.impl; 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.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.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.common.constant.CacheNames; import com.dsk.common.constant.CacheNames;
import com.dsk.common.constant.UserConstants; import com.dsk.common.constant.UserConstants;
import com.dsk.common.core.domain.PageQuery; 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.page.TableDataInfo;
import com.dsk.common.core.service.ConfigService; import com.dsk.common.core.service.ConfigService;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.JsonUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.redis.CacheUtils; import com.dsk.common.utils.redis.CacheUtils;
import com.dsk.common.utils.spring.SpringUtils; import com.dsk.common.utils.spring.SpringUtils;
...@@ -18,11 +27,13 @@ import com.dsk.system.domain.SysConfig; ...@@ -18,11 +27,13 @@ import com.dsk.system.domain.SysConfig;
import com.dsk.system.mapper.SysConfigMapper; import com.dsk.system.mapper.SysConfigMapper;
import com.dsk.system.service.ISysConfigService; import com.dsk.system.service.ISysConfigService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CachePut; import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -31,6 +42,7 @@ import java.util.Map; ...@@ -31,6 +42,7 @@ import java.util.Map;
* *
* @author Lion Li * @author Lion Li
*/ */
@Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class SysConfigServiceImpl implements ISysConfigService, ConfigService { public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
...@@ -213,6 +225,36 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { ...@@ -213,6 +225,36 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
return true; 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 获取参数值 * 根据参数 key 获取参数值
* *
...@@ -224,4 +266,10 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { ...@@ -224,4 +266,10 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService {
return SpringUtils.getAopProxy(this).selectConfigByKey(configKey); 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; ...@@ -18,7 +18,6 @@ import com.dsk.common.core.service.UserService;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.DataBaseHelper; import com.dsk.common.helper.DataBaseHelper;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DingTalkUtil;
import com.dsk.common.utils.PasswordUtils; import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StreamUtils; import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
...@@ -27,11 +26,16 @@ import com.dsk.system.mapper.*; ...@@ -27,11 +26,16 @@ import com.dsk.system.mapper.*;
import com.dsk.system.service.ISysUserService; import com.dsk.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; 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.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -273,13 +277,23 @@ public class SysUserServiceImpl implements ISysUserService, UserService { ...@@ -273,13 +277,23 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
// 新增用户信息 // 新增用户信息
int rows = baseMapper.insert(user); int rows = baseMapper.insert(user);
if (rows > 0) { if (rows > 0) {
//租户新增成功,发送短信通知租户
//此处暂用钉钉机器人模拟发送短信 //此处暂用钉钉机器人模拟发送短信
String content = "短信通知:"+user.getNickName() //String content = "短信通知:"+user.getNickName()
+ "您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为" // + "您好,您已经成功开通数字化经营管理系统,请使用手机号码登录,初始密码为"
+ password // + password
+ "。友情提示:为了您的账号安全,请勿泄露密码。"; // + "。友情提示:为了您的账号安全,请勿泄露密码。";
DingTalkUtil.sendDingTalkMsg(content); //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); 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