From cdb1e3301680471efa7458e04739a69d7ed5e3e8 Mon Sep 17 00:00:00 2001 From: Derran Date: Thu, 5 Feb 2026 16:38:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=BF=E7=94=A8=E8=81=94?= =?UTF-8?q?=E7=B3=BB=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tionContactApplyUserCommandController.java | 19 ------ ...tactCardUsageRecordApplicationService.java | 61 +++++++++++++------ ...rmationContactApplyApplicationService.java | 12 ---- ...riageInformationContactApplyAggregate.java | 3 + .../UserMarriageInformationQueryService.java | 2 + ...erMarriageInformationQueryServiceImpl.java | 8 +++ 6 files changed, 54 insertions(+), 51 deletions(-) diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/mica/user/MarriageInformationContactApplyUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/mica/user/MarriageInformationContactApplyUserCommandController.java index 9b70d08..84a5ba3 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/mica/user/MarriageInformationContactApplyUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/mica/user/MarriageInformationContactApplyUserCommandController.java @@ -17,24 +17,5 @@ public class MarriageInformationContactApplyUserCommandController { @Resource private MarriageInformationContactApplyApplicationService marriageInformationContactApplyApplicationService; - @ApiOperation("用户创建征婚资料联系申请") - @PostMapping("create/marriage-information-contact-apply") - public void userCreateMarriageInformationContactApply(@RequestBody @Valid UserCreateMarriageInformationContactApplyDto dto, - @RequestParam("userId") Long userId) { - marriageInformationContactApplyApplicationService.create(dto.trans2Domain()); - } - @ApiOperation("用户编辑征婚资料联系申请") - @PostMapping("edit/marriage-information-contact-apply") - public void userEditMarriageInformationContactApply(@RequestBody @Valid UserEditMarriageInformationContactApplyDto dto, - @RequestParam("userId") Long userId) { - marriageInformationContactApplyApplicationService.edit(dto.trans2Domain()); - } - - @ApiOperation("用户删除征婚资料联系申请") - @PostMapping("delete/marriage-information-contact-apply") - public void userDeleteMarriageInformationContactApply(@RequestBody @Valid UserDeleteMarriageInformationContactApplyDto dto, - @RequestParam("userId") Long userId) { - marriageInformationContactApplyApplicationService.delete(dto.getId()); - } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ccur/ContactCardUsageRecordApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ccur/ContactCardUsageRecordApplicationService.java index 520b252..a01f77b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ccur/ContactCardUsageRecordApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ccur/ContactCardUsageRecordApplicationService.java @@ -4,6 +4,8 @@ import cn.hutool.core.util.StrUtil; import com.qniao.dam.api.command.ccur.user.response.UserUseContactCardVo; import com.qniao.dam.application.service.right.RightApplicationService; import com.qniao.dam.domain.aggregate.ccur.vobj.ContactCardUsageRecord; +import com.qniao.dam.domain.aggregate.mica.MarriageInformationContactApplyAggregate; +import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; import com.qniao.dam.domain.aggregate.pcur.vobj.ProfileCardUsageRecord; import com.qniao.dam.domian.aggregate.pcur.constant.CardUsageTyepEnum; import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum; @@ -12,7 +14,9 @@ import com.qniao.dam.infrastructure.persistent.dao.pcur.ProfileCardUsageRecordDa import com.qniao.dam.query.ccur.ContactCardUsageRecordQueryService; import com.qniao.dam.query.marriageinformation.MarriageInformationQueryService; import com.qniao.dam.query.mica.MarriageInformationContactApplyQueryService; +import com.qniao.dam.query.usermarriageinformation.UserMarriageInformationQueryService; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; +import com.qniao.das.domian.aggregate.marriageinformation.UserMarriageInformation; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -30,31 +34,35 @@ public class ContactCardUsageRecordApplicationService { private ContactCardUsageRecordDao contactCardUsageRecordDao; @Resource private RightApplicationService rightApplicationService; + @Resource + private UserMarriageInformationQueryService userMarriageInformationQueryService; + @Resource + private MarriageInformationContactApplyAggregate marriageInformationContactApplyAggregate; public UserUseContactCardVo use(ContactCardUsageRecord usageRecord) { UserUseContactCardVo vo = new UserUseContactCardVo(); - //是否申请中 - if (marriageInformationContactApplyQueryService.checkApplying(usageRecord.getUserId(), usageRecord.getTargetMiId())){ - //申请过了 - vo.setSuccess(true); - }else { - MarriageInformation marriageInformation = marriageInformationQueryService.queryByUserId(usageRecord.getUserId()); - vo.setRealNameAuthenticated(StrUtil.isNotBlank(marriageInformation.getIdentityCard())); - if (!vo.getRealNameAuthenticated()) { - //已经认证 - int usageFreeCount = contactCardUsageRecordQueryService.countUsageRecord(usageRecord.getUserId(), CardUsageTyepEnum.FREE); - if (usageFreeCount < 10) { - ContactCardUsageRecord record = ContactCardUsageRecord.build(usageRecord.getUserId(), usageRecord.getTargetMiId(), CardUsageTyepEnum.FREE); - contactCardUsageRecordDao.insert(record); - vo.setSuccess(true); - } else { - //免费使用完后,看看有没有联系卡使用 - if (rightApplicationService.consumeRight(usageRecord.getUserId(), marriageInformation.getId(), RightTypeEnum.CONTACT_CARD, null)) { - ContactCardUsageRecord record = ContactCardUsageRecord.build(usageRecord.getUserId(), usageRecord.getTargetMiId(), CardUsageTyepEnum.CARD); - contactCardUsageRecordDao.insert(record); + synchronized (usageRecord.getUserId().toString().intern()) { + //是否申请中 + if (marriageInformationContactApplyQueryService.checkApplying(usageRecord.getUserId(), usageRecord.getTargetMiId())) { + //申请过了 + vo.setSuccess(true); + } else { + MarriageInformation marriageInformation = marriageInformationQueryService.queryByUserId(usageRecord.getUserId()); + vo.setRealNameAuthenticated(StrUtil.isNotBlank(marriageInformation.getIdentityCard())); + if (!vo.getRealNameAuthenticated()) { + //已经认证 + int usageFreeCount = contactCardUsageRecordQueryService.countUsageRecord(usageRecord.getUserId(), CardUsageTyepEnum.FREE); + if (usageFreeCount < 10) { + applyContact(usageRecord, marriageInformation); vo.setSuccess(true); } else { - vo.setSuccess(false); + //免费使用完后,看看有没有联系卡使用 + if (rightApplicationService.consumeRight(usageRecord.getUserId(), marriageInformation.getId(), RightTypeEnum.CONTACT_CARD, null)) { + applyContact(usageRecord, marriageInformation); + vo.setSuccess(true); + } else { + vo.setSuccess(false); + } } } } @@ -62,4 +70,17 @@ public class ContactCardUsageRecordApplicationService { return vo; } + private void applyContact(ContactCardUsageRecord usageRecord, + MarriageInformation applicantMarriageInformation) { + ContactCardUsageRecord record = ContactCardUsageRecord.build(usageRecord.getUserId(), usageRecord.getTargetMiId(), CardUsageTyepEnum.FREE); + contactCardUsageRecordDao.insert(record); + MarriageInformationContactApply apply = new MarriageInformationContactApply(); + apply.setApplicantUserId(usageRecord.getUserId()); + apply.setApplicantMiId(applicantMarriageInformation.getId()); + apply.setTargetMiId(usageRecord.getTargetMiId()); + UserMarriageInformation targetUserMarriageInformation = userMarriageInformationQueryService.queryOwnByMiId(usageRecord.getTargetMiId()); + apply.setTargetUserId(targetUserMarriageInformation.getUserId()); + marriageInformationContactApplyAggregate.create(apply); + } + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java index 75003fb..94860dc 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/mica/MarriageInformationContactApplyApplicationService.java @@ -1,7 +1,6 @@ package com.qniao.dam.application.service.mica; import com.qniao.dam.domain.aggregate.mica.MarriageInformationContactApplyAggregate; -import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -12,15 +11,4 @@ public class MarriageInformationContactApplyApplicationService { @Resource private MarriageInformationContactApplyAggregate marriageInformationContactApplyAggregate; - public void create(MarriageInformationContactApply marriageInformationContactApply) { - marriageInformationContactApplyAggregate.create(marriageInformationContactApply); - } - - public void edit(MarriageInformationContactApply marriageInformationContactApply) { - marriageInformationContactApplyAggregate.edit(marriageInformationContactApply); - } - - public void delete(Long id) { - marriageInformationContactApplyAggregate.delete(id); - } } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/mica/MarriageInformationContactApplyAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/mica/MarriageInformationContactApplyAggregate.java index 71d4663..d5a68ce 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/mica/MarriageInformationContactApplyAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/mica/MarriageInformationContactApplyAggregate.java @@ -2,6 +2,7 @@ package com.qniao.dam.domain.aggregate.mica; import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; import com.qniao.dam.domain.aggregate.mica.repository.MarriageInformationContactApplyRepository; +import com.qniao.dam.domian.aggregate.mica.constant.MarriageInformationContactApplyStatusEnum; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -18,6 +19,8 @@ public class MarriageInformationContactApplyAggregate { private MarriageInformationContactApplyRepository repository; public void create(MarriageInformationContactApply entity) { + entity.setStatus(MarriageInformationContactApplyStatusEnum.PENDING); + entity.setUnlocked(false); repository.save(entity); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/UserMarriageInformationQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/UserMarriageInformationQueryService.java index c6f839b..fba9e68 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/UserMarriageInformationQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/UserMarriageInformationQueryService.java @@ -6,4 +6,6 @@ public interface UserMarriageInformationQueryService { UserMarriageInformation queryByOwn(Long userId); + UserMarriageInformation queryOwnByMiId(Long miId); + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/impl/UserMarriageInformationQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/impl/UserMarriageInformationQueryServiceImpl.java index 6d56075..52fc587 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/impl/UserMarriageInformationQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/usermarriageinformation/impl/UserMarriageInformationQueryServiceImpl.java @@ -24,4 +24,12 @@ public class UserMarriageInformationQueryServiceImpl implements UserMarriageInfo return userMarriageInformationDao.selectOne(wrapper); } + @Override + public UserMarriageInformation queryOwnByMiId(Long miId) { + return userMarriageInformationDao.selectOne(new LambdaQueryWrapper() + .eq(UserMarriageInformation::getMiId, miId) + .eq(UserMarriageInformation::getType, UserMarriageInformationTypeEnum.OWN) + .last("limit 1")); + } + }