diff --git a/crm/src/main/java/com/kakarote/crm/controller/CrmContactsController.java b/crm/src/main/java/com/kakarote/crm/controller/CrmContactsController.java
index b90e99c..f94c0a0 100644
--- a/crm/src/main/java/com/kakarote/crm/controller/CrmContactsController.java
+++ b/crm/src/main/java/com/kakarote/crm/controller/CrmContactsController.java
@@ -19,6 +19,7 @@ import com.kakarote.crm.constant.CrmCodeEnum;
import com.kakarote.crm.constant.CrmEnum;
import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.CrmContacts;
+import com.kakarote.crm.entity.VO.CrmGetPlaintextVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmMembersSelectVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
@@ -29,6 +30,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -38,6 +40,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import static com.kakarote.core.common.SystemCodeEnum.SYSTEM_NO_VALID;
+
/**
*
* 联系人表 前端控制器
@@ -58,6 +62,9 @@ public class CrmContactsController {
@Autowired
private ICrmTeamMembersService teamMembersService;
+ @Value("${app.verify_password}")
+ private String VERIFY_PASSWORD;
+
@PostMapping("/queryById/{contactsId}")
@ApiOperation("根据ID查询")
public Result queryById(@PathVariable("contactsId") @ApiParam(name = "id", value = "id") Integer contactsId) {
@@ -269,5 +276,16 @@ public class CrmContactsController {
teamMembersService.exitTeam(CrmEnum.CONTACTS,contactsId);
return R.ok();
}
+
+ @PostMapping("/getPlaintext")
+ public Result getPlaintext(@RequestBody CrmGetPlaintextVO plaintextVO) {
+ System.out.println(plaintextVO);
+ // 验证密码
+ if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
+ return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
+ }
+ String plaintext = crmContactsService.getPlaintext(plaintextVO);
+ return Result.ok(plaintext);
+ }
}
diff --git a/crm/src/main/java/com/kakarote/crm/controller/CrmCustomerController.java b/crm/src/main/java/com/kakarote/crm/controller/CrmCustomerController.java
index f762907..862fec0 100644
--- a/crm/src/main/java/com/kakarote/crm/controller/CrmCustomerController.java
+++ b/crm/src/main/java/com/kakarote/crm/controller/CrmCustomerController.java
@@ -25,15 +25,13 @@ import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.CrmContacts;
import com.kakarote.crm.entity.PO.CrmCustomer;
import com.kakarote.crm.entity.PO.CrmCustomerSetting;
-import com.kakarote.crm.entity.VO.CrmDataCheckVO;
-import com.kakarote.crm.entity.VO.CrmInfoNumVO;
-import com.kakarote.crm.entity.VO.CrmMembersSelectVO;
-import com.kakarote.crm.entity.VO.CrmModelFiledVO;
+import com.kakarote.crm.entity.VO.*;
import com.kakarote.crm.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -43,6 +41,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import static com.kakarote.core.common.SystemCodeEnum.SYSTEM_NO_VALID;
+
/**
*
* 客户表 前端控制器
@@ -75,6 +75,9 @@ public class CrmCustomerController {
@Autowired
private IBatchEncryptionService batchEncryptionService;
+ @Value("${app.verify_password}")
+ private String VERIFY_PASSWORD;
+
@PostMapping("/queryPageList")
@ApiOperation("查询列表页数据")
public Result>> queryPageList(@RequestBody CrmSearchBO search) {
@@ -543,5 +546,25 @@ public class CrmCustomerController {
batchEncryptionService.batchEncryptCustomerData(pageSize);
return Result.ok();
}
+
+ @PostMapping("/getPlaintext")
+ public Result getPlaintext(@RequestBody CrmGetPlaintextVO plaintextVO) {
+ // 验证密码
+ if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
+ return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
+ }
+ String plaintext = crmCustomerService.getPlaintext(plaintextVO);
+ return Result.ok(plaintext);
+ }
+
+ //企业画像验证
+ @PostMapping("/verifyPassword")
+ public Result verifyPassword(@RequestBody CrmGetPlaintextVO plaintextVO) {
+ // 验证密码
+ if (!plaintextVO.getPassword().equals(VERIFY_PASSWORD) || plaintextVO.getPassword().equals("")) {
+ return Result.error(SYSTEM_NO_VALID,"密码错误或者密码不能为空!");
+ }
+ return Result.ok();
+ }
}
diff --git a/crm/src/main/java/com/kakarote/crm/controller/CrmUsageReportController.java b/crm/src/main/java/com/kakarote/crm/controller/CrmUsageReportController.java
index c6014c8..5014a60 100644
--- a/crm/src/main/java/com/kakarote/crm/controller/CrmUsageReportController.java
+++ b/crm/src/main/java/com/kakarote/crm/controller/CrmUsageReportController.java
@@ -27,7 +27,7 @@ public class CrmUsageReportController {
// }
@PostMapping("/findUsageReportByNsrsbhOrNsrmc")
- @ApiOperation("查询报告筛查次数")
+ @ApiOperation("根据纳税人识别号或者纳税人名称查询")
public Result findUsageReportByNsrsbhOrNsrmc(@RequestBody CrmQueryUsageReportVO vo) throws IOException {
return R.ok(crmUsageReportService.findUsageReportByNsrsbhOrNsrmc(vo));
}
diff --git a/crm/src/main/java/com/kakarote/crm/entity/VO/CrmGetPlaintextVO.java b/crm/src/main/java/com/kakarote/crm/entity/VO/CrmGetPlaintextVO.java
new file mode 100644
index 0000000..b3c8327
--- /dev/null
+++ b/crm/src/main/java/com/kakarote/crm/entity/VO/CrmGetPlaintextVO.java
@@ -0,0 +1,21 @@
+package com.kakarote.crm.entity.VO;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class CrmGetPlaintextVO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private Integer id;
+
+ private String password;
+
+ private String field;
+
+ private Integer poolId;
+
+ private String crmType;
+}
diff --git a/crm/src/main/java/com/kakarote/crm/service/ICrmContactsService.java b/crm/src/main/java/com/kakarote/crm/service/ICrmContactsService.java
index 3806d85..26441b7 100644
--- a/crm/src/main/java/com/kakarote/crm/service/ICrmContactsService.java
+++ b/crm/src/main/java/com/kakarote/crm/service/ICrmContactsService.java
@@ -7,6 +7,7 @@ import com.kakarote.core.servlet.upload.FileEntity;
import com.kakarote.crm.common.CrmModel;
import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.CrmContacts;
+import com.kakarote.crm.entity.VO.CrmGetPlaintextVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
import org.springframework.web.bind.annotation.RequestBody;
@@ -127,4 +128,8 @@ public interface ICrmContactsService extends BaseService {
void relateBusiness(CrmRelateBusinessBO relateBusinessBO);
void unrelateBusiness(CrmRelateBusinessBO relateBusinessBO);
+
+ String getPlaintext(CrmGetPlaintextVO plaintextVO);
+
+ String getContactsPlaintext(CrmGetPlaintextVO plaintextVO);
}
diff --git a/crm/src/main/java/com/kakarote/crm/service/ICrmCustomerService.java b/crm/src/main/java/com/kakarote/crm/service/ICrmCustomerService.java
index 7405217..ac9d916 100644
--- a/crm/src/main/java/com/kakarote/crm/service/ICrmCustomerService.java
+++ b/crm/src/main/java/com/kakarote/crm/service/ICrmCustomerService.java
@@ -16,6 +16,7 @@ import com.kakarote.crm.entity.PO.CrmContacts;
import com.kakarote.crm.entity.PO.CrmCustomer;
import com.kakarote.crm.entity.PO.CrmCustomerSetting;
import com.kakarote.crm.entity.VO.CrmDataCheckVO;
+import com.kakarote.crm.entity.VO.CrmGetPlaintextVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
@@ -273,4 +274,9 @@ public interface ICrmCustomerService extends BaseService {
* @return
*/
Integer getCustomerByQyjbxx(CrmBusinessSaveBO crmModel);
+
+ /**
+ * 获取明文
+ */
+ String getPlaintext(CrmGetPlaintextVO plaintextVO);
}
diff --git a/crm/src/main/java/com/kakarote/crm/service/impl/CrmActivityServiceImpl.java b/crm/src/main/java/com/kakarote/crm/service/impl/CrmActivityServiceImpl.java
index 3106bc0..e8f2ac6 100644
--- a/crm/src/main/java/com/kakarote/crm/service/impl/CrmActivityServiceImpl.java
+++ b/crm/src/main/java/com/kakarote/crm/service/impl/CrmActivityServiceImpl.java
@@ -18,6 +18,7 @@ import com.kakarote.core.feign.admin.entity.SimpleUser;
import com.kakarote.core.feign.admin.service.AdminFileService;
import com.kakarote.core.feign.admin.service.AdminService;
import com.kakarote.core.feign.crm.entity.SimpleCrmEntity;
+import com.kakarote.core.security.util.SensitiveDataMaskUtil;
import com.kakarote.core.servlet.ApplicationContextHolder;
import com.kakarote.core.servlet.BaseServiceImpl;
import com.kakarote.core.servlet.upload.FileEntity;
@@ -163,6 +164,24 @@ public class CrmActivityServiceImpl extends BaseServiceImpl activityList = activityVO.getList();
+ for (CrmActivity activity : activityList) {
+ System.out.println(activity);
+ if (activity.getActivityType() == 3) {
+ String maskName = SensitiveDataMaskUtil.maskName(activity.getActivityTypeName());
+ activity.setActivityTypeName(maskName);
+ }
+ }
return activityVO;
}
diff --git a/crm/src/main/java/com/kakarote/crm/service/impl/CrmContactsServiceImpl.java b/crm/src/main/java/com/kakarote/crm/service/impl/CrmContactsServiceImpl.java
index db099d5..e7c6da7 100644
--- a/crm/src/main/java/com/kakarote/crm/service/impl/CrmContactsServiceImpl.java
+++ b/crm/src/main/java/com/kakarote/crm/service/impl/CrmContactsServiceImpl.java
@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.kakarote.core.common.Const;
import com.kakarote.core.common.FieldEnum;
import com.kakarote.core.common.SystemCodeEnum;
import com.kakarote.core.common.log.BehaviorEnum;
@@ -16,6 +17,8 @@ import com.kakarote.core.exception.CrmException;
import com.kakarote.core.feign.admin.service.AdminFileService;
import com.kakarote.core.feign.crm.entity.SimpleCrmEntity;
import com.kakarote.core.field.FieldService;
+import com.kakarote.core.security.EncryptionService;
+import com.kakarote.core.security.util.SensitiveDataMaskUtil;
import com.kakarote.core.servlet.ApplicationContextHolder;
import com.kakarote.core.servlet.BaseServiceImpl;
import com.kakarote.core.servlet.upload.FileEntity;
@@ -33,6 +36,7 @@ import com.kakarote.crm.constant.CrmEnum;
import com.kakarote.crm.entity.BO.*;
import com.kakarote.crm.entity.PO.*;
import com.kakarote.crm.entity.VO.CrmFieldSortVO;
+import com.kakarote.crm.entity.VO.CrmGetPlaintextVO;
import com.kakarote.crm.entity.VO.CrmInfoNumVO;
import com.kakarote.crm.entity.VO.CrmModelFiledVO;
import com.kakarote.crm.mapper.CrmContactsMapper;
@@ -93,6 +97,12 @@ public class CrmContactsServiceImpl extends BaseServiceImpl> queryFormPositionField(Integer id) {
+ System.out.println("标记一下");
CrmModel crmModel = queryById(id);
if (id != null) {
List customerList = new ArrayList<>();
@@ -161,6 +172,7 @@ public class CrmContactsServiceImpl extends BaseServiceImpl System.out.println("Key: " + key + ", Value: " + value));
+ if (crmModel != null) {
+ // 获取数据
+ String name = (String) crmModel.get("name");
+ String mobile = (String) crmModel.get("mobile");
+ String telephone = (String) crmModel.get("telephone");
+ String address = (String) crmModel.get("address");
+ String email = (String) crmModel.get("email");
+ // 数据加密
+ String maskName = SensitiveDataMaskUtil.maskName(name);
+ String maskMobile = SensitiveDataMaskUtil.maskPhone(mobile);
+ String maskTelephone = SensitiveDataMaskUtil.maskPhone(telephone);
+ String maskAddress = SensitiveDataMaskUtil.maskAddress(address);
+ String maskEmail = SensitiveDataMaskUtil.maskEmail(email);
+ // 替换数据
+ crmModel.replace("name", maskName);
+ crmModel.replace("mobile", maskMobile);
+ crmModel.replace("telephone", maskTelephone);
+ crmModel.replace("address", maskAddress);
+ crmModel.replace("email", maskEmail);
+ }
return crmModel;
}
@@ -584,4 +621,65 @@ public class CrmContactsServiceImpl extends BaseServiceImpl System.out.println("Key: " + key + ", Value: " + value));
+ // 获取数据
+ String contactsMobile = (String)crmModel.get("contactsMobile");
+ String fieldCbiasz = (String)crmModel.get("fieldCbiasz");//详情页的联系人姓名
+ //String contactsName = (String)crmModel.get("contactsName");
+ String email = (String)crmModel.get("email");
+ String fliedKjhmgc = (String) crmModel.get("fliedKjhmgc");//详情页的详细地址
+ //String contactsAddress = (String) crmModel.get("contactsAddress");
+ // 脱敏处理
+ String maskMobile = SensitiveDataMaskUtil.maskPhone(contactsMobile);
+ String maskFieldCbiasz = SensitiveDataMaskUtil.maskName(fieldCbiasz);
+ //String maskName = SensitiveDataMaskUtil.maskName(contactsName);
+ String maskEmail = SensitiveDataMaskUtil.maskEmail(email);
+ String maskFliedKjhmgc = SensitiveDataMaskUtil.maskAddress(fliedKjhmgc);
+ //String maskAddress = SensitiveDataMaskUtil.maskAddress(contactsAddress);
+ // 重新组装crmModel
+ crmModel.replace("mobile", maskMobile);
+ crmModel.replace("fieldCbiasz", maskFieldCbiasz);
+ //crmModel.replace("contactsName", maskName);
+ crmModel.replace("email", maskEmail);
+ crmModel.replace("fliedKjhmgc", maskFliedKjhmgc);
+ //crmModel.replace("contactsAddress", maskAddress);
return crmModel;
}
+ /**
+ * 获取客户明文
+ * @param plaintextVO
+ * @return
+ */
+ private String getCustomerPlaintext(CrmGetPlaintextVO plaintextVO) {
+ CrmModel crmModel = getBaseMapper().queryById(plaintextVO.getId(), UserUtil.getUserId());
+ // 添加解密逻辑decryptSensitiveData(crmModel);
+ crmModel.setLabel(CrmEnum.CUSTOMER.getType());
+ crmModel.setOwnerUserName(UserCacheUtil.getUserName(crmModel.getOwnerUserId()));
+ crmCustomerDataService.setDataByBatchId(crmModel);
+ List stringList = ApplicationContextHolder.getBean(ICrmRoleFieldService.class).queryNoAuthField(crmModel.getLabel());
+ stringList.forEach(crmModel::remove);
+ if (ObjectUtil.isNotEmpty(plaintextVO.getPoolId())) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(CrmCustomerPoolFieldSetting::getFieldName);
+ wrapper.eq(CrmCustomerPoolFieldSetting::getPoolId, plaintextVO.getPoolId()).eq(CrmCustomerPoolFieldSetting::getIsHidden, 1);
+ List nameList = ApplicationContextHolder.getBean(ICrmCustomerPoolFieldSettingService.class).listObjs(wrapper, Object::toString);
+ nameList.forEach(crmModel::remove);
+ JSONObject poolAuthList = crmCustomerPoolService.queryAuthByPoolId(plaintextVO.getPoolId());
+ crmModel.put("poolAuthList", poolAuthList);
+ } else {
+ Long isPool = (Long) crmModel.get("isPool");
+ if (Objects.equals(isPool, 1L)) {
+ String poolIdStr = baseMapper.queryPoolIdsByCustomer(plaintextVO.getId());
+ if (StrUtil.isNotEmpty(poolIdStr)) {
+ List poolIds = StrUtil.splitTrim(poolIdStr, Const.SEPARATOR);
+ List poolIdList = poolIds.stream().map(Integer::valueOf).collect(Collectors.toList());
+ JSONObject poolAuthList = crmCustomerPoolService.getOnePoolAuthByPoolIds(poolIdList);
+ crmModel.put("poolAuthList", poolAuthList);
+ }
+ }
+ }
+ //遍历数据
+ //crmModel.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));
+ String plaintext = null;
+ if (plaintextVO.getField().equals("mobile")){
+ plaintext = (String) crmModel.get("mobile");
+ } else if (plaintextVO.getField().equals("email")){
+ plaintext = (String) crmModel.get("email");
+ } else if (plaintextVO.getField().equals("fieldCbiasz")){
+ int contactsId = (Integer) crmModel.get("contactsId");
+ plaintext = crmContactsService.getContactsName(contactsId);
+ } else if (plaintextVO.getField().equals("fliedKjhmgc")){
+ plaintext = (String) crmModel.get("fliedKjhmgc");
+ }
+ return plaintext;
+ }
+
+ /**
+ * 判断crmType
+ * @param plaintextVO
+ */
+ @Override
+ public String getPlaintext(CrmGetPlaintextVO plaintextVO){
+ // 判断类型
+ String plaintext = null;
+ if (plaintextVO.getCrmType().equals("customer")) {
+ plaintext = getCustomerPlaintext(plaintextVO);
+ } else if (plaintextVO.getCrmType().equals("contacts")) {
+ plaintext = crmContactsService.getContactsPlaintext(plaintextVO);
+ }
+ return plaintext;
+ }
+
private void decryptSensitiveData(CrmModel model) {
String[] sensitiveFields = {"mobile", "email", "idCard", "bankCard"};
for (String field : sensitiveFields) {
@@ -1267,6 +1366,8 @@ public class CrmCustomerServiceImpl extends BaseServiceImpl