Merge remote-tracking branch 'origin/main'

This commit is contained in:
@jyuhsin
2025-09-23 10:44:13 +08:00
68 changed files with 3232 additions and 1142 deletions
@@ -244,7 +244,8 @@ public class ActivityBasicUnionController {
@At
public Result branchUnionPartUnitTransferData(String unionId) {
List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitLevel", "=", 2).asc("unitcode"));
// List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitLevel", "=", 2).asc("unitcode"));
List<ActivityBasicUnit> units = dao.query(ActivityBasicUnit.class, Cnd.where("unitTypeCode", "=", "1").asc("unitcode"));
List<String> selectUnitIds = units.stream().filter(unit -> StrUtil.isNotBlank(unit.getUnionId()) && unit.getUnionId().equals(unionId)).map(ActivityBasicUnit::getId).toList();
NutMap transferData = NutMap.NEW().addv("selectUnitIds", selectUnitIds).addv("allUnits", units);
return Result.success(transferData);
@@ -0,0 +1,162 @@
package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.util.ObjectUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.TeacherCongressDelegatePush;
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
import io.swagger.annotations.Api;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @author zhf
* @date 2025/9/22 20:41
* @description
*/
@IocBean
@At("/platform/teacherCongress/delegate/push")
@Ok("json:full")
@Api(value = "/platform/teacherCongress/delegate/push", tags = "教代会代表推选")
public class TeacherCongressDelegatePushController {
@Inject
private Dao dao;
@Inject
private BaseService baseService;
@At("")
@Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/push/index.html")
@SaCheckPermission("tc.delegate.push")
public void index() {
}
/**
* 获取本分工会下的非代表用户
*
* @param sessionId
* @return
*/
@At
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("tc.delegate.push")
@SLog(tag = "民主管理-教代会代表推选", msg = "获取本分工会下的非代表用户")
public Result getUnionUser(String sessionId, String unionId) {
// 查询预选中的代表
Cnd cndx = Cnd.where("sessionId", "=", sessionId);
cndx.andEX("unionId", "=", SecurityUtil.getUnionId());
List<Teacher_congress_delegate> delegateList = dao.query(Teacher_congress_delegate.class, cndx);
// u.professionalTitle,
// u.professionalLevel,
Sql sql = Sqls.create("""
SELECT
u.id AS userId,
u.loginname as loginName,
u.username as userName,
u.sex,
u.birthday,
u.nation,
TIMESTAMPDIFF(YEAR, u.birthday, CURDATE()) AS age
FROM
`vw_user` u
LEFT JOIN teacher_congress_delegate tcd ON tcd.userId = u.id
AND tcd.sessionId = @sessionId
LEFT JOIN teacher_congress_delegate_push tcdp ON tcdp.userId = tcdp.id
AND tcdp.sessionId = @sessionId
$condition
""");
sql.setParam("sessionId", sessionId);
Cnd cnd = Cnd.NEW();
cnd.and("u.member", "=", 1);
cnd.and("tcd.userId", "is", null);
cnd.and("tcdp.id", "is", null);
cnd.and("u.unionId", "=", SecurityUtil.getUnionId());
sql.setCondition(cnd);
List userList = baseService.listMap(sql);
return Result.success(Map.of("userData", userList, "userValue", delegateList));
}
/**
* 推选代表
*/
@At
@Aop(TransAop.READ_COMMITTED)
public Object addPreselectionDb(@Param("userValue") String[] userValue, String sessionId, String representativeType) {
List<TeacherCongressDelegatePush> list = new ArrayList<>();
for (String id : userValue) {
View_user user = dao.fetch(View_user.class, Cnd.where("id", "=", id));
TeacherCongressDelegatePush tmd = new TeacherCongressDelegatePush();
tmd.setUserId(user.getId());
tmd.setSessionId(sessionId);
tmd.setDelegationId(null);
tmd.setUserName(user.getUsername());
tmd.setLoginName(user.getLoginname());
tmd.setSex(user.getSex());
tmd.setNation(user.getNation());
tmd.setEducation(user.getEducation());
tmd.setAcademicDegree(user.getAcademicDegree());
tmd.setPolitical(user.getPolitical());
tmd.setProfessionalTitle(user.getProfessionalTitle());
tmd.setProfessionalLevel(user.getProfessionalLevel());
tmd.setBirthday(user.getBirthday());
tmd.setUnitId(user.getUnitId());
tmd.setUnitName(user.getUnitName());
tmd.setUnionId(user.getUnionId());
tmd.setUnionName(user.getUnionName());
tmd.setOrdinaryTeacher(false);
tmd.setSeniorTeacher(false);
tmd.setSchoolLeader(false);
tmd.setMiddleLevelLeader(false);
tmd.setMobile(user.getMobile());
tmd.setIsJdh(true);
tmd.setIsGdh(false);
tmd.setRepresentativeType(representativeType);
if (ObjectUtil.isNotEmpty(user.getBirthday())) {
Date birthdayDate = user.getBirthday();
LocalDate birthday = birthdayDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
LocalDate currentDate = LocalDate.now();
int age = Period.between(birthday, currentDate).getYears();
tmd.setAge(age);
}
tmd.setPushTime(new Date());
list.add(tmd);
}
dao.insert(list);
return Result.success();
}
}
@@ -0,0 +1,186 @@
package com.budwk.app.zhgh.democratic.teachercongress.delegate.models;
import com.budwk.app.base.model.BaseModel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.dao.interceptor.annotation.PrevInsert;
import java.util.Date;
/**
* @author zhf
* @date 2025/9/22 20:40
* @description 代表推选表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Table("teacher_congress_delegate_push")
@TableMeta("{'mysql-charset':'utf8mb4'}")
@Comment("代表推选表")
public class TeacherCongressDelegatePush extends BaseModel {
@Name
@Comment("ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
@PrevInsert(uu32 = true)
private String id;
@Column
@Comment("代表用户ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String userId;
@Column
@Comment("所属教代会ID")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String sessionId;
@Column
@Comment("所属代表团 当用户为校领导是该字段不为空")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String delegationId;
@Column
@Comment("姓名")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String userName;
@Column
@Comment("工号")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String loginName;
@Column
@Comment("性别")
@ColDefine(type = ColType.VARCHAR, width = 2)
private String sex;
@Column
@Comment("出生日期")
@ColDefine(type = ColType.DATETIME)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
@Column
@Comment("民族")
@ColDefine(type = ColType.VARCHAR, width = 10)
private String nation;
@Column
@Comment("政治面貌")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String political;
@Column
@Comment("学历")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String education;
@Column
@Comment("学位")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String academicDegree;
@Column
@Comment("职称")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String professionalTitle;
@Column
@Comment("职级")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String professionalLevel;
@Column
@Comment("是否专任教师")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean ordinaryTeacher;
@Column
@Comment("是否高级职称专任教师")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean seniorTeacher;
@Column
@Comment("是否校领导")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean schoolLeader;
@Column
@Comment("是否中层领导")
@ColDefine(type = ColType.BOOLEAN)
@Default("0")
private Boolean middleLevelLeader;
@Column
@Comment("行政职称===>position")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String administrativeTitle;
@Column
@Comment("年龄")
@ColDefine(type = ColType.INT)
private Integer age;
@Column
@Comment("单位ID")
@ColDefine(type = ColType.VARCHAR)
private String unitId;
@Column
@Comment("单位名称")
@ColDefine(type = ColType.VARCHAR)
private String unitName;
@Column
@Comment("分工会ID")
@ColDefine(type = ColType.VARCHAR)
private String unionId;
@Column
@Comment("分工会名称")
@ColDefine(type = ColType.VARCHAR)
private String unionName;
@Column
@Comment("手机号")
@ColDefine(type = ColType.VARCHAR, width = 50)
private String mobile;
@Column
@Comment("推送时间")
@ColDefine(type = ColType.DATETIME)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date pushTime;
@Column
@Comment("教代会代表类型")
@ColDefine(type = ColType.VARCHAR, width = 32)
private String roleId;
@Column
@Comment("教代会")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isJdh;
@Column
@Comment("工代会")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isGdh;
@Column
@Comment("备注")
@ColDefine(type = ColType.VARCHAR, width = 20)
private String bz;
@Column
@Comment("代表类型(正式代表 列席代表)")
@ColDefine(type = ColType.VARCHAR, width = 4)
private String representativeType;
}
@@ -169,7 +169,8 @@ public class TeacherCongressDelegationController {
seg.orEX("id", "not in", unitIds);
seg.orEX("id", "in", selectUnitIds);
Cnd cnd = Cnd.where("unitLevel", "=", 2);
// Cnd cnd = Cnd.where("unitLevel", "=", 2);
Cnd cnd = Cnd.where("unitTypeCode", "=", "1");
if (!seg.isEmpty()) {
cnd.and(seg);
}
@@ -174,7 +174,8 @@ public class WorkerCongressDelegationController {
seg.orEX("id", "not in", unitIds);
seg.orEX("id", "in", selectUnitIds);
Cnd cnd = Cnd.where("unitLevel", "=", 2);
// Cnd cnd = Cnd.where("unitLevel", "=", 2);
Cnd cnd = Cnd.where("unitTypeCode", "=", "1");
if (!seg.isEmpty()) {
cnd.and(seg);
}
@@ -17,20 +17,42 @@ import lombok.Getter;
public enum MemberChangeType {
//变更类型
NEW("新入职"),
RESTORE("入会"),
WITHDRAWAL("退会"),
WORK("在职"),
LEAVE_SCHOOL("离校"),
RETIRE("退休"),
RESIGN(""),
OUT("调出"),
LEAVE_OFFICE("离职"),
OTHER("其他减员"),
UNIT_CHANGE("单位异动"),
UNION_CHANGE("工会关系异动"),
BASIC_CHANGE("基本信息异动");
NEW("NEW", "新入职"),
RESTORE("RESTORE", "入会"),
WITHDRAWAL("WITHDRAWAL", "退会"),
ONLINE("ONLINE", "在岗"),
FLEX("FLEX", "柔性"),
SECONDED("SECONDED", "借调挂"),
REMOTE_POST("REMOTE_POST", "异地任职"),
REHIRE_INNER("REHIRE_INNER", "内退返岗"),
SHORT_TRIP("SHORT_TRIP", "短期公差"),
DOMESTIC_MEET("DOMESTIC_MEET", "境内会务"),
QUARANTINE("QUARANTINE", "疫期隔离"),
SICK_LEAVE("SICK_LEAVE", "病假"),
PERSONAL_LEAVE("PERSONAL_LEAVE", "事假"),
NURSING_LEAVE("NURSING_LEAVE", "哺乳假"),
MATERNITY("MATERNITY", "产假"),
LONG_SICK("LONG_SICK", "长病假"),
ABROAD_PUB("ABROAD_PUB", "公派出国"),
STUDY_DOMESTIC("STUDY_DOMESTIC", "国内进修"),
STUDY_ABROAD("STUDY_ABROAD", "境外留学"),
OFF_JOB_START("OFF_JOB_START", "离岗创业"),
INNER_RETIRE("INNER_RETIRE", "内部退养"),
EXTEND("EXTEND", "延聘"),
REHIRE_SCH("REHIRE_SCH", "学校返聘"),
REHIRE_DEPT("REHIRE_DEPT", "部门返聘"),
OFFLINE("OFFLINE", "不在岗"),
UNIT_CHANGE("UNIT_CHANGE", "单位异动"),
UNION_CHANGE("UNION_CHANGE", "工会关系异动"),
BASIC_CHANGE("BASIC_CHANGE", "基本信息异动");
private final String code;
private final String changeTypeName;
}
@@ -92,6 +92,7 @@ public class MemberChangeApplyController {
// 开启流程实例
Dict args = Dict.create();
args.set("origin", "personType");
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, memberChangeRecord);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", memberChangeRecord.getId(), SecurityUtil.getUserId(), args);
@@ -116,6 +117,7 @@ public class MemberChangeApplyController {
dao.insertOrUpdate(memberChangeRecord);
Dict dict = Dict.create();
dict.set("origin", "personType");
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
flowCommonService.executeTask(dict);
@@ -4,10 +4,12 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
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 com.budwk.app.base.annotation.RepeatSubmit;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.BpmProcessConstant;
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.result.Result;
import com.budwk.app.bpm.enums.BpmTaskApprovalTypeEnum;
@@ -15,6 +17,11 @@ import com.budwk.app.bpm.models.BpmProcessInstance;
import com.budwk.app.bpm.models.BpmProcessTask;
import com.budwk.app.bpm.param.BpmTaskApprovalParam;
import com.budwk.app.bpm.service.BpmService;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
import com.budwk.app.flow.entity.ProcessTask;
import com.budwk.app.flow.enums.ProcessSubmitTypeEnum;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
@@ -59,7 +66,7 @@ public class MemberChangeManageController {
@Inject
private Dao dao;
@Inject
private BpmService bpmService;
private FlowEngine flowEngine;
@Inject
private CommonService commonService;
@Inject
@@ -87,65 +94,44 @@ public class MemberChangeManageController {
@Aop(TransAop.READ_COMMITTED)
@SLog(tag = "会员高级管理-会员变更", msg = "分工会/校工会会员管理员提交变更")
@SaCheckPermission(value = {"member.change.mange", "staff.member.change.mange"}, mode = SaMode.OR)
public Result doSubmitChange(@Param("record") MemberChangeRecord record, @Param("approvalRemark") String approvalRemark){
public Result doSubmitChange(MemberChangeRecord record){
// 检验是否有变更
if (Lang.isEmpty(record)) {
return Result.error("未获取到异动数据");
}
List<NutMap> changeInfos = memberCommonService.getChangeInfos(record);
if (Lang.isEmpty(changeInfos)) {
return Result.error("未校验到变更数据,请确认数据是否存在变更");
}
if (Lang.isEmpty(record.getChangeTypes())) {
record.setChangeTypes(List.of(MemberChangeType.BASIC_CHANGE.name()));
} else {
List<String> changeTypes = record.getChangeTypes();
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
record.setChangeTypes(changeTypes);
}
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());
record.setApplyDateTime(DateUtil.date());
record.setChangeOrigin(schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION.name() : MemberChangeOrigin.BRANCH_UNION.name());
// 变更类型
MemberChangeOrigin changeOrigin = schoolRoleBool ? MemberChangeOrigin.SCHOOL_UNION : branchRoleBool ? MemberChangeOrigin.BRANCH_UNION : null;
if (changeOrigin == null) {
throw new BaseException("没有权限,或未设置工会小组");
}
memberCommonService.validateChangeAndSetBasicData(record);
dao.insertOrUpdate(record);
bpmService.startSubmitProcessInstance(BpmProcessConstant.MEMBER_CHANGE.name(),
"【会员变更】" + record.getUsername(), record.getId(), List.of(SecurityUtil.getUserLoginname()), null);
// 有这个菜单权限的,那就是默认分工会审核通过了
BpmProcessInstance instance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", record.getId()));
BpmProcessTask task = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", instance.getId())
.desc(BpmProcessTask::getCreatedAt));
BpmTaskApprovalParam param = new BpmTaskApprovalParam();
param.setProcessInstanceId(instance.getId());
param.setProcessInstanceBusinessId(record.getId());
param.setProcessInstanceTaskId(task.getId());
param.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name());
param.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS);
param.setApprovalOpinion("分工会审核通过");
// 表示分工会审核通过
param.getBpmTaskApprovalTypeEnum();
Map<String, Object> variables = BeanUtil.beanToMap(param);
bpmService.completeTask(param.getProcessInstanceTaskId(), param.getBpmTaskApprovalTypeEnum(), variables, List.of(SecurityUtil.getUserLoginname()));
// 如果有校工会或者超管的角色,直接审核通过了
// 开启流程实例
Dict args = Dict.create();
if (schoolRoleBool) {
BpmProcessInstance committeeInstance = dao.fetch(BpmProcessInstance.class, Cnd.where("processInstanceBusinessId", "=", record.getId()));
BpmProcessTask committeeTask = dao.fetch(BpmProcessTask.class, Cnd.where(BpmProcessTask::getProcessInstanceId, "=", committeeInstance.getId())
.desc(BpmProcessTask::getCreatedAt));
args.set("origin", "schoolUnion");
} else {
args.set("origin", "branchUnion");
}
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, record);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("HYBG", record.getId(), SecurityUtil.getUserId(), args);
BpmTaskApprovalParam committeeParam = new BpmTaskApprovalParam();
committeeParam.setProcessInstanceId(committeeInstance.getId());
committeeParam.setProcessInstanceBusinessId(record.getId());
committeeParam.setProcessInstanceTaskId(committeeTask.getId());
committeeParam.setBpmTaskApprovalType(BpmTaskApprovalTypeEnum.PASS.name());
committeeParam.setBpmTaskApprovalTypeEnum(BpmTaskApprovalTypeEnum.PASS);
committeeParam.setApprovalOpinion("校工会审核通过");
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
memberCommonService.compareChangeInfoAndUpdateMember(committeeParam.getProcessInstanceBusinessId());
bpmService.completeTask(committeeParam.getProcessInstanceTaskId(), committeeParam.getBpmTaskApprovalTypeEnum(), null, null);
// 如果是管理员的话,直接完成变更,修改变更记录
if (schoolRoleBool) {
memberCommonService.compareChangeInfoAndUpdateMember(record);
}
return Result.success();
}
@@ -86,7 +86,7 @@ public class MemberInfoBoardController {
@At
@SaCheckPermission(value = {"member.info.board", "h5.member.info.board"}, mode = SaMode.OR)
public Result memberPercentage() {
List<Sys_dict> memberApplyPersonTypeDictList = sysDictService.getSubListByCode("PERSON_TYPE");
List<Sys_dict> memberApplyPersonTypeDictList = sysDictService.getSubListByCode("USER_PERSON_TYPE");
List<String> personTypes = memberApplyPersonTypeDictList.stream().map(Sys_dict::getCode).collect(Collectors.toList());
int member = memberInfoService.count(Sqls.create("select count(1) from sys_user where member = 1"));
int user = memberInfoService.count(Sqls.create("select count(1) from sys_user").setParam("personTypes", personTypes));
@@ -4,6 +4,7 @@ import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
import com.budwk.app.zhgh.staffmanage.member.models.MemberChangeRecord;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberManagePageForm;
import org.nutz.dao.sql.Sql;
@@ -100,4 +101,10 @@ public interface MemberCommonService extends BaseService<Sys_user> {
* @param record
*/
void validateChangeAndSetBasicData(MemberChangeRecord record);
/**
* 验证变更信息
* @param record
*/
void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin);
}
@@ -484,6 +484,13 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
@Override
public void validateChangeAndSetBasicData(MemberChangeRecord record) {
// 不传递 MemberChangeOrigin 默认个人变更
validateChangeAndSetBasicData(record, MemberChangeOrigin.PERSONAL);
}
@Override
public void validateChangeAndSetBasicData(MemberChangeRecord record, MemberChangeOrigin origin) {
// 校验有没有发生变更
List<NutMap> changeInfos = getChangeInfos(record);
if (Lang.isEmpty(changeInfos)) {
@@ -495,9 +502,10 @@ public class MemberManageServiceImpl extends BaseServiceImpl<Sys_user> implement
List<String> changeTypes = compareChangeType(record, user);
record.setChangeTypes(changeTypes);
record.setUserId(SecurityUtil.getUserId());
// 变更来源 个人
record.setChangeOrigin(MemberChangeOrigin.PERSONAL.name());
record.setUserId(user.getId());
// 变更来源
record.setChangeOrigin(origin != null ? origin.name() : MemberChangeOrigin.PERSONAL.name());
record.setApplyDateTime(DateUtil.date());
}
private String booleanVerification(Object value) {