13 changed files with 195 additions and 26 deletions
Split View
Diff Options
-
8dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java
-
12dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java
-
14dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/MallServerApplicationService.java
-
10dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java
-
32dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java
-
20dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java
-
7dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/WalletAccountQueryService.java
-
23dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/impl/WalletAccountQueryServiceImpl.java
-
19dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/notify/NotifyApplicationService.java
-
49dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
-
11dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/WalletAccountAggregate.java
-
4dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/RewardConfigQueryService.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java
@ -0,0 +1,10 @@ |
|||
package com.qniao.dam.application.request; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserAcquireMatchmakerJoinRecommendRewardDto { |
|||
private Long initiatorUserId; |
|||
private Long receiveUserId; |
|||
|
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
package com.qniao.dam.api.command.reward.user; |
|||
|
|||
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto; |
|||
import com.qniao.dam.application.service.reward.RewardApplicationService; |
|||
import com.qniao.framework.annotation.IgnoreResponseAdvice; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.validation.Valid; |
|||
|
|||
@RestController |
|||
@RequestMapping("user") |
|||
@Api(tags = "奖励") |
|||
public class RewardUserCommandController { |
|||
|
|||
@Resource |
|||
private RewardApplicationService rewardApplicationService; |
|||
|
|||
@ApiOperation("通过SDK获得奖励") |
|||
@PostMapping("acquire/matchmaker-join-recommend/reward/by/sdk") |
|||
@IgnoreResponseAdvice |
|||
public void userAcquireMatchmakerJoinRecommendRewardBySdk(@RequestBody @Valid UserAcquireMatchmakerJoinRecommendRewardDto dto) { |
|||
rewardApplicationService.acquireMatchmakerJoinRecommendReward(dto); |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
package com.qniao.dam.api.command.reward.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
@Data |
|||
public class UserAcquireMatchmakerJoinRecommendRewardDto { |
|||
|
|||
@ApiModelProperty("发起用户") |
|||
@NotNull |
|||
private Long initiatorUserId; |
|||
|
|||
@ApiModelProperty("接收用户") |
|||
@NotNull |
|||
private Long receiveUserId; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
package com.qniao.dam.api.query.walletaccount; |
|||
|
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
|
|||
public interface WalletAccountQueryService { |
|||
WalletAccount queryByUserId(Long userId); |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
package com.qniao.dam.api.query.walletaccount.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.qniao.dam.api.query.walletaccount.WalletAccountQueryService; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Service |
|||
public class WalletAccountQueryServiceImpl implements WalletAccountQueryService { |
|||
|
|||
@Resource |
|||
private WalletAccountDao walletAccountDao; |
|||
|
|||
@Override |
|||
public WalletAccount queryByUserId(Long userId) { |
|||
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>() |
|||
.eq(WalletAccount::getUserId, userId) |
|||
.last("limit 1")); |
|||
} |
|||
} |
|||
@ -0,0 +1,49 @@ |
|||
package com.qniao.dam.application.service.reward; |
|||
|
|||
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto; |
|||
import com.qniao.dam.api.query.walletaccount.WalletAccountQueryService; |
|||
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|||
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum; |
|||
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
|||
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Collections; |
|||
import java.util.Objects; |
|||
|
|||
@Service |
|||
public class RewardApplicationService { |
|||
|
|||
@Resource |
|||
private RewardConfigQueryService rewardConfigQueryService; |
|||
@Resource |
|||
private WalletAccountQueryService walletAccountQueryService; |
|||
@Resource |
|||
private WalletAccountAggregate walletAccountAggregate; |
|||
|
|||
/** |
|||
* todo 财务入账 |
|||
*/ |
|||
public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { |
|||
synchronized (dto.getInitiatorUserId().toString().intern()) { |
|||
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND); |
|||
if (Objects.nonNull(rewardConfig) && RewardAmountUnitEnum.NUM.equals(rewardConfig.getRewardAmountUnit())) { |
|||
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId()); |
|||
if (Objects.isNull(walletAccount)) { |
|||
walletAccount = WalletAccount.init(dto.getInitiatorUserId()); |
|||
} |
|||
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardConfig.getRewardAmount())); |
|||
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|||
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|||
rewardConfig.getRewardAmount(), true, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc()); |
|||
walletAccount.setRecordList(Collections.singletonList(record)); |
|||
walletAccountAggregate.save(walletAccount); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,7 +1,18 @@ |
|||
package com.qniao.dam.domain.aggregate.walletaccount; |
|||
|
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.repository.WalletAccountRepository; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Service |
|||
public class WalletAccountAggregate { |
|||
|
|||
@Resource |
|||
private WalletAccountRepository walletAccountRepository; |
|||
|
|||
public void save(WalletAccount walletAccount) { |
|||
walletAccountRepository.save(walletAccount); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save