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