From 658a7cfc6be72ad82d62b41dacd1dbfbc3f49628 Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Wed, 13 May 2026 12:10:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=98=B2=E6=AD=A2=E6=B0=B4=E5=B9=B3=E8=B6=8A?= =?UTF-8?q?=E6=9D=83=EF=BC=8C=E8=AF=97=E7=94=BB=E7=9F=AD=E4=BF=A1=E8=BF=87?= =?UTF-8?q?=E6=9C=9F3=E6=9C=88=E6=94=B9=E4=B8=BA6=E6=9C=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ThirdPartyOAth2Cotroller.java | 4 ++-- .../admin/controller/SysUserController.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java index 6dec3e9fb..90ee95020 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ThirdPartyOAth2Cotroller.java @@ -320,12 +320,12 @@ public class ThirdPartyOAth2Cotroller { String generate = DeviceFingerprintUtil.generate(httpServletRequest); R userTrustedDeviceR = remoteUserTrustedDeviceService.getUserTrustedDeviceByIdAndMD5(dto.getMobilePhone(), generate, SH_DEVICE_NAME); if (userTrustedDeviceR.getData() != null) { - userTrustedDeviceR.getData().setExpireTime(LocalDateTime.now().plusMonths(3)); + userTrustedDeviceR.getData().setExpireTime(LocalDateTime.now().plusMonths(6)); remoteUserTrustedDeviceService.updateById(userTrustedDeviceR.getData()); } else { UserTrustedDeviceEntity userTrustedDevice = new UserTrustedDeviceEntity(); userTrustedDevice.setMobilePhone(dto.getMobilePhone()); - userTrustedDevice.setExpireTime(LocalDateTime.now().plusMonths(3)); + userTrustedDevice.setExpireTime(LocalDateTime.now().plusMonths(6)); userTrustedDevice.setDeviceName(SH_DEVICE_NAME); userTrustedDevice.setDeviceFingerprint(generate); remoteUserTrustedDeviceService.save(userTrustedDevice); diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index 91034a5af..e2c06ec39 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -47,6 +47,7 @@ import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.HasPermission; import com.bsd.pjcloud.common.security.annotation.Inner; +import com.bsd.pjcloud.common.security.component.PermissionService; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; @@ -65,12 +66,14 @@ import lombok.AllArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.server.ResponseStatusException; import java.util.ArrayList; import java.util.List; @@ -99,6 +102,8 @@ public class SysUserController { private final SysUserRoleService sysUserRoleService; + private final PermissionService permissionService; + /* ************************************* start 回调 start ************************************* */ @Inner(value = false) @@ -194,6 +199,7 @@ public class SysUserController { @GetMapping("/get-by-user-id") public R getByUserId(@RequestParam Long userId) { + assertUserDetailAllowed(userId); SysUser user = userService.getOne(Wrappers.query().lambda().eq(SysUser::getUserId, userId)); if (user == null) return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_USERINFO_EMPTY, userId)); return R.ok(userService.findUserInfo(user)); @@ -226,6 +232,7 @@ public class SysUserController { */ @GetMapping("/details/{id}") public R user(@PathVariable Long id) { + assertUserDetailAllowed(id); return R.ok(userService.selectUserVoById(id)); } @@ -571,4 +578,21 @@ public class SysUserController { }).collect(Collectors.toList()); return R.ok(userVOList); } + + /** + * 用户详情:仅本人或具备用户管理类权限的管理员可查看指定 userId + */ + private void assertUserDetailAllowed(Long targetUserId) { + PjcloudUser current = SecurityUtils.getUser(); + if (current == null || current.getId() == null) { + throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR)); + } + if (targetUserId != null && targetUserId.equals(current.getId())) { + return; + } + if (permissionService.hasPermission("sys_user_add", "sys_user_edit", "sys_user_del", "sys_user_export")) { + return; + } + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "无权限查看该用户信息"); + } } From 416107e7f89252315d0c5def7d69fce93574129c Mon Sep 17 00:00:00 2001 From: zjf <1799650030@qq.com> Date: Thu, 14 May 2026 20:49:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B5=99=E6=94=BF=E9=92=89=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/app/api/constant/menu/AppMenuPlatformEnum.java | 1 + .../integrated/controller/AppMenuOpenController.java | 6 +++++- .../src/main/resources/application.yml | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pjcloud-app-server/pjcloud-app-server-api/src/main/java/com/bsd/pjcloud/app/api/constant/menu/AppMenuPlatformEnum.java b/pjcloud-app-server/pjcloud-app-server-api/src/main/java/com/bsd/pjcloud/app/api/constant/menu/AppMenuPlatformEnum.java index 283d80b46..23e6e50d5 100644 --- a/pjcloud-app-server/pjcloud-app-server-api/src/main/java/com/bsd/pjcloud/app/api/constant/menu/AppMenuPlatformEnum.java +++ b/pjcloud-app-server/pjcloud-app-server-api/src/main/java/com/bsd/pjcloud/app/api/constant/menu/AppMenuPlatformEnum.java @@ -14,6 +14,7 @@ import java.util.Arrays; public enum AppMenuPlatformEnum { WECHAT("10", "微信小程序"), + ZZD("30", "浙政钉"), ; private final String type; diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppMenuOpenController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppMenuOpenController.java index 68bcd0586..68afcbb78 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppMenuOpenController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppMenuOpenController.java @@ -57,7 +57,11 @@ public class AppMenuOpenController { if (!isValidAppCredentials(appId, appSecret)) { return R.failed("无效的应用ID或密钥"); } - return remoteAppMenuService.innerAppList(typeEnum, platformEnum); + //todo 由于浙政钉还要irs发布太麻烦,先写死吧,下次更新在由前端控制 + R> listR = remoteAppMenuService.innerAppList(typeEnum, AppMenuPlatformEnum.ZZD); +// List list = listR.getData().stream().filter(appMenu -> appMenu.getZzdVisible() != null).toList(); +// listR.setData(list); + return listR; } private boolean isValidAppCredentials(String appId, String appSecret) { diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml index 4eb06a1d0..e063f162a 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml @@ -47,8 +47,8 @@ zzd: domain: openplatform-pro.ding.zj.gov.cn # domain: openplatform.dg-work.cn tenant-id: "196729" - app-key: ${ZZD_OPEN_APP_KEY:pjx_zhhqyth-wt2VrVa0olcqEBBJJb} - app-secret: ${ZZD_OPEN_APP_SECRET:rT5zbpHO0L7raRHJtvlIs26N8hn53JDv1K1SNa7X} + app-key: ${ZZD_OPEN_APP_KEY:pjx_zhhqyht-b6HV85D3Fc7EfiUBNr} + app-secret: ${ZZD_OPEN_APP_SECRET:3GWA7Hk73xI3gQ8zxLZhZo2M92a07dTI1tVqTU7S} # H5 使用 dd.authConfig 时仅需 ak/sk;jsapi-agent-id 为旧版 dd.config 方案保留,可不配 # jsapi-agent-id: