diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/ChannelCostGiftEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/ChannelCostGiftEvent.java new file mode 100644 index 0000000..b266de8 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/ChannelCostGiftEvent.java @@ -0,0 +1,17 @@ +package com.qniao.dam.domian.aggregate.virtualaccount.event; + +import com.qniao.domain.BaseDomainEvent; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ChannelCostGiftEvent extends BaseDomainEvent { + + private Long AnchorUserId; + + private Integer balance; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java index b03dc49..f5383f0 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java @@ -8,7 +8,6 @@ import com.qniao.dam.domain.aggregate.tasktemplate.entity.TaskTemplate; import com.qniao.dam.domain.aggregate.udtp.UserDailyTaskProgressAggregate; import com.qniao.dam.domain.aggregate.udtp.entity.UserDailyTaskProgress; import com.qniao.dam.domain.aggregate.utc.UserTaskCompleteAggregate; -import com.qniao.dam.domain.aggregate.utc.entity.UserSubTaskComplete; import com.qniao.dam.domain.aggregate.utc.entity.UserTaskComplete; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; @@ -21,13 +20,11 @@ import com.qniao.dam.domian.aggregate.udtp.event.UserDailyTaskProgressCommittedE import com.qniao.dam.domian.aggregate.utc.event.EffectiveBlindDateCountCommittedMQ; import com.qniao.dam.domian.aggregate.utc.event.UserEffectiveLiveDurationCommittedMQ; import com.qniao.dam.domian.aggregate.utc.event.UserLiveRoomCheckInUserCountCommittedMQ; -import com.qniao.dam.domian.aggregate.utc.event.UserTaskCompleteCommittedEvent; +import com.qniao.dam.domian.aggregate.virtualaccount.event.ChannelCostGiftEvent; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqQueue; -import com.qniao.dam.infrastructure.persistent.dao.tasktemplate.TaskTemplateDao; -import com.qniao.dam.infrastructure.persistent.dao.utc.UserTaskCompleteDao; import com.qniao.dam.query.livematchmaker.LiveMatchmakerQueryService; import com.qniao.dam.query.tasktemplate.TaskTemplateQueryService; import com.qniao.dam.query.udtp.UserDailyTaskProgressQueryService; @@ -66,10 +63,6 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { @Resource private WalletAccountQueryService walletAccountQueryService; @Resource - private UserTaskCompleteDao userTaskCompleteDao; - @Resource - private TaskTemplateDao taskTemplateDao; - @Resource private CompleteUserTaskCompleteDomainService completeUserTaskCompleteDomainService; @Resource private UserDailyTaskProgressQueryService userDailyTaskProgressQueryService; @@ -83,7 +76,7 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { public void handle(UserEffectiveLiveDurationCommittedMQ mq) { try { synchronized (mq.getUserId().toString().intern()) { - commitDailyTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); + commitTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); } } catch (Exception e) { log.error("直播时长任务提交事件处理异常", e); @@ -96,7 +89,7 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { public void handle(EffectiveBlindDateCountCommittedMQ mq) { try { synchronized (mq.getUserId().toString().intern()) { - commitDailyTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); + commitTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); } } catch (Exception e) { log.error("直播间相亲提交事件处理异常", e); @@ -109,70 +102,32 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { public void handle(UserLiveRoomCheckInUserCountCommittedMQ mq) { try { synchronized (mq.getUserId().toString().intern()) { - commitDailyTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); + commitTaskTaskComplete(mq.getUserId(), mq.getSubTaskType(), mq.getCommitCount()); } } catch (Exception e) { log.error("直播间打卡提交事件处理异常", e); } } - private void commitDailyTaskTaskComplete2(Long userId, - SubTaskTypeEnum subTaskType, - Integer commitCount) { - LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(userId); - if (Objects.nonNull(liveMatchmaker)) { - Tuple tuple = taskTemplateQueryService.getTaskDate(TaskTypeEnum.DAILY_TASK, liveMatchmaker.getCreateTime()); - UserTaskComplete userTaskComplete = userTaskCompleteQueryService.queryBy(userId, null, tuple.get(0), tuple.get(1)); - TaskTemplate taskTemplate = null; - if (Objects.isNull(userTaskComplete)) { - TaskGroupEnum taskGroup = liveMatchmakerQueryService.getTaskGroup(liveMatchmaker); - TaskStageEnum stageCode = TaskStageEnum.count(liveMatchmaker.getCreateTime().toLocalDate()); - //查询任务模板 放redis - taskTemplate = taskTemplateQueryService.queryBy(taskGroup, TaskTypeEnum.DAILY_TASK, stageCode); - } else { - //今日有任务 - taskTemplate = taskTemplateDao.selectById(userTaskComplete.getTaskTemplateId()); - } - if (Objects.nonNull(taskTemplate)) { - List subTaskTemplateList = taskTemplateQueryService.getSubList(taskTemplate.getId()); - for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { - if (subTaskTemplate.getSubTaskType().equals(subTaskType)) { - //存在子任务 - UserSubTaskComplete userSubTaskComplete = null; - if (Objects.isNull(userTaskComplete)) { - userTaskComplete = UserTaskComplete.init(userId, taskTemplate.getId(), tuple.get(0), tuple.get(1)); - userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); - userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); - userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); - } else { - if (!userTaskComplete.getCompleteStatus()) { - userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId()); - if (Objects.isNull(userSubTaskComplete)) { - userSubTaskComplete = UserSubTaskComplete.init(subTaskTemplate.getId()); - userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); - userTaskComplete.setInsertSubList(Collections.singletonList(userSubTaskComplete)); - } else { - if (!userSubTaskComplete.getCompleteStatus()) { - userSubTaskComplete.commit(commitCount, subTaskTemplate.getRequiredCount()); - userTaskComplete.setUpdateSubList(Collections.singletonList(userSubTaskComplete)); - } - } - } - } - if (Objects.nonNull(userSubTaskComplete)) { - BaseDomainEvent event = userTaskCompleteAggregate.commit(userTaskComplete, userSubTaskComplete.getCompleteStatus()); - this.sendEvent(event); - } - break; - } - } + /** + * 直播间消费礼物事件 + * + * @param event + */ + private void handle(ChannelCostGiftEvent event) { + try { + synchronized (event.getAnchorUserId().toString().intern()) { + commitTaskTaskComplete(event.getAnchorUserId(), SubTaskTypeEnum.LIVE_ROOM_GIFT_COUNT, event.getBalance()); } + } catch (Exception e) { + log.error("直播间消费礼物事件处理异常", e); } } - private void commitDailyTaskTaskComplete(Long userId, - SubTaskTypeEnum subTaskType, - Integer commitCount) { + + private void commitTaskTaskComplete(Long userId, + SubTaskTypeEnum subTaskType, + Integer commitCount) { LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(userId); if (Objects.nonNull(liveMatchmaker)) { UserDailyTaskProgress progress = userDailyTaskProgressQueryService.queryBy(userId, LocalDate.now(), subTaskType); @@ -253,41 +208,4 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService { } } } - - @Subscribe - private void handle(UserTaskCompleteCommittedEvent event) { - try { - if (event.getSubTaskCompleteStatus()) { - synchronized (event.getUserId().toString().intern()) { - UserTaskComplete userTaskComplete = userTaskCompleteDao.selectById(event.getId()); - if (!userTaskComplete.getCompleteStatus()) { - List subTaskTemplateList = taskTemplateQueryService.getSubList(userTaskComplete.getTaskTemplateId()); - if (CollUtil.isNotEmpty(subTaskTemplateList)) { - boolean completeStatus = true; - for (SubTaskTemplate subTaskTemplate : subTaskTemplateList) { - UserSubTaskComplete userSubTaskComplete = userTaskCompleteQueryService.querySubBy(userTaskComplete.getId(), subTaskTemplate.getId()); - if (Objects.isNull(userSubTaskComplete) || !userSubTaskComplete.getCompleteStatus()) { - completeStatus = false; - break; - } - } - if (completeStatus) { - TaskTemplate taskTemplate = taskTemplateDao.selectById(userTaskComplete.getTaskTemplateId()); - BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue()); - WalletAccount walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL); - BigDecimal originalBalance = walletAccount.getTotalBalance(); - walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); - walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); - WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); - walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); - completeUserTaskCompleteDomainService.handle(userTaskComplete, walletAccount); - } - } - } - } - } - } catch (Exception e) { - log.error("用户任务提交事件处理异常", e); - } - } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java index 1b75611..143926f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java @@ -31,6 +31,8 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; +import com.qniao.dam.domian.aggregate.virtualaccount.event.ChannelCostGiftEvent; +import com.qniao.dam.domian.aggregate.virtualaccount.event.VirtualAccountCostGiftEvent; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; @@ -305,6 +307,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService { anchorWalletAccount.setRecordList(Collections.singletonList(anchorWalletAccountRecord)); List eventList = costGiftRewardDomainService.handle(order, virtualAccount, costBalance, toRevenueReward, toWalletAccount, anchorRevenueReward, anchorWalletAccount); + eventList.add(new ChannelCostGiftEvent(anchorId,order.getSettlementAmount().intValue())); vo.setSuccess(true); this.sendEvent(eventList); return vo; @@ -353,6 +356,8 @@ public class VirtualAccountApplicationService extends BaseApplicationService { walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); List eventList = costGiftRewardDomainService.handle(order, virtualAccount, costBalance, revenueReward, walletAccount); + //补充直播间礼物玫瑰数量时间 + eventList.add(new ChannelCostGiftEvent(toUserId,order.getSettlementAmount().intValue())); vo.setSuccess(true); this.sendEvent(eventList); return vo; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/utc/UserTaskCompleteAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/utc/UserTaskCompleteAggregate.java index e6265e0..c4ecf69 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/utc/UserTaskCompleteAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/utc/UserTaskCompleteAggregate.java @@ -2,8 +2,6 @@ package com.qniao.dam.domain.aggregate.utc; import com.qniao.dam.domain.aggregate.utc.entity.UserTaskComplete; import com.qniao.dam.domain.aggregate.utc.repository.UserTaskCompleteRepository; -import com.qniao.dam.domian.aggregate.utc.event.UserTaskCompleteCommittedEvent; -import com.qniao.domain.BaseDomainEvent; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -31,8 +29,4 @@ public class UserTaskCompleteAggregate { repository.delete(id); } - public BaseDomainEvent commit(UserTaskComplete entity,Boolean subTaskCompleteStatus) { - repository.save(entity); - return new UserTaskCompleteCommittedEvent(entity.getId(),entity.getUserId(),subTaskCompleteStatus); - } }