对页面敏感信息进行了数据脱敏处理,给学生学籍异动模块增加了政治面貌选项和给八个学院的书记推送企业微信

This commit is contained in:
MDSMO
2025-08-18 09:35:47 +08:00
parent f983bf26c3
commit 59a345d0b9
28 changed files with 635 additions and 45 deletions

View File

@@ -143,6 +143,16 @@ public class RtStuDisqualification extends BaseEntity {
@Excel(name = "籍贯")
private String jg;
/**
* 政治面貌
*/
@ApiModelProperty("政治面貌")
@TableField("political_status")
@Excel(name = "政治面貌")
private String politicalStatus;
/**
* 市/县
*/

View File

@@ -148,6 +148,14 @@ private static final long serialVersionUID=1L;
@Excel(name = "籍贯")
private String jg;
/**
* 政治面貌
*/
@ApiModelProperty("政治面貌")
@TableField("political_status")
@Excel(name = "政治面貌")
private String politicalStatus;
/**
* 市/县
*/

View File

@@ -147,6 +147,14 @@ public class RtStuQuitSchool extends BaseEntity {
@Excel(name = "籍贯")
private String jg;
/**
* 政治面貌
*/
@ApiModelProperty("政治面貌")
@TableField("political_status")
@Excel(name = "政治面貌")
private String politicalStatus;
/**
* 市/县
*/

View File

@@ -139,6 +139,14 @@ public class RtStuReentrySchool extends BaseEntity {
@Excel(name = "籍贯")
private String jg;
/**
* 政治面貌
*/
@ApiModelProperty("政治面貌")
@TableField("political_status")
@Excel(name = "政治面貌")
private String politicalStatus;
/**
* 市/县
*/

View File

@@ -1,5 +1,7 @@
package com.srs.routine.domain.vo;
import com.srs.common.annotation.Sensitive;
import com.srs.common.enums.DesensitizedType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -35,12 +37,14 @@ public class StuLeaveApplicationDetailsVo implements Serializable {
private String className;
@ApiModelProperty("联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
private String phoneNumber;
@ApiModelProperty("父亲姓名")
private String fatherName;
@ApiModelProperty("父亲联系电话")
@Sensitive(desensitizedType = DesensitizedType.PHONE)
private String fatherRelation;
@ApiModelProperty("请假事由")

View File

@@ -68,6 +68,7 @@ public interface NotificationManagementMapper extends BaseMapper<NotificationMan
List<SrsGrade> selectGradeList();
/**
*
* 根据年级ID列表查询学生用户ID
*
* @param gradeIds 年级ID列表

View File

@@ -214,7 +214,6 @@ public class NotificationManagementServiceImpl extends ServiceImpl<NotificationM
return i;
}
}
return result;
}
@@ -246,6 +245,7 @@ public class NotificationManagementServiceImpl extends ServiceImpl<NotificationM
String toUser = String.join("|", batch);
// 调用企业微信发送消息方法
weChatUtil.sendTextMessage(toUser, content);
}
}

View File

@@ -7,10 +7,12 @@ import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.routine.domain.RtStuDisqualification;
import com.srs.routine.mapper.RtStuDisqualificationMapper;
import com.srs.routine.service.IRtStuDisqualificationService;
import com.srs.system.mapper.SysUserMapper;
import com.srs.system.service.ISysUserService;
import org.flowable.engine.IdentityService;
import org.flowable.engine.TaskService;
@@ -21,6 +23,7 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 给予学生退学申请Service业务层处理
@@ -36,6 +39,12 @@ public class RtStuDisqualificationServiceImpl extends ServiceImpl<RtStuDisqualif
@Autowired
private ISysUserService sysUserService;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
public WeChatUtil weChatUtil;
/**
* 查询给予学生退学申请
*
@@ -193,12 +202,52 @@ public class RtStuDisqualificationServiceImpl extends ServiceImpl<RtStuDisqualif
.list();
// 保存审核结果到任务变量中
variables.put("approved", true);
// 标记是否有任务被完成
boolean taskCompleted = false;
// 完成待办任务列表
for (Task task : tasks) {
String taskId = task.getId();
String disqualificationId = taskService.getVariable(taskId, "disqualificationId").toString();
if (disqualificationId.equals(rtStuDisqualification.getDisqualificationId().toString())) {
taskService.complete(task.getId(), variables);
taskCompleted = true;
}
}
// 所有相关任务完成后,发送企业微信消息
if (taskCompleted) {
try {
// 获取申请人信息
String applicantName = rtStuDisqualification.getStuName();
String politicalStatus = rtStuDisqualification.getPoliticalStatus();
SysUser sysUser = new SysUser();
sysUser.setRoleId(118L);
List<SysUser> sysUsers = sysUserMapper.selectAllocatedList(sysUser);
// 提取二级学院的书记的账号
List<String> userNames = sysUsers.stream()
.map(SysUser::getUserName)
.collect(Collectors.toList());
// 只有政治面貌是团员时才发送企业微信消息
if ("团员".equals(politicalStatus)) {
// 消息内容
String messageContent = "【给予学生退学】" + applicantName + "的给予学生退学申请已通过审核。";
int batchSize = 10;
for (int i = 0; i < userNames.size(); i += batchSize) {
List<String> batch = userNames.subList(i, Math.min(i + batchSize, userNames.size()));
// 拼接成"user1|user2|user3"格式
String toUser = String.join("|", batch);
// 调用企业微信发送消息方法
weChatUtil.sendTextMessage(toUser, messageContent);
}
}
} catch (Exception e) {
log.error("发送企业微信消息失败:", e);
}
}

View File

@@ -3,14 +3,19 @@ package com.srs.routine.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.flowable.domain.StuDropOutSchool;
import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.routine.domain.RtStuQuitSchool;
import com.srs.system.mapper.SysUserMapper;
import org.flowable.engine.IdentityService;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
@@ -32,6 +37,11 @@ import org.springframework.transaction.annotation.Transactional;
public class RtStuDropOutSchoolServiceImpl extends ServiceImpl<RtStuDropOutSchoolMapper, RtStuDropOutSchool> implements IRtStuDropOutSchoolService {
@Autowired
private RtStuDropOutSchoolMapper rtStuDropOutSchoolMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
public WeChatUtil weChatUtil;
/**
* 查询学生退学申请记录
@@ -60,7 +70,7 @@ public class RtStuDropOutSchoolServiceImpl extends ServiceImpl<RtStuDropOutSchoo
*
* @param rtStuDropOutSchool 学生退学申请记录
* @return 结果
*/
* */
@Override
@Transactional(rollbackFor = Exception.class)
public int insertRtStuDropOutSchool(RtStuDropOutSchool rtStuDropOutSchool) {
@@ -160,12 +170,50 @@ public class RtStuDropOutSchoolServiceImpl extends ServiceImpl<RtStuDropOutSchoo
.list();
// 保存审核结果到任务变量中
variables.put("approved", true);
// 标记是否有任务被完成
boolean taskCompleted = false;
// 完成待办任务列表
for (Task task : tasks) {
String taskId = task.getId();
String dropOutSchoolId = taskService.getVariable(taskId, "dropOutSchoolId").toString();
if (dropOutSchoolId.equals(rtStuDropOutSchool.getDropOutSchoolId().toString())) {
taskService.complete(task.getId(), variables);
taskCompleted = true;
}
}
// 所有相关任务完成后,发送企业微信消息
if (taskCompleted) {
try {
// 获取申请人信息
String applicantName = rtStuDropOutSchool.getStuName();
String politicalStatus = rtStuDropOutSchool.getPoliticalStatus();
SysUser sysUser = new SysUser();
sysUser.setRoleId(118L);
List<SysUser> sysUsers = sysUserMapper.selectAllocatedList(sysUser);
// 提取二级学院的书记的账号
List<String> userNames = sysUsers.stream()
.map(SysUser::getUserName)
.collect(Collectors.toList());
// 只有政治面貌是团员时才发送企业微信消息
if ("团员".equals(politicalStatus)) {
// 消息内容
String messageContent = "【退学申请】" + applicantName + "的退学申请已通过审核。";
int batchSize = 10;
for (int i = 0; i < userNames.size(); i += batchSize) {
List<String> batch = userNames.subList(i, Math.min(i + batchSize, userNames.size()));
// 拼接成"user1|user2|user3"格式
String toUser = String.join("|", batch);
// 调用企业微信发送消息方法
weChatUtil.sendTextMessage(toUser, messageContent);
}
}
} catch (Exception e) {
log.error("发送企业微信消息失败:", e);
}
}

View File

@@ -22,6 +22,9 @@ public class RtStuMultiLevelReviewServiceImpl extends ServiceImpl<RtStuMultiLeve
@Autowired
private RtStuMultiLevelReviewMapper rtStuMultiLevelReviewMapper;
@Autowired
public WeChatUtil weChatUtil;
/**
* 查询审核信息
*
@@ -116,8 +119,9 @@ public class RtStuMultiLevelReviewServiceImpl extends ServiceImpl<RtStuMultiLeve
if (messageContent == null || messageContent.trim().isEmpty()) {
messageContent = "你申请办理的学生证制作完成长堽校区前往xxx领取里建校区前往xxx领取";
}
WeChatUtil weChatUtil = new WeChatUtil();
weChatUtil.sendTextMessage(rtStuMultiLevelReview.getStuNo(), messageContent);
}
return result;
}

View File

@@ -3,13 +3,17 @@ package com.srs.routine.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.system.mapper.SysUserMapper;
import org.flowable.engine.IdentityService;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
@@ -31,6 +35,10 @@ import org.springframework.transaction.annotation.Transactional;
public class RtStuQuitSchoolServiceImpl extends ServiceImpl<RtStuQuitSchoolMapper, RtStuQuitSchool> implements IRtStuQuitSchoolService {
@Autowired
private RtStuQuitSchoolMapper rtStuQuitSchoolMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
public WeChatUtil weChatUtil;
/**
* 查询休学申请记录
@@ -124,19 +132,58 @@ public class RtStuQuitSchoolServiceImpl extends ServiceImpl<RtStuQuitSchoolMappe
.list();
// 保存审核结果到任务变量中
variables.put("approved", true);
// 标记是否有任务被完成
boolean taskCompleted = false;
// 完成待办任务列表
for (Task task : tasks) {
String taskId = task.getId();
String quitSchoolId = taskService.getVariable(taskId, "quitSchoolId").toString();
if (quitSchoolId.equals(rtStuQuitSchool.getQuitSchoolId().toString())) {
taskService.complete(task.getId(), variables);
taskCompleted = true;
}
}
// 所有相关任务完成后,发送企业微信消息
if (taskCompleted) {
try {
// 获取申请人信息
String applicantName = rtStuQuitSchool.getStuName();
String politicalStatus = rtStuQuitSchool.getPoliticalStatus();
SysUser sysUser = new SysUser();
sysUser.setRoleId(118L);
List<SysUser> sysUsers = sysUserMapper.selectAllocatedList(sysUser);
// 提取二级学院的书记的账号
List<String> userNames = sysUsers.stream()
.map(SysUser::getUserName)
.collect(Collectors.toList());
// 只有政治面貌是团员时才发送企业微信消息
if ("团员".equals(politicalStatus)) {
// 消息内容
String messageContent = "【休学申请】" + applicantName + "的休学申请已通过审核。";
int batchSize = 10;
for (int i = 0; i < userNames.size(); i += batchSize) {
List<String> batch = userNames.subList(i, Math.min(i + batchSize, userNames.size()));
// 拼接成"user1|user2|user3"格式
String toUser = String.join("|", batch);
// 调用企业微信发送消息方法
weChatUtil.sendTextMessage(toUser, messageContent);
}
}
} catch (Exception e) {
log.error("发送企业微信消息失败:", e);
}
}
return dto;
} else {
return null;
}
}
/**

View File

@@ -3,13 +3,16 @@ package com.srs.routine.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.srs.common.core.domain.AjaxResult;
import com.srs.common.core.domain.entity.SysUser;
import com.srs.common.doman.dto.ProcessResultDto;
import com.srs.common.utils.DateUtils;
import com.srs.common.utils.SecurityUtils;
import com.srs.common.utils.WeChatUtil;
import com.srs.flowable.service.IFlowDefinitionService;
import com.srs.routine.domain.RtStuReentrySchool;
import com.srs.routine.mapper.RtStuReentrySchoolMapper;
import com.srs.routine.service.IRtStuReentrySchoolService;
import com.srs.system.mapper.SysUserMapper;
import org.flowable.engine.IdentityService;
import org.flowable.engine.TaskService;
import org.flowable.task.api.Task;
@@ -19,6 +22,7 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 复学申请记录Service业务层处理
@@ -31,6 +35,12 @@ public class RtStuReentrySchoolServiceImpl extends ServiceImpl<RtStuReentrySchoo
@Autowired
private RtStuReentrySchoolMapper rtStuReentrySchoolMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
public WeChatUtil weChatUtil;
/**
* 查询复学申请记录
*
@@ -158,6 +168,7 @@ public class RtStuReentrySchoolServiceImpl extends ServiceImpl<RtStuReentrySchoo
@Autowired
IdentityService identityService;
private ProcessResultDto startReentrySchoolProcess(RtStuReentrySchool rtStuReentrySchool) {
Map<String, Object> variables = new HashMap<>();
variables.put("reentryId", rtStuReentrySchool.getReentryId().toString());
@@ -185,12 +196,47 @@ public class RtStuReentrySchoolServiceImpl extends ServiceImpl<RtStuReentrySchoo
.list();
// 保存审核结果到任务变量中
variables.put("approved", true);
// 标记是否有任务被完成
boolean taskCompleted = false;
// 完成待办任务列表
for (Task task : tasks) {
String taskId = task.getId();
String reentryId = taskService.getVariable(taskId, "reentryId").toString();
if (reentryId.equals(rtStuReentrySchool.getReentryId().toString())) {
taskService.complete(task.getId(), variables);
taskCompleted = true;
}
}
// 所有相关任务完成后,发送企业微信消息
if (taskCompleted) {
try {
// 获取申请人信息
String applicantName = rtStuReentrySchool.getStuName();
String politicalStatus = rtStuReentrySchool.getPoliticalStatus();
SysUser sysUser = new SysUser();
sysUser.setRoleId(118L);
List<SysUser> sysUsers = sysUserMapper.selectAllocatedList(sysUser);
// 提取二级学院的书记的账号
List<String> userNames = sysUsers.stream()
.map(SysUser::getUserName)
.collect(Collectors.toList());
// 只有政治面貌是团员时才发送企业微信消息
if ("团员".equals(politicalStatus)) {
// 消息内容
String messageContent = "【复学申请】" + applicantName + "的复学申请已通过审核。";
int batchSize = 10;
for (int i = 0; i < userNames.size(); i += batchSize) {
List<String> batch = userNames.subList(i, Math.min(i + batchSize, userNames.size()));
// 拼接成"user1|user2|user3"格式
String toUser = String.join("|", batch);
// 调用企业微信发送消息方法
weChatUtil.sendTextMessage(toUser, messageContent);
}
}
} catch (Exception e) {
log.error("发送企业微信消息失败:", e);
}
}