This commit is contained in:
Paidax
2025-10-17 08:43:06 +08:00
parent 48981a1304
commit 5a39de9794
6 changed files with 69 additions and 1 deletions
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.staffmanage.member.controller.apply;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
@@ -72,6 +73,9 @@ public class MemberApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员入会申请", msg = "保存申请,申请人: ${args[0].username}")
public Result save(@Param("data") MemberApplyRecord memberApplyRecord) {
if (StrUtil.isBlank(memberApplyRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "apply");
}
dao.insertOrUpdate(memberApplyRecord);
return Result.success();
}
@@ -83,6 +87,9 @@ public class MemberApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员入会申请", msg = "提交申请,申请人: ${args[0].username}")
public Result submit(@Param("data") MemberApplyRecord memberApplyRecord){
if (StrUtil.isBlank(memberApplyRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "apply");
}
// 开启流程实例
Dict args = Dict.create();
// 设置流程变量
@@ -119,6 +126,9 @@ public class MemberApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员入会申请", msg = "重新提交申请,申请人: ${args[0].username}")
public Result submitAgain(@Param("data") MemberApplyRecord memberApplyRecord, @Param("taskId") Long taskId) {
if (StrUtil.isBlank(memberApplyRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "apply");
}
Dict dict = Dict.create();
// 设置流程变量
if ("HMC".equals(Globals.SchoolCode)) {
@@ -75,6 +75,9 @@ public class MemberChangeApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员变更申请", msg = "保存申请,申请人: ${args[0].username}")
public Result save(@Param("data") MemberChangeRecord memberChangeRecord) {
if (StrUtil.isBlank(memberChangeRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "change");
}
// 校验是否有变更
memberCommonService.validateChangeAndSetBasicData(memberChangeRecord);
dao.insertOrUpdate(memberChangeRecord);
@@ -88,6 +91,9 @@ public class MemberChangeApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员变更申请", msg = "提交申请,申请人: ${args[0].username}")
public Result submit(@Param("data") MemberChangeRecord memberChangeRecord){
if (StrUtil.isBlank(memberChangeRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "change");
}
// 校验是否有变更
memberCommonService.validateChangeAndSetBasicData(memberChangeRecord);
dao.insertOrUpdate(memberChangeRecord);
@@ -118,6 +124,9 @@ public class MemberChangeApplyController {
@SaCheckPermission("member.apply.submit")
@SLog(tag = "会员变更申请", msg = "重新提交申请,申请人: ${args[0].username}")
public Result submitAgain(@Param("data") MemberChangeRecord memberChangeRecord, @Param("taskId") Long taskId) {
if (StrUtil.isBlank(memberChangeRecord.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(null, "change");
}
// 校验是否有变更
memberCommonService.validateChangeAndSetBasicData(memberChangeRecord);
dao.insertOrUpdate(memberChangeRecord);
@@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.RepeatSubmit;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.BpmProcessConstant;
@@ -100,6 +101,11 @@ public class MemberChangeManageController {
if (Lang.isEmpty(record)) {
return Result.error("未获取到异动数据");
}
if (StrUtil.isBlank(record.getId())) {
memberCommonService.validateApplyOrChangeIsDoing(record.getUserId(), "change");
}
boolean schoolRoleBool = AuthUtil.hasRoleOr(RoleConstant.SCHOOL_UNION_CHAIRMAN.name(), RoleConstant.SCHOOL_UNION_MEMBER_ADMIN.name(), RoleConstant.SYSADMIN.name());
boolean branchRoleBool = AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_CHAIRMAN.name(), RoleConstant.BRANCH_UNION_OPERATOR.name());
boolean groupRoleBool = AuthUtil.hasRole(RoleConstant.BRANCH_UNION_GROUP_LEADER.name());
@@ -107,4 +107,12 @@ public interface MemberCommonService extends BaseService<Sys_user> {
* @param record
*/
void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin);
/**
* 校验申请和变更是否正在进行中
* @param userId 用户id
* @param type 类型: apply or change
*/
void validateApplyOrChangeIsDoing(String userId, String type);
}
@@ -10,6 +10,9 @@ import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
import com.budwk.app.sys.models.*;
import com.budwk.app.sys.services.SysDictService;
import com.budwk.app.sys.services.SysRoleService;
@@ -508,6 +511,38 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
record.setApplyDateTime(DateUtil.date());
}
/**
* 验证申请或变更是否正在进行
* @param userId 用户id
* @param type 类型: apply or change
*/
@Override
public void validateApplyOrChangeIsDoing(String userId, String type) {
String businessNo = "";
Cnd cnd = Cnd.NEW();
cnd.and("userId", "=", StrUtil.isNotBlank(userId) ? userId : SecurityUtil.getUserId());
cnd.desc("applyDateTime");
if ("apply".equals(type)) {
// 申请
MemberApplyRecord apply = dao().fetch(MemberApplyRecord.class, cnd);
businessNo = apply.getId();
} else {
// 变更
MemberChangeRecord change = dao().fetch(MemberChangeRecord.class, cnd);
businessNo = change.getId();
}
int count = dao().count(ProcessInstance.class, Cnd.where("businessNo", "=", businessNo)
.and(ProcessInstance::getState, "=", ProcessTaskStateEnum.DOING.getCode()));
if (count > 0) {
throw new BaseException("您有%s流程还在进行中,请等待流程结束后再次操作".formatted("apply".equals(type) ? "申请" : "变更"));
}
}
private String booleanVerification(Object value) {
// 检查是否为null或空字符串
if (ObjectUtil.isAllEmpty(value, "")) {