Commit 4be9240e authored by suhuiguang's avatar suhuiguang

feat(tcm): 启用管理

1.启用停用增加短信提醒
parent d13daba6
......@@ -31,4 +31,15 @@ public enum EnterpriseEnums {
}
return null;
}
public enum State {
/**
* 停用
*/
TY,
/**
* 启用
*/
QY
}
}
package com.yeejoin.amos.boot.module.tcm.biz.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.utils.NameUtils;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
......@@ -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.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -67,6 +70,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@Autowired
private TzBaseEnterpriseInfoMapper tzBaseEnterpriseInfoMapper;
/**
* 新增企业数据信息
*
......@@ -188,6 +192,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
/**
* 分页查询企业信息 从jczs迁移过来
*
* @param pageParam
* @param sort
* @param map
......@@ -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) {
TzBaseEnterpriseInfoDto dto = JSON.parseObject(JSON.toJSONString(map), TzBaseEnterpriseInfoDto.class);
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[] split = createDateRangeObj.replace("[", "").replace("]", "").split(",");
String startDateStr = split[0];
......@@ -350,6 +355,7 @@ public class TzBaseEnterpriseInfoController extends BaseController {
/**
* 监管对接
*
* @param unitCode
* @return
*/
......@@ -393,16 +399,16 @@ public class TzBaseEnterpriseInfoController extends BaseController {
@PutMapping(value = "/enableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业启用", notes = "企业启用")
@RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Boolean> enableBatch(@RequestParam String ids) {
return ResponseHelper.buildResponse(enterpriseManageService.enable(Arrays.asList(ids.split(","))));
public ResponseModel<ReginParams> enableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.enable(Arrays.asList(ids.split(",")), new JSONObject(Optional.ofNullable(params).orElse(new JSONObject())), getSelectedOrgInfo()));
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@PutMapping(value = "/disableBatch")
@ApiOperation(httpMethod = "PUT", value = "企业停用", notes = "企业停用")
@RestEventTrigger(value = "operateLogRestEventHandler")
public ResponseModel<Boolean> disableBatch(@RequestParam String ids) {
return ResponseHelper.buildResponse(enterpriseManageService.disable(Arrays.asList(ids.split(","))));
public ResponseModel<ReginParams> disableBatch(@RequestParam String ids, @RequestBody(required = false) Map<String, Object> params) {
return ResponseHelper.buildResponse(enterpriseManageService.disable(Arrays.asList(ids.split(",")), new JSONObject(params), getSelectedOrgInfo()));
}
......
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.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.entity.BaseEntity;
import com.yeejoin.amos.boot.module.common.api.dao.EsBaseEnterpriseInfoDao;
......@@ -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.TzsBaseIndividuality;
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.TzsBaseIndividualityMapper;
import com.yeejoin.amos.boot.module.tcm.api.mapper.TzsBaseInstitutionMapper;
......@@ -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.CompanyModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
......@@ -47,6 +52,7 @@ import java.util.stream.Stream;
@Service
@RequiredArgsConstructor
@Slf4j
public class EnterpriseManageServiceImpl {
private final TzsUserInfoServiceImpl userInfoService;
......@@ -70,7 +76,7 @@ public class EnterpriseManageServiceImpl {
private final RegUnitInfoMapper regUnitInfoMapper;
private final TcmCommonService commonService;
/**
......@@ -99,6 +105,7 @@ public class EnterpriseManageServiceImpl {
/**
* 冗余删除es的人员(已经前置校验数据库没人、没设备才能删除,目的防止人员的数据库和es人员索引的人员不一致)
*
* @param e 企业
*/
private void deleteEsUser(TzBaseEnterpriseInfo e) {
......@@ -118,7 +125,8 @@ public class EnterpriseManageServiceImpl {
*
* @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);
// 状态校验,非停用状态不能启用
......@@ -127,9 +135,11 @@ public class EnterpriseManageServiceImpl {
this.updateEnterpriseDeletedStatus(enterpriseInfo, false);
// 保留防止之前勿删除了
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 {
* 批量停用企业
*
* @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);
// 状态校验,非启用状态不能停用
this.checkForDisable(ids, enterpriseInfos);
enterpriseInfos.forEach(enterpriseInfo -> {
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()));
List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false));
if (!userModels.isEmpty()) {
List<String> userIds = userModels.stream().map(AgencyUserModel::getUserId).collect(Collectors.toList());
Privilege.agencyUserClient.unlockUsers(String.join(",", userIds));
}
userModels.forEach(e -> e.setCompanys(Collections.singletonList(companyModel)));
return userModels;
}
private void insertEnterprise2Es(TzBaseEnterpriseInfo enterpriseInfo) {
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()));
List<AgencyUserModel> userModels = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryByCompanyId(companyModel.getSequenceNbr(), null, null, false));
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));
}
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