手机端签字不自动回显

This commit is contained in:
2026-06-10 16:49:10 +08:00
parent 7672709749
commit 8315cda9a7
3 changed files with 56 additions and 9 deletions
@@ -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<String> 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);
}
@@ -309,7 +309,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> 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())) {
@@ -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();