change
This commit is contained in:
+47
@@ -0,0 +1,47 @@
|
|||||||
|
package com.budwk.app.zhgh.staffmanage.sourcechange.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.sourcechange.param.PendingConfirmUserPageForm;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.sourcechange.service.PendingConfirmUserService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待确认人员记录页面及查询接口。
|
||||||
|
*/
|
||||||
|
@Api(tags = "待确认人员记录")
|
||||||
|
@IocBean
|
||||||
|
@At("/platform/sourcechange/pending")
|
||||||
|
public class PendingConfirmUserController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private PendingConfirmUserService pendingConfirmUserService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打开待确认人员记录页面。
|
||||||
|
*/
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/zhgh/staffmanage/sourcechange/pending/index.html")
|
||||||
|
@SaCheckPermission("staff.sourcechange.pending")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询待确认或已确认人员。
|
||||||
|
*
|
||||||
|
* @param pageForm 查询条件
|
||||||
|
* @return 人员分页数据
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@Ok("json")
|
||||||
|
@ApiOperation("分页查询待确认人员记录")
|
||||||
|
@SaCheckPermission("staff.sourcechange.pending")
|
||||||
|
public Result pageData(PendingConfirmUserPageForm pageForm) {
|
||||||
|
return Result.success(pendingConfirmUserService.pageData(pageForm));
|
||||||
|
}
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
package com.budwk.app.zhgh.staffmanage.sourcechange.param;
|
||||||
|
|
||||||
|
import com.budwk.app.base.param.PageForm;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待确认人员记录分页查询参数。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class PendingConfirmUserPageForm extends PageForm {
|
||||||
|
|
||||||
|
/** 所属工会ID。 */
|
||||||
|
private String unionId;
|
||||||
|
|
||||||
|
/** 所属单位ID。 */
|
||||||
|
private String unitId;
|
||||||
|
|
||||||
|
/** 人员类型。 */
|
||||||
|
private String personType;
|
||||||
|
|
||||||
|
/** 在职状态。 */
|
||||||
|
private String userState;
|
||||||
|
|
||||||
|
/** 确认状态:1待确认、2已确认,默认查询待确认。 */
|
||||||
|
private Integer pendingConfirmStatus = 1;
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
package com.budwk.app.zhgh.staffmanage.sourcechange.service;
|
||||||
|
|
||||||
|
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.zhgh.staffmanage.sourcechange.param.PendingConfirmUserPageForm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待确认人员记录业务服务。
|
||||||
|
*/
|
||||||
|
public interface PendingConfirmUserService extends BaseService<Sys_user> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询待确认或已确认人员。
|
||||||
|
*
|
||||||
|
* @param pageForm 查询条件
|
||||||
|
* @return 人员分页数据
|
||||||
|
*/
|
||||||
|
Pagination pageData(PendingConfirmUserPageForm pageForm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人员变更提交成功后,将待确认状态更新为已确认。
|
||||||
|
*
|
||||||
|
* @param userId 系统用户ID
|
||||||
|
*/
|
||||||
|
void markConfirmed(String userId);
|
||||||
|
}
|
||||||
+123
@@ -0,0 +1,123 @@
|
|||||||
|
package com.budwk.app.zhgh.staffmanage.sourcechange.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
|
import com.budwk.app.sys.models.Sys_user;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.sourcechange.param.PendingConfirmUserPageForm;
|
||||||
|
import com.budwk.app.zhgh.staffmanage.sourcechange.service.PendingConfirmUserService;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 待确认人员记录业务实现。
|
||||||
|
*/
|
||||||
|
@IocBean(args = {"refer:dao"})
|
||||||
|
public class PendingConfirmUserServiceImpl extends BaseServiceImpl<Sys_user> implements PendingConfirmUserService {
|
||||||
|
|
||||||
|
private static final int STATUS_PENDING = 1;
|
||||||
|
private static final int STATUS_CONFIRMED = 2;
|
||||||
|
|
||||||
|
public PendingConfirmUserServiceImpl(Dao dao) {
|
||||||
|
super(dao);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从系统用户表查询确认状态为待确认或已确认的人员。
|
||||||
|
*
|
||||||
|
* @param pageForm 查询条件
|
||||||
|
* @return 人员分页数据
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Pagination pageData(PendingConfirmUserPageForm pageForm) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
userInfo.id,
|
||||||
|
userInfo.loginname,
|
||||||
|
userInfo.username,
|
||||||
|
userInfo.sex,
|
||||||
|
userInfo.userState,
|
||||||
|
userInfo.personType,
|
||||||
|
userInfo.unitId,
|
||||||
|
unitInfo.name AS unitName,
|
||||||
|
unionInfo.id unionId,
|
||||||
|
unionInfo.name AS unionName,
|
||||||
|
userInfo.pendingConfirmStatus
|
||||||
|
FROM sys_user userInfo
|
||||||
|
LEFT JOIN sys_unit unitInfo ON unitInfo.id = userInfo.unitId
|
||||||
|
LEFT JOIN sys_union unionInfo ON unionInfo.id = unitInfo.unionId
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
int status = Integer.valueOf(STATUS_CONFIRMED).equals(pageForm.getPendingConfirmStatus())
|
||||||
|
? STATUS_CONFIRMED : STATUS_PENDING;
|
||||||
|
cnd.and("userInfo.pendingConfirmStatus", "=", status);
|
||||||
|
|
||||||
|
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||||
|
SqlExpressionGroup keywordGroup = new SqlExpressionGroup();
|
||||||
|
keywordGroup.orLike("userInfo.loginname", pageForm.getSearchKeyword());
|
||||||
|
keywordGroup.orLike("userInfo.username", pageForm.getSearchKeyword());
|
||||||
|
cnd.and(keywordGroup);
|
||||||
|
}
|
||||||
|
cnd.andEX("userInfo.unionId", "=", pageForm.getUnionId());
|
||||||
|
cnd.andEX("userInfo.unitId", "=", pageForm.getUnitId());
|
||||||
|
cnd.andEX("userInfo.personType", "=", pageForm.getPersonType());
|
||||||
|
cnd.andEX("userInfo.userState", "=", pageForm.getUserState());
|
||||||
|
|
||||||
|
String orderColumn = resolveOrderColumn(pageForm.getPageOrderName());
|
||||||
|
if (StrUtil.isAllNotBlank(orderColumn, pageForm.getPageOrderBy())) {
|
||||||
|
cnd.orderBy(orderColumn, PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||||
|
} else {
|
||||||
|
cnd.asc("userInfo.loginname");
|
||||||
|
}
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 变更提交成功后仅把待确认人员更新为已确认,重复调用不会改变其他状态。
|
||||||
|
*
|
||||||
|
* @param userId 系统用户ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void markConfirmed(String userId) {
|
||||||
|
if (StrUtil.isBlank(userId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
UPDATE sys_user
|
||||||
|
SET pendingConfirmStatus = @confirmedStatus
|
||||||
|
WHERE id = @userId
|
||||||
|
AND pendingConfirmStatus = @pendingStatus
|
||||||
|
""");
|
||||||
|
sql.setParam("confirmedStatus", STATUS_CONFIRMED);
|
||||||
|
sql.setParam("pendingStatus", STATUS_PENDING);
|
||||||
|
sql.setParam("userId", userId);
|
||||||
|
dao().execute(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将前端排序字段转换为固定数据库字段,避免排序参数直接拼接到 SQL。
|
||||||
|
*
|
||||||
|
* @param pageOrderName 前端排序字段
|
||||||
|
* @return 允许排序的数据库字段,不支持时返回空字符串
|
||||||
|
*/
|
||||||
|
private String resolveOrderColumn(String pageOrderName) {
|
||||||
|
Map<String, String> orderColumns = Map.of(
|
||||||
|
"loginname", "userInfo.loginname",
|
||||||
|
"username", "userInfo.username",
|
||||||
|
"unionName", "unionInfo.name",
|
||||||
|
"unitName", "unitInfo.name",
|
||||||
|
"personType", "userInfo.personType",
|
||||||
|
"userState", "userInfo.userState"
|
||||||
|
);
|
||||||
|
return orderColumns.getOrDefault(StrUtil.nullToEmpty(pageOrderName), "");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
-- 系统用户增加人员待确认状态:0不用确认、1待确认、2已确认。
|
||||||
|
-- 脚本支持重复执行,字段已存在时不再修改表结构。
|
||||||
|
SET @pending_confirm_status_column_count = (
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM information_schema.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE()
|
||||||
|
AND TABLE_NAME = 'sys_user'
|
||||||
|
AND COLUMN_NAME = 'pendingConfirmStatus'
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @pending_confirm_status_ddl = IF(
|
||||||
|
@pending_confirm_status_column_count = 0,
|
||||||
|
'ALTER TABLE sys_user ADD COLUMN pendingConfirmStatus TINYINT NOT NULL DEFAULT 0 COMMENT ''待确认状态:0不用确认、1待确认、2已确认'' AFTER personType',
|
||||||
|
'SELECT 1'
|
||||||
|
);
|
||||||
|
|
||||||
|
PREPARE pending_confirm_status_stmt FROM @pending_confirm_status_ddl;
|
||||||
|
EXECUTE pending_confirm_status_stmt;
|
||||||
|
DEALLOCATE PREPARE pending_confirm_status_stmt;
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
-- 用户角色关系增加启用状态,并按当前开启的教代会届次初始化历史数据。
|
||||||
|
-- 脚本支持重复执行:字段已存在时不再重复修改表结构。
|
||||||
|
SET @sys_user_role_enable_column_count = (
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM information_schema.COLUMNS
|
||||||
|
WHERE TABLE_SCHEMA = DATABASE()
|
||||||
|
AND TABLE_NAME = 'sys_user_role'
|
||||||
|
AND COLUMN_NAME = 'enable'
|
||||||
|
);
|
||||||
|
|
||||||
|
SET @sys_user_role_enable_ddl = IF(
|
||||||
|
@sys_user_role_enable_column_count = 0,
|
||||||
|
'ALTER TABLE sys_user_role ADD COLUMN enable TINYINT(1) NOT NULL DEFAULT 1 COMMENT ''是否启用:1启用,0禁用'' AFTER userId',
|
||||||
|
'SELECT 1'
|
||||||
|
);
|
||||||
|
|
||||||
|
PREPARE sys_user_role_enable_stmt FROM @sys_user_role_enable_ddl;
|
||||||
|
EXECUTE sys_user_role_enable_stmt;
|
||||||
|
DEALLOCATE PREPARE sys_user_role_enable_stmt;
|
||||||
|
|
||||||
|
-- 普通角色不受教代会届次切换影响,历史数据统一保持启用。
|
||||||
|
UPDATE sys_user_role
|
||||||
|
SET enable = 1
|
||||||
|
WHERE tcSessionId IS NULL OR tcSessionId = '';
|
||||||
|
|
||||||
|
-- 历史教代会届次角色先全部禁用,再只启用当前开启的最新届次。
|
||||||
|
UPDATE sys_user_role
|
||||||
|
SET enable = 0
|
||||||
|
WHERE tcSessionId IS NOT NULL AND tcSessionId <> '';
|
||||||
|
|
||||||
|
SET @current_teacher_congress_session_id = (
|
||||||
|
SELECT id
|
||||||
|
FROM teacher_congress_session
|
||||||
|
WHERE enable = 1
|
||||||
|
ORDER BY startDate DESC, createdAt DESC, id DESC
|
||||||
|
LIMIT 1
|
||||||
|
);
|
||||||
|
|
||||||
|
UPDATE sys_user_role
|
||||||
|
SET enable = 1
|
||||||
|
WHERE tcSessionId = @current_teacher_congress_session_id;
|
||||||
Reference in New Issue
Block a user