Commit 4be9240e authored by suhuiguang's avatar suhuiguang

feat(tcm): 启用管理

1.启用停用增加短信提醒
parent d13daba6
...@@ -31,4 +31,15 @@ public enum EnterpriseEnums { ...@@ -31,4 +31,15 @@ public enum EnterpriseEnums {
} }
return null; return null;
} }
public enum State {
/**
* 停用
*/
TY,
/**
* 启用
*/
QY
}
} }
package com.yeejoin.amos.boot.module.tcm.biz.controller; package com.yeejoin.amos.boot.module.tcm.biz.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.biz.common.utils.NameUtils; import com.yeejoin.amos.boot.biz.common.utils.NameUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...@@ -38,6 +40,7 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation; ...@@ -38,6 +40,7 @@ import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.restful.exception.instance.BadRequest; import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import org.typroject.tyboot.core.restful.utils.ResponseHelper; import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel; import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -67,6 +70,7 @@ public class TzBaseEnterpriseInfoController extends BaseController { ...@@ -67,6 +70,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@Autowired @Autowired
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper; private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
/** /**
* 新增企业数据信息 * 新增企业数据信息
* *
...@@ -188,6 +192,7 @@ public class TzBaseEnterpriseInfoController extends BaseController { ...@@ -188,6 +192,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
/** /**
* 分页查询企业信息 从jczs迁移过来 * 分页查询企业信息 从jczs迁移过来
*
* @param pageParam * @param pageParam
* @param sort * @param sort
* @param map * @param map
...@@ -199,7 +204,7 @@ public class TzBaseEnterpriseInfoController extends BaseController { ...@@ -199,7 +204,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
public ResponseModel<IPage<TzBaseEnterpriseInfoDto>> getPageList(PageParam pageParam, @RequestParam(value = "sort", required = false) String sort, @RequestParam Map<String, Object> map) { public ResponseModel<IPage<TzBaseEnterpriseInfoDto>> getPageList(PageParam pageParam, @RequestParam(value = "sort", required = false) String sort, @RequestParam Map<String, Object> map) {
TzBaseEnterpriseInfoDto dto = JSON.parseObject(JSON.toJSONString(map), TzBaseEnterpriseInfoDto.class); TzBaseEnterpriseInfoDto dto = JSON.parseObject(JSON.toJSONString(map), TzBaseEnterpriseInfoDto.class);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (!ValidationUtil.isEmpty(map.get("createDateRange"))){ if (!ValidationUtil.isEmpty(map.get("createDateRange"))) {
String createDateRangeObj = Objects.toString(map.get("createDateRange")); String createDateRangeObj = Objects.toString(map.get("createDateRange"));
String[] split = createDateRangeObj.replace("[", "").replace("]", "").split(","); String[] split = createDateRangeObj.replace("[", "").replace("]", "").split(",");
String startDateStr = split[0]; String startDateStr = split[0];
...@@ -350,6 +355,7 @@ public class TzBaseEnterpriseInfoController extends BaseController { ...@@ -350,6 +355,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
/** /**
* 监管对接 * 监管对接
*
* @param unitCode * @param unitCode
* @return * @return
*/ */
...@@ -393,16 +399,16 @@ public class TzBaseEnterpriseInfoController extends BaseController { ...@@ -393,16 +399,16 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@PutMapping(value = "/enableBatch") @PutMapping(value = "/enableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业启用", notes = "企业启用") @ApiOperation(httpMethod = "PUT", value = "企业启用", notes = "企业启用")
@RestEventTrigger(value = "operateLogRestEventHandler") @RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Boolean> enableBatch(@RequestParam String ids) { public ResponseModel<ReginParams> enableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.enable(Arrays.asList(ids.split(",")))); return ResponseHelper.buildResponse(enterpriseManageService.enable(Arrays.asList(ids.split(",")), new JSONObject(Optional.ofNullable(params).orElse(new JSONObject())), getSelectedOrgInfo()));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/disableBatch") @PutMapping(value = "/disableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业停用", notes = "企业停用") @ApiOperation(httpMethod = "PUT", value = "企业停用", notes = "企业停用")
@RestEventTrigger(value = "operateLogRestEventHandler") @RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Boolean> disableBatch(@RequestParam String ids) { public ResponseModel<ReginParams> disableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.disable(Arrays.asList(ids.split(",")))); return ResponseHelper.buildResponse(enterpriseManageService.disable(Arrays.asList(ids.split(",")), new JSONObject(params), getSelectedOrgInfo()));
} }
......
package com.yeejoin.amos.boot.module.tcm.biz.service.impl; package com.yeejoin.amos.boot.module.tcm.biz.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yeejoin.amos.boot.biz.common.bo.ReginParams;
import com.yeejoin.amos.boot.biz.common.dto.CountDto; import com.yeejoin.amos.boot.biz.common.dto.CountDto;
import com.yeejoin.amos.boot.biz.common.entity.BaseEntity; import com.yeejoin.amos.boot.biz.common.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao; import com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao;
...@@ -15,6 +18,7 @@ import com.yeejoin.amos.boot.module.tcm.api.entity.BaseUnitLicence; ...@@ -15,6 +18,7 @@ import com.yeejoin.amos.boot.module.tcm.api.entity.BaseUnitLicence;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.tcm.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsBaseIndividuality; import com.yeejoin.amos.boot.module.tcm.api.entity.TzsBaseIndividuality;
import com.yeejoin.amos.boot.module.tcm.api.entity.TzsBaseInstitution; import com.yeejoin.amos.boot.module.tcm.api.entity.TzsBaseInstitution;
import com.yeejoin.amos.boot.module.tcm.api.enums.EnterpriseEnums;
import com.yeejoin.amos.boot.module.tcm.api.mapper.BaseUnitLicenceMapper; import com.yeejoin.amos.boot.module.tcm.api.mapper.BaseUnitLicenceMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseIndividualityMapper; import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseIndividualityMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseInstitutionMapper; import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseInstitutionMapper;
...@@ -26,6 +30,7 @@ import com.yeejoin.amos.feign.privilege.Privilege; ...@@ -26,6 +30,7 @@ import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.CompanyModel; import com.yeejoin.amos.feign.privilege.model.CompanyModel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RequestOptions;
...@@ -47,6 +52,7 @@ import java.util.stream.Stream; ...@@ -47,6 +52,7 @@ import java.util.stream.Stream;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j
public class EnterpriseManageServiceImpl { public class EnterpriseManageServiceImpl {
private final TzsUserInfoServiceImpl userInfoService; private final TzsUserInfoServiceImpl userInfoService;
...@@ -70,7 +76,7 @@ public class EnterpriseManageServiceImpl { ...@@ -70,7 +76,7 @@ public class EnterpriseManageServiceImpl {
private final RegUnitInfoMapper regUnitInfoMapper; private final RegUnitInfoMapper regUnitInfoMapper;
private final TcmCommonService commonService;
/** /**
...@@ -99,6 +105,7 @@ public class EnterpriseManageServiceImpl { ...@@ -99,6 +105,7 @@ public class EnterpriseManageServiceImpl {
/** /**
* 冗余删除es的人员(已经前置校验数据库没人、没设备才能删除,目的防止人员的数据库和es人员索引的人员不一致) * 冗余删除es的人员(已经前置校验数据库没人、没设备才能删除,目的防止人员的数据库和es人员索引的人员不一致)
*
* @param e 企业 * @param e 企业
*/ */
private void deleteEsUser(TzBaseEnterpriseInfo e) { private void deleteEsUser(TzBaseEnterpriseInfo e) {
...@@ -118,7 +125,8 @@ public class EnterpriseManageServiceImpl { ...@@ -118,7 +125,8 @@ public class EnterpriseManageServiceImpl {
* *
* @param ids 企业ids * @param ids 企业ids
*/ */
public Boolean enable(List<String> ids) { public ReginParams enable(List<String> ids, JSONObject params, ReginParams reginParams) {
List<AgencyUserModel> userModelsAll = new ArrayList<>();
// 校验 // 校验
List<TzBaseEnterpriseInfo> enterpriseInfos = enterpriseInfoService.getBaseMapper().selectBatchIds(ids); List<TzBaseEnterpriseInfo> enterpriseInfos = enterpriseInfoService.getBaseMapper().selectBatchIds(ids);
// 状态校验,非停用状态不能启用 // 状态校验,非停用状态不能启用
...@@ -127,9 +135,11 @@ public class EnterpriseManageServiceImpl { ...@@ -127,9 +135,11 @@ public class EnterpriseManageServiceImpl {
this.updateEnterpriseDeletedStatus(enterpriseInfo, false); this.updateEnterpriseDeletedStatus(enterpriseInfo, false);
// 保留防止之前勿删除了 // 保留防止之前勿删除了
this.insertEnterprise2Es(enterpriseInfo); this.insertEnterprise2Es(enterpriseInfo);
this.unlockLoginAccount(enterpriseInfo); List<AgencyUserModel> userModels = this.unlockLoginAccount(enterpriseInfo);
userModelsAll.addAll(userModels);
}); });
return true; this.buildAndSendSms(userModelsAll, EnterpriseEnums.State.QY, params.getString("reason"), reginParams);
return reginParams;
} }
...@@ -137,40 +147,77 @@ public class EnterpriseManageServiceImpl { ...@@ -137,40 +147,77 @@ public class EnterpriseManageServiceImpl {
* 批量停用企业 * 批量停用企业
* *
* @param ids 企业ids * @param ids 企业ids
* @param params 说明等
* @param reginParams 操作人的信息
*/ */
public Boolean disable(List<String> ids) { public ReginParams disable(List<String> ids, JSONObject params, ReginParams reginParams) {
List<AgencyUserModel> userModelsAll = new ArrayList<>();
// 校验 // 校验
List<TzBaseEnterpriseInfo> enterpriseInfos = enterpriseInfoService.getBaseMapper().selectBatchIds(ids); List<TzBaseEnterpriseInfo> enterpriseInfos = enterpriseInfoService.getBaseMapper().selectBatchIds(ids);
// 状态校验,非启用状态不能停用 // 状态校验,非启用状态不能停用
this.checkForDisable(ids, enterpriseInfos); this.checkForDisable(ids, enterpriseInfos);
enterpriseInfos.forEach(enterpriseInfo -> { enterpriseInfos.forEach(enterpriseInfo -> {
this.updateEnterpriseDeletedStatus(enterpriseInfo, true); this.updateEnterpriseDeletedStatus(enterpriseInfo, true);
this.lockLoginAccount(enterpriseInfo); List<AgencyUserModel> userModels = this.lockLoginAccount(enterpriseInfo);
userModelsAll.addAll(userModels);
});
this.buildAndSendSms(userModelsAll, EnterpriseEnums.State.TY, params.getString("reason"), reginParams);
return reginParams;
}
private void buildAndSendSms(List<AgencyUserModel> userModelsAll, EnterpriseEnums.State state, String reason, ReginParams reginParams) {
userModelsAll.forEach(u -> {
Map<String, String> msg = new HashMap<>();
msg.put("realName", u.getRealName());
msg.put("userName", u.getUserName());
msg.put("companyCode", u.getCompanys().stream().map(CompanyModel::getCompanyCode).collect(Collectors.joining(",")));
msg.put("companyName", u.getCompanys().stream().map(CompanyModel::getCompanyName).collect(Collectors.joining(",")));
msg.put("reason", reason);
msg.put("opUserName", reginParams.getUserModel().getRealName());
msg.put("opOrgName", reginParams.getCompany().getCompanyName());
msg.put("opYear", String.valueOf(DateUtil.date().year()));
msg.put("opMonth", String.valueOf(DateUtil.date().month() + 1));
msg.put("opDay", String.valueOf(DateUtil.date().dayOfMonth()));
msg.put("opHour", String.valueOf(DateUtil.date().hour(true)));
msg.put("opMin", String.valueOf(DateUtil.date().minute()));
commonService.sendSms(getSmsCodeByState(state), u.getMobile(), msg);
}); });
return true; }
private String getSmsCodeByState(EnterpriseEnums.State state) {
if (state.equals(EnterpriseEnums.State.QY)) {
return "SMS_QY_0001";
} else {
return "SMS_TY_0001";
}
} }
private void unlockLoginAccount(TzBaseEnterpriseInfo enterpriseInfo) { private List<AgencyUserModel> unlockLoginAccount(TzBaseEnterpriseInfo enterpriseInfo) {
CompanyModel companyModel = FeignUtil.remoteCall(() -> Privilege.companyClient.queryByCompanyCode(enterpriseInfo.getUseCode())); CompanyModel companyModel = FeignUtil.remoteCall(() -> Privilege.companyClient.queryByCompanyCode(enterpriseInfo.getUseCode()));
List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false)); List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false));
if (!userModels.isEmpty()) { if (!userModels.isEmpty()) {
List<String> userIds = userModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.toList()); List<String> userIds = userModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.toList());
Privilege.agencyUserClient.unlockUsers(String.join(",", userIds)); Privilege.agencyUserClient.unlockUsers(String.join(",", userIds));
} }
userModels.forEach(e -> e.setCompanys(Collections.singletonList(companyModel)));
return userModels;
} }
private void insertEnterprise2Es(TzBaseEnterpriseInfo enterpriseInfo) { private void insertEnterprise2Es(TzBaseEnterpriseInfo enterpriseInfo) {
refreshHandler.doRefresh(new TzsDataRefreshMessage().setDataId(enterpriseInfo.getSequenceNbr() + "").setOperation(DataRefreshEvent.Operation.INSERT.name())); refreshHandler.doRefresh(new TzsDataRefreshMessage().setDataId(enterpriseInfo.getSequenceNbr() + "").setOperation(DataRefreshEvent.Operation.INSERT.name()));
} }
private void lockLoginAccount(TzBaseEnterpriseInfo enterpriseInfo) { private List<AgencyUserModel> lockLoginAccount(TzBaseEnterpriseInfo enterpriseInfo) {
Set<String> userIds = new HashSet<>();
CompanyModel companyModel = FeignUtil.remoteCall(() -> Privilege.companyClient.queryByCompanyCode(enterpriseInfo.getUseCode())); CompanyModel companyModel = FeignUtil.remoteCall(() -> Privilege.companyClient.queryByCompanyCode(enterpriseInfo.getUseCode()));
List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false)); List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false));
if (!userModels.isEmpty()) { if (!userModels.isEmpty()) {
List<String> userIds = userModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.toList()); userIds = userModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.toSet());
Privilege.agencyUserClient.lockUsers(String.join(",", userIds)); Privilege.agencyUserClient.lockUsers(String.join(",", userIds));
} }
userModels.forEach(e -> e.setCompanys(Collections.singletonList(companyModel)));
return userModels;
} }
......
package com.yeejoin.amos.boot.module.tcm.biz.service.impl;
import com.yeejoin.amos.component.feign.config.InnerInvokException;
import com.yeejoin.amos.feign.systemctl.Systemctl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
@Slf4j
public class TcmCommonService {
/**
* 发送短信并处理结果
*/
@Async
public void sendSms(String smsCode, String mobile, Map<String, String> customSmsMap) {
if (StringUtils.isEmpty(mobile) || StringUtils.isEmpty(smsCode)) {
log.warn("发送短信要素不完整,丢弃发送请求");
return;
}
try {
Systemctl.smsClient.sendCommonSms(buildSmsMap(smsCode, mobile, customSmsMap));
} catch (InnerInvokException e) {
log.error("消息模板:{}, 手机号:{}, 调用平台发短信失败:{}", smsCode, mobile, e.getDevMessage());
}
}
/**
* 构建发送短信的参数Map
*/
private HashMap<String, String> buildSmsMap(String smsCode, String mobile, Map<String, String> customSmsMap) {
HashMap<String, String> sendSmsMap = new HashMap<>();
sendSmsMap.put("mobile", mobile);
sendSmsMap.put("smsCode", smsCode);
sendSmsMap.putAll(customSmsMap);
return sendSmsMap;
}
}
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