|
|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
} |