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