|
@@ -4631,24 +4631,35 @@ public class ApiController {
|
|
|
public R<Boolean> signAgreement(@Validated @RequestBody SignAgreementDTO signAgreementDTO) {
|
|
|
log.info("小程序签署协议请求:{}", signAgreementDTO);
|
|
|
|
|
|
- Integer userId = SecurityUtils.getUser().getId();
|
|
|
+ String username = SecurityUtils.getUser().getUsername();
|
|
|
|
|
|
- SysUser queryUser = sysUserService.getById(userId);
|
|
|
- List<Object> signAgreementDTOList = new ArrayList<>();
|
|
|
- if (StrUtil.isBlank(queryUser.getSignAgreement())) {
|
|
|
- signAgreementDTOList.add(signAgreementDTO);
|
|
|
- } else {
|
|
|
- JSONArray agreements = JSONUtil.parseArray(queryUser.getSignAgreement());
|
|
|
- signAgreementDTOList.add(signAgreementDTO);
|
|
|
- signAgreementDTOList.addAll(agreements);
|
|
|
- }
|
|
|
+ List<SysUser> users = sysUserService.list(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username));
|
|
|
|
|
|
- SysUser user = new SysUser();
|
|
|
- user.setUserId(userId);
|
|
|
- user.setSignAgreement(JSONUtil.toJsonStr(signAgreementDTOList));
|
|
|
- user.setUpdateTime(LocalDateTime.now());
|
|
|
+ users.forEach(queryUser -> {
|
|
|
+ List<Object> signAgreementDTOList = new ArrayList<>();
|
|
|
+ if (StrUtil.isBlank(queryUser.getSignAgreement())) {
|
|
|
+ signAgreementDTOList.add(signAgreementDTO);
|
|
|
+ } else {
|
|
|
+ JSONArray agreements = JSONUtil.parseArray(queryUser.getSignAgreement());
|
|
|
+ // 如果已存在该协议,则不再重复保存
|
|
|
+ boolean anyMatch = agreements.stream()
|
|
|
+ .map(o -> BeanUtil.toBean(o, SignAgreementDTO.class))
|
|
|
+ .anyMatch(dto -> SignAgreementDTO.SignAgreementType.HONEST_AGREEMENT.equals(dto.getAgreementType()));
|
|
|
+ if (anyMatch) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ signAgreementDTOList.add(signAgreementDTO);
|
|
|
+ signAgreementDTOList.addAll(agreements);
|
|
|
+ }
|
|
|
|
|
|
- return R.ok(sysUserService.updateById(user));
|
|
|
+ SysUser user = new SysUser();
|
|
|
+ user.setUserId(queryUser.getUserId());
|
|
|
+ user.setSignAgreement(JSONUtil.toJsonStr(signAgreementDTOList));
|
|
|
+ user.setUpdateTime(LocalDateTime.now());
|
|
|
+ sysUserService.updateById(user);
|
|
|
+ });
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
}
|
|
|
|
|
|
/**
|