Browse Source

每月任务

master
张彭杰 1 month ago
parent
commit
5139888863
4 changed files with 41 additions and 107 deletions
  1. 17
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/ChannelCostGiftEvent.java
  2. 120
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  3. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  4. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/utc/UserTaskCompleteAggregate.java

17
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;
}

120
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<SubTaskTemplate> 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<SubTaskTemplate> 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);
}
}
}

5
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<BaseDomainEvent> 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<BaseDomainEvent> eventList = costGiftRewardDomainService.handle(order, virtualAccount, costBalance, revenueReward, walletAccount);
//补充直播间礼物玫瑰数量时间
eventList.add(new ChannelCostGiftEvent(toUserId,order.getSettlementAmount().intValue()));
vo.setSuccess(true);
this.sendEvent(eventList);
return vo;

6
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);
}
}
Loading…
Cancel
Save