diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberDataManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberDataManageController.java index 13b622ca..6bf53f7d 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberDataManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/info/MemberDataManageController.java @@ -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 listMap = memberInfoService.listMap(sql); + List list = listMap.stream().map(o -> o.getString("id")).toList(); + + List 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 listMap = memberInfoService.listMap(sql); + List 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; + } } diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/info/datamanage/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/info/datamanage/index.html index 20a77d59..3c8e7165 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/info/datamanage/index.html +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/info/datamanage/index.html @@ -1,19 +1,167 @@ + + +
- + + + + + + + + + + +
+
人员类型
+
+ + {{ item.name }} + + 清空 + + 全部 + +
+
+
+
在职状态
+
+ + {{ item.name }} + + 清空 + + 全部 + +
+
+ +
+ - + + 根据身份证设置生日 + +
+
+
+

+ + 如果先清空已有数据,后更新,请选择 + 更新 + (这将清空目前所有的会员,请谨慎操作!) +

+

+ + 如果追加或更新数据,请选择 + 追加 +

+
+
+ + {{ item.text }} +
+
- +
+ +