Explorar o código

fix: 小程序签署协议多企业情况问题

lixuesong hai 1 ano
pai
achega
d5d6fc34e7

+ 30 - 33
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/ApiController.java

@@ -974,18 +974,11 @@ public class ApiController {
 			}
 
 			// 签署协议信息
-			mapOne.put("signHonestAgreement", false);
-			if (StrUtil.isNotBlank(sysU.getSignAgreement())) {
-				JSONArray agreements = JSONUtil.parseArray(sysU.getSignAgreement());
-				for (Object agreement : agreements) {
-					SignAgreementDTO signAgreementDTO = BeanUtil.toBean(agreement, SignAgreementDTO.class);
-					if (SignAgreementDTO.SignAgreementType.HONEST_AGREEMENT.equals(signAgreementDTO.getAgreementType())) {
-						// 廉洁协议是否签署
-						mapOne.put("signHonestAgreement", true);
-						break;
-					}
-				}
-			}
+			int honestAgreementCount = sysUserService.count(Wrappers.<SysUser>lambdaQuery()
+					.eq(SysUser::getUsername, sysU.getUsername())
+					.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val())
+					.like(SysUser::getSignAgreement, "HONEST_AGREEMENT"));
+			mapOne.put("signHonestAgreement", honestAgreementCount > 0);
 
 			// 超60周岁是否提醒
 			Map<String, String> checkResult = sysUserService.checkSixtyYearsOld(sysU);
@@ -4110,32 +4103,36 @@ public class ApiController {
 	public R<Boolean> signAgreement(@Validated @RequestBody SignAgreementDTO signAgreementDTO) {
 		log.info("小程序签署协议请求:{}", signAgreementDTO);
 
-		Integer userId = SecurityUtils.getUser().getId();
-		SysUser queryUser = sysUserService.getById(userId);
+		String username = SecurityUtils.getUser().getUsername();
+		List<SysUser> userList = sysUserService.list(Wrappers.<SysUser>lambdaQuery()
+				.eq(SysUser::getUsername, username)
+				.eq(SysUser::getDelFlag, DelEnum.NOT_DEL.val()));
 
-		List<Object> signAgreementDTOList = new ArrayList<>();
-		if (StrUtil.isBlank(queryUser.getSignAgreement())) {
-			signAgreementDTOList.add(signAgreementDTO);
-		} else {
-			JSONArray agreements = JSONUtil.parseArray(queryUser.getSignAgreement());
-			signAgreementDTOList.addAll(agreements);
-			// 如果已存在该协议,则不再重复保存
-			boolean anyMatch = agreements.stream()
-					.map(o -> BeanUtil.toBean(o, SignAgreementDTO.class))
-					.anyMatch(dto -> SignAgreementDTO.SignAgreementType.HONEST_AGREEMENT.equals(dto.getAgreementType()));
-			if (anyMatch) {
-				return R.ok();
+
+		for (SysUser user : userList) {
+			List<Object> signAgreementDTOList = new ArrayList<>();
+			if (StrUtil.isBlank(user.getSignAgreement())) {
+				signAgreementDTOList.add(signAgreementDTO);
+			} else {
+				JSONArray agreements = JSONUtil.parseArray(user.getSignAgreement());
+				signAgreementDTOList.addAll(agreements);
+				// 如果已存在该协议,则不再重复保存
+				boolean anyMatch = agreements.stream()
+						.map(o -> BeanUtil.toBean(o, SignAgreementDTO.class))
+						.anyMatch(dto -> SignAgreementDTO.SignAgreementType.HONEST_AGREEMENT.equals(dto.getAgreementType()));
+				if (anyMatch) {
+					return R.ok();
+				}
+				signAgreementDTOList.add(signAgreementDTO);
 			}
-			signAgreementDTOList.add(signAgreementDTO);
+			sysUserService.update(Wrappers.<SysUser>lambdaUpdate()
+					.eq(SysUser::getUserId, user.getUserId())
+					.set(SysUser::getSignAgreement, JSONUtil.toJsonStr(signAgreementDTOList))
+					.set(SysUser::getUpdateTime, LocalDateTime.now()));
 		}
 
 
-		boolean update = sysUserService.update(Wrappers.<SysUser>lambdaUpdate()
-				.eq(SysUser::getUsername, queryUser.getUsername())
-				.set(SysUser::getSignAgreement, JSONUtil.toJsonStr(signAgreementDTOList))
-				.set(SysUser::getUpdateTime, LocalDateTime.now()));
-
-		return R.ok(update);
+		return R.ok(Boolean.TRUE);
 	}
 
 	/**