13 changed files with 195 additions and 26 deletions
Unified 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; |
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 org.springframework.stereotype.Service; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
@Service |
@Service |
||||
public class WalletAccountAggregate { |
public class WalletAccountAggregate { |
||||
|
|
||||
|
@Resource |
||||
|
private WalletAccountRepository walletAccountRepository; |
||||
|
|
||||
|
public void save(WalletAccount walletAccount) { |
||||
|
walletAccountRepository.save(walletAccount); |
||||
|
} |
||||
} |
} |
||||
Write
Preview
Loading…
Cancel
Save