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;
} }
...@@ -188,33 +190,34 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -188,33 +190,34 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
List<String> result = new LinkedList();//导入结果汇总 List<String> result = new LinkedList();//导入结果汇总
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));