From 8315cda9a7f42f39e9e2c9c5a6546af9c9aab1f7 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Wed, 10 Jun 2026 16:49:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E7=AB=AF=E7=AD=BE=E5=AD=97?= =?UTF-8?q?=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=9B=9E=E6=98=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysSignatureController.java | 53 ++++++++++++++++--- .../sys/services/impl/SysUserServiceImpl.java | 4 +- .../h5controller/H5QsvSurveyController.java | 8 +++ 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java b/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java index 8af4bfb..5517558 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysSignatureController.java @@ -2,6 +2,7 @@ package com.budwk.app.sys.controller; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RedisConstant; import com.budwk.app.base.result.Result; @@ -79,13 +80,20 @@ public class SysSignatureController { @ApiOperation("手机扫描电脑端二维码签字-保存签字信息") @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) public Result saveSignature(@Valid String id, @Param("file") TempFile tempFile) { + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + log.info("扫码临时签字开始,userId={}, loginname={}, signId={}, writeTarget=redis", userId, loginname, id); if (ObjectUtil.isEmpty(tempFile)) { + log.warn("扫码临时签字失败,上传文件为空,userId={}, loginname={}, signId={}", userId, loginname, id); return Result.error("保存错误,请联系管理员"); } String url = sysFileService.uploadReturnUrl(SysFileEngineTypeEnum.MINIO.getValue(), tempFile); - redisService.setex(RedisConstant.SIGNATURE_PREFIX + SecurityUtil.getUserId() + ":" + id, 60 * 10, url); + String redisKey = RedisConstant.SIGNATURE_PREFIX + userId + ":" + id; + redisService.setex(redisKey, 60 * 10, url); + log.info("扫码临时签字上传完成,userId={}, loginname={}, signId={}, redisKey={}, url={}, writeSysUserSignature=false", + userId, loginname, id, redisKey, url); - ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + SecurityUtil.getUserLoginname() + ":*"); + ScanParams match = new ScanParams().match(RedisConstant.REDIS_KEY_WSROOM + loginname + ":*"); ScanResult scan = null; do { scan = redisService.scan(scan == null ? ScanParams.SCAN_POINTER_START : scan.getStringCursor(), match); @@ -102,7 +110,12 @@ public class SysSignatureController { @SaCheckLogin @ApiOperation("手机扫描电脑端二维码签字-电脑端获取签字信息") public Result getSignature(@Valid String id) { - String signature = redisService.get(RedisConstant.SIGNATURE_PREFIX + SecurityUtil.getUserId() + ":" + id); + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + String redisKey = RedisConstant.SIGNATURE_PREFIX + userId + ":" + id; + String signature = redisService.get(redisKey); + log.info("扫码临时签字读取,userId={}, loginname={}, signId={}, redisKey={}, hasSignature={}", + userId, loginname, id, redisKey, StrUtil.isNotBlank(signature)); return Result.success().addData(signature); } @@ -110,7 +123,12 @@ public class SysSignatureController { @SaCheckLogin @ApiOperation("手机扫描电脑端二维码签字-电脑端清除签字信息") public Result clearSignature(@Valid String id) { - redisService.del(RedisConstant.SIGNATURE_PREFIX + SecurityUtil.getUserId() + ":" + id); + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + String redisKey = RedisConstant.SIGNATURE_PREFIX + userId + ":" + id; + redisService.del(redisKey); + log.info("扫码临时签字清理,userId={}, loginname={}, signId={}, redisKey={}, clearTarget=redis", + userId, loginname, id, redisKey); return Result.success(); } @@ -119,7 +137,12 @@ public class SysSignatureController { @ApiOperation("手机端签字-保存签字信息(直接返回url)") @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) public Result saveH5Signature(@Param("file") TempFile tempFile) { + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + log.info("H5业务签字上传开始,userId={}, loginname={}, writeSysUserSignature=false", userId, loginname); String url = sysFileService.uploadReturnUrl(SysFileEngineTypeEnum.MINIO.getValue(), tempFile); + log.info("H5业务签字上传完成,userId={}, loginname={}, url={}, writeSysUserSignature=false", + userId, loginname, url); return Result.success().addData(url); } @@ -130,16 +153,22 @@ public class SysSignatureController { @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) @Aop(TransAop.READ_COMMITTED) public Result update(@Param("file") TempFile tempFile) { + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + log.info("个人签名更新开始,userId={}, loginname={}, writeTarget=sys_user_signature", userId, loginname); String url = sysFileService.uploadReturnUrl(SysFileEngineTypeEnum.MINIO.getValue(), tempFile); - Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class, Cnd.where(Sys_user_signature::getUserId, "=", SecurityUtil.getUserId())); + Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class, Cnd.where(Sys_user_signature::getUserId, "=", userId)); + boolean exists = ObjectUtil.isNotNull(sysUserSignature); if (ObjectUtil.isNull(sysUserSignature)) { sysUserSignature = new Sys_user_signature(); } sysUserSignature.setSignature(url); - sysUserSignature.setUserId(SecurityUtil.getUserId()); + sysUserSignature.setUserId(userId); dao.insertOrUpdate(sysUserSignature); + log.info("个人签名更新完成,userId={}, loginname={}, existsBefore={}, signatureId={}, url={}", + userId, loginname, exists, sysUserSignature.getId(), url); - wkWebSocketUtil.fire(SecurityUtil.getUserLoginname(),Json.toJson(NutMap.NEW().addv("action","pc-scan-code-manage-signature").addv("url",url))); + wkWebSocketUtil.fire(loginname,Json.toJson(NutMap.NEW().addv("action","pc-scan-code-manage-signature").addv("url",url))); return Result.success(); } @@ -148,7 +177,15 @@ public class SysSignatureController { @SaCheckLogin @ApiOperation("电脑端我的电子签名获取用户签字") public Result get() { - Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class, Cnd.where(Sys_user_signature::getUserId, "=", SecurityUtil.getUserId())); + String userId = SecurityUtil.getUserId(); + String loginname = SecurityUtil.getUserLoginname(); + Sys_user_signature sysUserSignature = dao.fetch(Sys_user_signature.class, Cnd.where(Sys_user_signature::getUserId, "=", userId)); + log.info("个人签名查询,userId={}, loginname={}, found={}, signatureId={}, hasSignature={}", + userId, + loginname, + ObjectUtil.isNotNull(sysUserSignature), + ObjectUtil.isNotNull(sysUserSignature) ? sysUserSignature.getId() : null, + ObjectUtil.isNotNull(sysUserSignature) && StrUtil.isNotBlank(sysUserSignature.getSignature())); return Result.success(sysUserSignature); } 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 92d9f89..28ec5dc 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 @@ -309,7 +309,9 @@ 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("用户名或者密码不正确"); + if (Globals.sso){ + 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/zhgh/dayofficework/qsv/h5controller/H5QsvSurveyController.java b/src/main/java/com/budwk/app/zhgh/dayofficework/qsv/h5controller/H5QsvSurveyController.java index 664aed4..339a514 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/qsv/h5controller/H5QsvSurveyController.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/qsv/h5controller/H5QsvSurveyController.java @@ -1,5 +1,6 @@ package com.budwk.app.zhgh.dayofficework.qsv.h5controller; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONObject; import com.budwk.app.base.result.Result; @@ -12,6 +13,8 @@ import com.budwk.app.zhgh.dayofficework.qsv.param.QsvAnswerParam; import com.budwk.app.zhgh.dayofficework.qsv.service.QsvUserAnswerRecordService; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; +import org.nutz.aop.interceptor.ioc.TransAop; +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; @@ -36,10 +39,12 @@ public class H5QsvSurveyController { @At("") @Ok("beetl:/platform/zhghh5/dayofficework/qsv/survey/index.html") + @SaCheckLogin public void index() { } @At + @SaCheckLogin public Result subjects(String activityId) { QsvActivity activity = dao.fetch(QsvActivity.class, activityId); @@ -78,12 +83,15 @@ public class H5QsvSurveyController { } @At + @SaCheckLogin public Result answerRecord(@Valid String answerRecordId) { QsvUserAnswerRecord record = dao.fetch(QsvUserAnswerRecord.class, answerRecordId); return Result.success(record); } @At + @SaCheckLogin + @Aop(TransAop.READ_COMMITTED) public Result submitAnswer(@Valid @Param("answer") QsvAnswerParam qsvAnswerParam) { QsvUserAnswerRecord answerRecord = dao.fetch(QsvUserAnswerRecord.class, qsvAnswerParam.getAnswerRecordId()); JSONObject extJson = answerRecord.getExtJson();