This commit is contained in:
@jyuhsin
2025-09-24 20:00:07 +08:00
parent 45888897b4
commit 5730478c79
2 changed files with 389 additions and 61 deletions
@@ -2,20 +2,38 @@ package com.budwk.app.zhgh.staffmanage.member.controller.info;
import cn.dev33.satoken.annotation.SaCheckPermission;
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;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.utils.PageUtil;
import com.budwk.app.sys.models.Sys_role;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.models.Sys_user_role;
import com.budwk.app.sys.services.SysRoleService;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingInfo;
import com.budwk.app.zhgh.dayofficework.meeting.model.MeetingTimePeriodUser;
import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberInfoPageForm;
import com.budwk.app.zhgh.staffmanage.member.service.MemberInfoService;
import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Chain;
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.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import java.util.List;
/**
* @version 1.0
@@ -29,62 +47,134 @@ import org.nutz.mvc.annotation.Ok;
@At("/platform/member/info/dataManage")
public class MemberDataManageController {
@At("")
@SaCheckPermission("member.info.dataManage")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/datamanage/index.html")
public void index() {}
@Inject
private MemberInfoService memberInfoService;
@Inject
private Dao dao;
@Inject
private SysRoleService roleService;
@At("")
@SaCheckPermission("member.info.dataManage")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/datamanage/index.html")
public void index() {
}
@At
@ApiOperation("数据管理工具")
@SaCheckPermission("member.info.dataManage")
public Result pageData(MemberInfoPageForm pageForm) {
Sql sql = Sqls.create("""
SELECT
id,
loginname,
username,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`user`
$condition
""");
Cnd cnd = Cnd.NEW();
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.orLike("username", pageForm.getSearchKeyword());
seg.orLike("loginname", pageForm.getSearchKeyword());
cnd.and(seg);
}
@At
@ApiOperation("数据管理工具")
@SaCheckPermission("member.info.dataManage")
public Result pageData(MemberInfoPageForm pageForm) {
Sql sql = generateSql(pageForm, Cnd.NEW());
Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
// 权限判断
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
seg.or("unionId", "=", SecurityUtil.getUnionId());
seg.or("unionId", "is", null);
seg.or("unionId", "=", "");
cnd.and(seg);
} else {
cnd.andEX("unionId", "=", pageForm.getUnionId());
cnd.andEX("unitId", "=", pageForm.getUnitId());
}
@At
@ApiOperation("根据身份证号设置出生日期")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "根据身份证号设置出生日期")
public Object setBirthdayByIdCard() {
Sql sql = Sqls.create("""
UPDATE sys_user
SET birthday = STR_TO_DATE(SUBSTRING(idcard, 7, 8), '%Y%m%d')
WHERE (birthday IS NULL OR birthday = '') AND length(idcard)=18
""");
memberInfoService.execute(sql);
return Result.success();
}
cnd.andEX("userState", "in", pageForm.getUserStates());
cnd.andEX("preparedBy", "in", pageForm.getPreparedBys());
cnd.andEX("personType", "in", pageForm.getPersonTypes());
@At
@ApiOperation("批量设置会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置会员")
public Object setMemberByCnd(MemberInfoPageForm pageForm, boolean append) {
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
} else {
cnd.asc("unitcode").asc("loginname");
}
sql.setCondition(cnd);
return Result.success();
}
Sys_role sysRole = roleService.getByCode(RoleConstant.MEMBER.name());
// 如果是先清空再追加
if(!append) {
dao.update(Sys_user.class, Chain.make("member", false), Cnd.NEW());
dao.clear(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", sysRole.getId()));
}
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("member", "=", false).or("member", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
List<Sys_user_role> userRoles = list.stream().map(o -> {
Sys_user_role userRole = new Sys_user_role();
userRole.setRoleId(sysRole.getId());
userRole.setUserId(o);
return userRole;
}).toList();
dao.update(Sys_user.class, Chain.make("member", true), Cnd.where("id", "in", list));
dao.insert(userRoles);
return Result.success();
}
@At
@ApiOperation("批量设置福利会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置福利会员")
public Object setWelfareMemberByCnd(MemberInfoPageForm pageForm, boolean append) {
// 如果是先清空再追加
if(!append) {
dao.update(Sys_user.class, Chain.make("welfareMember", false), Cnd.NEW());
}
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("welfareMember", "=", false).or("welfareMember", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", list));
return Result.success();
}
private Sql generateSql(MemberInfoPageForm pageForm, Cnd cnd) {
Sql sql = Sqls.create("""
SELECT
id,
loginname as loginName,
username as userName,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`vw_user`
$condition
""");
pageForm.buildSearch(cnd, "");
if (StrUtil.isNotBlank(pageForm.getStartLoginNames())) {
String[] loginNames = pageForm.getStartLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeL("loginname", loginName);
}
cnd.and(seg);
}
if (StrUtil.isNotBlank(pageForm.getEndLoginNames())) {
String[] loginNames = pageForm.getEndLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeR("loginname", loginName);
}
cnd.and(seg);
}
sql.setCondition(cnd);
return sql;
}
}