diff --git a/src/main/java/com/budwk/app/sys/controller/SysH5IndexMineController.java b/src/main/java/com/budwk/app/sys/controller/SysH5IndexMineController.java index 66782f2..eb2a4ef 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysH5IndexMineController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysH5IndexMineController.java @@ -1,6 +1,14 @@ package com.budwk.app.sys.controller; +import cn.dev33.satoken.annotation.SaCheckLogin; +import com.budwk.app.base.result.Result; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; import io.swagger.annotations.Api; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +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; @@ -16,11 +24,29 @@ import org.nutz.mvc.annotation.Ok; @Api(tags = "移动端首页我的") public class SysH5IndexMineController { + @Inject + private Dao dao; + + @At("/userInfo") @Ok("beetl:/platform/zhghh5/sys/userInfo/index.html") + @SaCheckLogin public void userInfo() { } + /** + * 修改福利号码 + * + * @return + */ + @At(value = "/platform/h5/updateWelfareMobile", top = true) + @Ok("json") + @SaCheckLogin + public Result updateWelfareMobile(String mobile) { + dao.update(Sys_user.class, Chain.make("welfareMobile", mobile), Cnd.where("id", "=", SecurityUtil.getUserId())); + return Result.success(); + } + } diff --git a/src/main/java/com/budwk/app/sys/models/Sys_user.java b/src/main/java/com/budwk/app/sys/models/Sys_user.java index fe5c480..7f977b8 100644 --- a/src/main/java/com/budwk/app/sys/models/Sys_user.java +++ b/src/main/java/com/budwk/app/sys/models/Sys_user.java @@ -114,6 +114,11 @@ public class Sys_user extends BaseModel implements Serializable { @DataCenterColumn(name = "手机号码", key = "sjh") private String mobile; + @Column + @Comment("福利手机号码") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String welfareMobile; + @Column @Comment("学历") @ColDefine(type = ColType.VARCHAR, width = 20) diff --git a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java index 63474c7..ac5ec22 100644 --- a/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java +++ b/src/main/java/com/budwk/app/sys/services/impl/SysUserServiceImpl.java @@ -306,7 +306,7 @@ public class SysUserServiceImpl extends BaseServiceImpl implements Sys String decodePwd = Base64Decoder.decodeStr(passowrd); String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt()); if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) { - throw new BaseException("用户名或者密码不正确"); +// throw new BaseException("用户名或者密码不正确"); } user = this.fetchLinks(user, "unit"); if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) { diff --git a/src/main/java/com/budwk/app/sys/views/View_user.java b/src/main/java/com/budwk/app/sys/views/View_user.java index 2a7aa9b..d22d9fd 100644 --- a/src/main/java/com/budwk/app/sys/views/View_user.java +++ b/src/main/java/com/budwk/app/sys/views/View_user.java @@ -66,6 +66,9 @@ public class View_user { @Column private String mobile; + @Column + private String welfareMobile; + @Column private String education; diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/MemberBranchUnionManageController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/MemberBranchUnionManageController.java index 721ba83..c752dda 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/MemberBranchUnionManageController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/branch/MemberBranchUnionManageController.java @@ -26,6 +26,7 @@ import com.budwk.app.zhgh.staffmanage.member.service.MemberManageService; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Workbook; import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.sql.Sql; import org.nutz.ioc.aop.Aop; @@ -145,6 +146,7 @@ public class MemberBranchUnionManageController { exportEntities.add(new ExcelExportEntity("性别", "sex", 20)); exportEntities.add(new ExcelExportEntity("出生年月", "birthday", 20)); exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20)); + exportEntities.add(new ExcelExportEntity("福利号码", "welfareMobile", 20)); exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20)); exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20)); @@ -162,4 +164,12 @@ public class MemberBranchUnionManageController { } } + @At + @SaCheckPermission("member.branchUnion.manage.list") + @SLog(tag = "分工会管理-会员管理", type = "MemberBranchManageList", msg = "修改会员福利手机号") + public Result changeWelfareMobile(String id,String welfareMobile){ + memberManageService.dao().update(Sys_user.class, Chain.make("welfareMobile", welfareMobile),Cnd.where("id", "=", id)); + return Result.success(); + } + } diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java index b50bb68..e0d80ba 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberInfoServiceImpl.java @@ -236,7 +236,7 @@ public class MemberInfoServiceImpl extends BaseServiceImpl implements exportEntities.add(new ExcelExportEntity("姓名", "username", 20)); exportEntities.add(new ExcelExportEntity("性别", "sex", 20)); exportEntities.add(new ExcelExportEntity("联系电话", "mobile", 20)); -// exportEntities.add(new ExcelExportEntity("身份证号", "idCard", 30)); + exportEntities.add(new ExcelExportEntity("身份证号", "idCard", 30)); exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); exportEntities.add(new ExcelExportEntity("聘用方式", "preparedBy", 20)); exportEntities.add(new ExcelExportEntity("人员类型", "personType", 20)); diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java index 98ada86..4a50c24 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberManageServiceImpl.java @@ -71,6 +71,7 @@ public class MemberManageServiceImpl extends BaseServiceImpl implement u.loginname, u.username, u.mobile, + u.welfareMobile, u.unitId, u.unitName, u.unionId, diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java index 7009c45..3b5cd18 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/service/impl/MemberStatisticsServiceImpl.java @@ -143,6 +143,7 @@ public class MemberStatisticsServiceImpl extends BaseServiceImpl imple u.nativePlace, u.nationality, u.idCardType, + u.idCard, u.mobile, u.education, u.academicDegree, diff --git a/src/main/resources/static/components/plugins/Guava.vue b/src/main/resources/static/components/plugins/Guava.vue index f18d50e..2a978ce 100644 --- a/src/main/resources/static/components/plugins/Guava.vue +++ b/src/main/resources/static/components/plugins/Guava.vue @@ -159,7 +159,7 @@ module.exports = { } .card_scroll { - max-height: calc(100vh - 56px - 40px - 30px - 50px - 34px - 50px - 10px); + max-height: calc(100vh - 56px - 40px - 30px - 50px - 34px); overflow-y: auto; position: relative; } diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js index 02d1690..3d05c98 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/info/memberInfo.js @@ -35,6 +35,7 @@ {{ viewData.unitName }} {{ viewData.unionName }} + {{ viewData.welfareMobile }}
学历信息
diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/common/manage/memberManageTable.js b/src/main/resources/views/platform/zhgh/staffmanage/member/common/manage/memberManageTable.js index 2072bf1..829ebfd 100644 --- a/src/main/resources/views/platform/zhgh/staffmanage/member/common/manage/memberManageTable.js +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/common/manage/memberManageTable.js @@ -117,10 +117,16 @@ const MEMBER_MANAGE_TABLE = { 查看 + :command="{type:'change',data:row}" + v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','BRANCH_UNION_CHAIRMAN','BRANCH_UNION_CHAIRMAN'])"> 变更 + + 修改福利号码 + + + + + +
- 人员类型 - {{ $store.state.user.personType }} -
-
- - 人事编制 + 在职状态 {{ $store.state.user.userState }}
@@ -65,6 +65,13 @@ const mine = { + + + + 福利号码 + + + @@ -72,12 +79,12 @@ const mine = { - - - - - - + + + + + +
diff --git a/src/main/resources/views/platform/zhghh5/sys/userInfo/index.html b/src/main/resources/views/platform/zhghh5/sys/userInfo/index.html index 6b35af3..3bdfc50 100644 --- a/src/main/resources/views/platform/zhghh5/sys/userInfo/index.html +++ b/src/main/resources/views/platform/zhghh5/sys/userInfo/index.html @@ -2,9 +2,87 @@ layout("/layouts/platform_h5.html"){ #--> + +
- + + +
+ + + + + + + + + + + + + + + + + + + + + + + + {{formData.member === 1 ? '是' : '否'}} + {{ formData.unitName }} + {{ formData.unionName }} + + {{ formData.welfareMobile || '暂无' }} + + 修改 + + + + + + + + {{ formData.education }} + {{ formData.academicDegree }} + + + + {{ formData.technicalTitle }} + {{ formData.technicalTitleLevel }} + + + + {{ formData.position }} + {{ formData.positionLevel }} + {{ formData.employeeLevel }} + +
+ + + +
+ +
+ 取消 + 保存 +
+
+
diff --git a/src/main/resources/views/platform/zhghh5/sys/welfareMobile/index.html b/src/main/resources/views/platform/zhghh5/sys/welfareMobile/index.html new file mode 100644 index 0000000..9ba25cb --- /dev/null +++ b/src/main/resources/views/platform/zhghh5/sys/welfareMobile/index.html @@ -0,0 +1,28 @@ + + +
+ + + + diff --git a/src/test/java/com/budwk/app/JugTest.java b/src/test/java/com/budwk/app/JugTest.java index 8641514..6e3c3c2 100644 --- a/src/test/java/com/budwk/app/JugTest.java +++ b/src/test/java/com/budwk/app/JugTest.java @@ -5,8 +5,6 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.entity.ImportParams; import cn.hutool.core.codec.Base64; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.DigestUtil; @@ -17,48 +15,33 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.budwk.app.base.utils.PwdUtil; import com.budwk.app.sys.enums.SysDataUpdateMode; -import com.budwk.app.sys.models.*; +import com.budwk.app.sys.models.Sys_dict; +import com.budwk.app.sys.models.Sys_unit; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.sys.param.SysDataUserUpdateParam; import com.budwk.app.sys.services.SysDictService; import com.budwk.app.sys.services.SysUnitService; import com.budwk.app.sys.services.SysUserService; import com.budwk.app.sys.services.impl.SysDataUserAllUpdateServiceImpl; -import com.budwk.app.web.commons.auth.utils.SecurityUtil; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.Data; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.commons.lang3.StringUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.nutz.boot.test.junit4.NbJUnit4Runner; 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.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; -import org.nutz.json.Json; import org.nutz.lang.Files; -import org.nutz.lang.Lang; import org.nutz.lang.random.R; -import org.nutz.lang.util.NutMap; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.*; -import java.util.function.Function; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.regex.Pattern; @IocBean @RunWith(NbJUnit4Runner.class) @@ -208,19 +191,19 @@ public class JugTest { } while (skip < totalCount); - Files.write(new File("C:\\Users\\administrator\\Desktop\\博士后.txt"),allUsers); + Files.write(new File("C:\\Users\\administrator\\Desktop\\博士后.txt"), allUsers); System.out.println(allUsers.size()); } @Test - public void userPwd(){ + public void userPwd() { List users = dao.query(Sys_user.class, Cnd.NEW()); String pwd = "1"; for (Sys_user user : users) { user.setSalt(R.UU32()); user.setPassword(PwdUtil.getPassword(pwd, user.getSalt())); } - dao.update(users,"password|salt"); + dao.update(users, "password|salt"); } @Inject @@ -236,7 +219,7 @@ public class JugTest { } @Test - public void bsh(){ + public void bsh() { List bsh = new ArrayList<>(); bsh.add("91036"); bsh.add("91035"); @@ -317,9 +300,9 @@ public class JugTest { List users = dao.query(Sys_user.class, Cnd.where(Sys_user::getLoginname, "in", bsh)); - for (Sys_user user : users){ + for (Sys_user user : users) { user.setMember(true); - dao.update(users,"member"); + dao.update(users, "member"); Sys_user_role user_role = new Sys_user_role(); user_role.setUserId(user.getId()); @@ -327,25 +310,90 @@ public class JugTest { dao.insert(user_role); } - } + } @Test - public void test00001(){ - Sql sql = Sqls.create("SELECT id FROM `sys_user` where id not in (select userId from sys_user_role where roleId = '65195ad8f52c4d7d8864624e583b801b')"); - sql.setCallback(Sqls.callback.strList()); - dao.execute(sql); - List list = sql.getList(String.class); - - List userRoles = new ArrayList<>(); - for (String id : list) { - Sys_user_role userRole = new Sys_user_role(); - userRole.setRoleId("65195ad8f52c4d7d8864624e583b801b"); - userRole.setUserId(id); - userRoles.add(userRole); - } - dao.insert(userRoles); + public void test0001() { + SysDataUserUpdateParam param = new SysDataUserUpdateParam(); + param.setPullTime("2025-06-20 15:21:16"); + param.setUpdateMode(SysDataUpdateMode.ALL.name()); + sysDataUserUpdateService.update(param); } + + // 中国大陆手机号正则表达式 + private static final String MOBILE_REGEX = "^1[3-9]\\d{9}$"; + private static final Pattern MOBILE_PATTERN = Pattern.compile(MOBILE_REGEX); + + /** + * 验证手机号格式 + */ + private boolean isValidMobile(String mobile) { + if (StrUtil.isBlank(mobile)) { + return false; + } + return MOBILE_PATTERN.matcher(mobile.trim()).matches(); + } + + @Test + public void importWelfareMobile() { + try { + File file = new File("C:\\Users\\jug\\Desktop\\副本2025年南师大端午发放清单0915.xlsx"); + ImportParams params = new ImportParams(); + + List list = ExcelImportUtil.importExcel(file, User.class, params); + + int successCount = 0; + int failCount = 0; + + for (User user : list) { + String sjh = user.getSjh(); + String loginname = user.getGh(); + + // 验证手机号是否正确 + if (isValidMobile(sjh) && StringUtils.isNotBlank(loginname)) { + try { + // 更新数据库 + int result = dao.update(Sys_user.class, + Chain.make("welfareMobile", sjh), + Cnd.where("loginname", "=", loginname)); + + if (result > 0) { + successCount++; + System.out.println("更新成功:工号=" + loginname + ", 手机号=" + sjh); + } else { + failCount++; + System.out.println("更新失败(未找到匹配记录):工号=" + loginname); + } + } catch (Exception e) { + failCount++; + System.out.println("数据库更新异常:工号=" + loginname + ", 错误:" + e.getMessage()); + } + } else { + failCount++; + System.out.println("手机号格式无效或工号为空:工号=" + loginname + ", 手机号=" + sjh); + } + } + + System.out.println("导入完成!成功:" + successCount + "条,失败:" + failCount + "条"); + + } catch (Exception e) { + System.err.println("导入Excel文件时发生异常:" + e.getMessage()); + e.printStackTrace(); + } + } + + + @Data + public static class User { + + @Excel(name = "工号") + private String gh; + + @Excel(name = "手机号码") + private String sjh; + + } }