Browse Source

抽奖奖品活动

master
张彭杰 1 year ago
parent
commit
ea610fe09e
16 changed files with 318 additions and 1 deletions
  1. 50
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rpaw/entity/RafflePrizeActivityWinning.java
  2. 30
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/matchmaker/event/MatchmakerFranchiseFeeRewardEvent.java
  3. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java
  4. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java
  5. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/rpa/user/RafflePrizeActivityUserQueryController.java
  6. 52
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpa/RafflePrizeActivityEventHandler.java
  7. 17
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  8. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/rpaw/RafflePrizeActivityWinningApplicationService.java
  9. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/rpaw/RafflePrizeActivityWinningAggregate.java
  10. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/rpaw/repository/RafflePrizeActivityWinningRepository.java
  11. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/rpaw/RafflePrizeActivityWinningDao.java
  12. 41
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/RafflePrizeActivityWinningRepositoryImpl.java
  13. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpa/RafflePrizeActivityQueryService.java
  14. 17
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpa/impl/RafflePrizeActivityQueryServiceImpl.java
  15. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpaw/RafflePrizeActivityWinningQueryService.java
  16. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpaw/impl/RafflePrizeActivityWinningQueryServiceImpl.java

50
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rpaw/entity/RafflePrizeActivityWinning.java

@ -0,0 +1,50 @@
package com.qniao.dam.domain.aggregate.rpaw.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.rpa.constant.RafflePrizeActivityConditionEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.qniao.domain.Entity;
import java.time.LocalDateTime;
/**
* 抽奖活动中奖信息
*
* @date 2025/01/14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_raffle_prize_activity_winning")
public class RafflePrizeActivityWinning extends Entity<RafflePrizeActivityWinning> {
@ApiModelProperty("抽奖奖品活动标识")
private Long rafflePrizeActivityId;
@ApiModelProperty("参加条件")
private RafflePrizeActivityConditionEnum rafflePrizeActivityCondition;
@ApiModelProperty("中奖人")
private Long userId;
@ApiModelProperty("中奖人手机")
private String phone;
@ApiModelProperty("中奖产品")
private String rafflePrizeConfigName;
@ApiModelProperty("是否抽奖")
private Boolean isDraw;
@ApiModelProperty("抽奖时间")
private LocalDateTime drawTime;
@ApiModelProperty("最高奖励")
private String maxReward;
@ApiModelProperty("备注")
private String remark;
}

30
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/matchmaker/event/MatchmakerFranchiseFeeRewardEvent.java

@ -0,0 +1,30 @@
package com.qniao.dam.domian.aggregate.matchmaker.event;
import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum;
import com.qniao.domain.BaseDomainEvent;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MatchmakerFranchiseFeeRewardEvent extends BaseDomainEvent {
@ApiModelProperty("发起邀请红娘")
private Long matchmakerId;
@ApiModelProperty("加盟费")
private BigDecimal franchiseFee;
@ApiModelProperty("留存加盟费")
private BigDecimal stayFranchiseFee;
@ApiModelProperty("被邀请用户名称")
private String receiveUserName;
@ApiModelProperty("入驻红娘级别")
private MatchmakerLevelEnum receiveLevel;
@ApiModelProperty("关联ID")
private Long associateId;
}

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireMatchmakerJoinRecommendRewardDto.java

@ -1,6 +1,7 @@
package com.qniao.dam.application.request;
import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum;
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -15,4 +16,5 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto {
private Long associateOrderId;
private MatchmakerLevelEnum initiatorLevel;
private MatchmakerLevelEnum receiveLevel;
private MatchmakerAuditBehaviorEnum behavior;
}

4
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/UserAcquireMatchmakerJoinRecommendRewardDto.java

@ -1,6 +1,7 @@
package com.qniao.dam.api.command.reward.user.request;
import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum;
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -25,4 +26,7 @@ public class UserAcquireMatchmakerJoinRecommendRewardDto {
@ApiModelProperty("入驻红娘级别")
private MatchmakerLevelEnum receiveLevel;
@ApiModelProperty("行为 1注册 2升级")
private MatchmakerAuditBehaviorEnum behavior;
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/rpa/user/RafflePrizeActivityUserQueryController.java

@ -35,4 +35,11 @@ public class RafflePrizeActivityUserQueryController {
public UserGetRafflePrizeActivityDetailyByOperatorVo userGetRafflePrizeActivityDetailByOperator(@RequestParam("id") Long id) {
return rafflePrizeActivityQueryService.getDetailByOperator(id);
}
//
// @GetMapping("get/raffle-prize-activity/detail/by/customer")
// @ApiOperation("客户获取抽奖奖品活动详情")
// public UserGetRafflePrizeActivityDetailyByOperatorVo userGetRafflePrizeActivityDetailByOperator(@RequestParam("id") Long id) {
// return rafflePrizeActivityQueryService.getDetailByOperator(id);
// }
}

52
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpa/RafflePrizeActivityEventHandler.java

@ -0,0 +1,52 @@
package com.qniao.dam.application.handler.rpa;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.domain.aggregate.rpa.entity.RafflePrizeActivity;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import com.qniao.dam.domian.aggregate.matchmaker.event.MatchmakerFranchiseFeeRewardEvent;
import com.qniao.dam.domian.aggregate.rpa.constant.RafflePrizeActivityConditionEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao;
import com.qniao.dam.query.rpa.RafflePrizeActivityQueryService;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Objects;
@Component
@Slf4j
public class RafflePrizeActivityEventHandler extends BaseApplicationService {
@Resource
private RafflePrizeActivityQueryService rafflePrizeActivityQueryService;
@Resource
private MatchmakerDao matchmakerDao;
/**
* 红娘邀请入驻奖励事件
*
* @param event 红娘邀请入驻奖励事件
*/
@Subscribe
private void handle(MatchmakerFranchiseFeeRewardEvent event) {
try {
RafflePrizeActivity rafflePrizeActivity = rafflePrizeActivityQueryService.queryEnableBy(RafflePrizeActivityConditionEnum.MATCHMAKER_JOIN_RECOMMEND);
if (Objects.nonNull(rafflePrizeActivity)) {
Matchmaker matchmaker = matchmakerDao.selectById(event.getMatchmakerId());
//满足抽奖活动,获得抽奖资格
RafflePrizeActivityWinning winning = new RafflePrizeActivityWinning();
winning.setRafflePrizeActivityId(rafflePrizeActivity.getId());
winning.setRafflePrizeActivityCondition(rafflePrizeActivity.getCondition());
winning.setUserId(matchmaker.getUserId());
winning.setPhone(matchmaker.getPhone());
winning.setIsDraw(false);
winning.setMaxReward(event.getStayFranchiseFee().stripTrailingZeros().toPlainString());
winning.setRemark(matchmaker.getType().getDesc() + matchmaker.getName() + "邀请" + event.getReceiveLevel().getDesc() + event.getReceiveUserName() + "加盟,加盟费" + event.getFranchiseFee());
}
} catch (Exception e) {
log.error("红娘邀请入驻奖励事件处理异常", e);
}
}
}

17
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -10,6 +10,7 @@ import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.matchmaker.event.MatchmakerFranchiseFeeRewardEvent;
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ;
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
@ -33,6 +34,8 @@ import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.dau.domain.aggregate.store.entity.Store;
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum;
import com.qniao.domain.BaseApplicationService;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Service;
@ -41,7 +44,7 @@ import java.math.BigDecimal;
import java.util.*;
@Service
public class RewardApplicationService {
public class RewardApplicationService extends BaseApplicationService {
@Resource
private RewardConfigQueryService rewardConfigQueryService;
@ -103,6 +106,18 @@ public class RewardApplicationService {
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
//发送红娘收益事件
if (MatchmakerAuditBehaviorEnum.REGISTER.equals(dto.getBehavior())) {
MatchmakerFranchiseFeeRewardEvent rewardEvent = new MatchmakerFranchiseFeeRewardEvent();
rewardEvent.setMatchmakerId(initiatorMatchmaker.getId());
rewardEvent.setFranchiseFee(rewardAmount);
rewardEvent.setStayFranchiseFee(rewardAmount.subtract(revenue));
rewardEvent.setReceiveUserName(dto.getReceiveUserName());
rewardEvent.setReceiveLevel(dto.getReceiveLevel());
rewardEvent.setAssociateId(dto.getAssociateOrderId());
this.sendEvent(rewardEvent);
}
//积分奖励
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
mq.setOwnId(dto.getInitiatorUserId());

26
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/rpaw/RafflePrizeActivityWinningApplicationService.java

@ -0,0 +1,26 @@
package com.qniao.dam.application.service.rpaw;
import com.qniao.dam.domain.aggregate.rpaw.RafflePrizeActivityWinningAggregate;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class RafflePrizeActivityWinningApplicationService {
@Resource
private RafflePrizeActivityWinningAggregate rafflePrizeActivityWinningAggregate;
public void create(RafflePrizeActivityWinning rafflePrizeActivityWinning) {
rafflePrizeActivityWinningAggregate.create(rafflePrizeActivityWinning);
}
public void edit(RafflePrizeActivityWinning rafflePrizeActivityWinning) {
rafflePrizeActivityWinningAggregate.edit(rafflePrizeActivityWinning);
}
public void delete(Long id) {
rafflePrizeActivityWinningAggregate.delete(id);
}
}

31
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/rpaw/RafflePrizeActivityWinningAggregate.java

@ -0,0 +1,31 @@
package com.qniao.dam.domain.aggregate.rpaw;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import com.qniao.dam.domain.aggregate.rpaw.repository.RafflePrizeActivityWinningRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 抽奖活动中奖信息
*
* @date 2025/01/14
*/
@Service
public class RafflePrizeActivityWinningAggregate {
@Resource
private RafflePrizeActivityWinningRepository repository;
public void create(RafflePrizeActivityWinning entity) {
repository.save(entity);
}
public void edit(RafflePrizeActivityWinning entity) {
repository.save(entity);
}
public void delete(Long id) {
repository.delete(id);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/rpaw/repository/RafflePrizeActivityWinningRepository.java

@ -0,0 +1,12 @@
package com.qniao.dam.domain.aggregate.rpaw.repository;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import com.qniao.domain.Repository;
/**
* 抽奖活动中奖信息
*
* @date 2025/01/14
*/
public interface RafflePrizeActivityWinningRepository extends Repository<RafflePrizeActivityWinning, Long> {
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/rpaw/RafflePrizeActivityWinningDao.java

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.rpaw;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
/**
* 抽奖活动中奖信息
*
* @date 2025/01/14
*/
public interface RafflePrizeActivityWinningDao extends BaseMapper<RafflePrizeActivityWinning> {
}

41
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/RafflePrizeActivityWinningRepositoryImpl.java

@ -0,0 +1,41 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.qniao.dam.domain.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import com.qniao.dam.domain.aggregate.rpaw.repository.RafflePrizeActivityWinningRepository;
import com.qniao.dam.infrastructure.persistent.dao.rpaw.RafflePrizeActivityWinningDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 抽奖活动中奖信息
*
* @date 2025/01/14
*/
@Service
public class RafflePrizeActivityWinningRepositoryImpl implements RafflePrizeActivityWinningRepository {
@Resource
private RafflePrizeActivityWinningDao dao;
@Override
public RafflePrizeActivityWinning load(Long id) {
return dao.selectById(id);
}
@Override
public Long save(RafflePrizeActivityWinning entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
} else {
dao.updateById(entity);
}
return entity.getId();
}
@Override
public void delete(Long id) {
dao.deleteById(id);
}
}

4
dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpa/RafflePrizeActivityQueryService.java

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.rpa.user.request.UserPageRafflePrizeActivityQueryParams;
import com.qniao.dam.api.query.rpa.user.response.UserGetRafflePrizeActivityDetailyByOperatorVo;
import com.qniao.dam.api.query.rpa.user.response.UserPageRafflePrizeActivityByOperatorVo;
import com.qniao.dam.domain.aggregate.rpa.entity.RafflePrizeActivity;
import com.qniao.dam.domian.aggregate.rpa.constant.RafflePrizeActivityConditionEnum;
import com.qniao.framework.utils.PageUtil;
public interface RafflePrizeActivityQueryService {
@ -11,4 +13,6 @@ public interface RafflePrizeActivityQueryService {
IPage<UserPageRafflePrizeActivityByOperatorVo> pageByOperator(UserPageRafflePrizeActivityQueryParams queryParams, PageUtil pageUtil);
UserGetRafflePrizeActivityDetailyByOperatorVo getDetailByOperator(Long id);
RafflePrizeActivity queryEnableBy(RafflePrizeActivityConditionEnum rafflePrizeActivityConditionEnum);
}

17
dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpa/impl/RafflePrizeActivityQueryServiceImpl.java

@ -1,10 +1,12 @@
package com.qniao.dam.query.rpa.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.rpa.user.request.UserPageRafflePrizeActivityQueryParams;
import com.qniao.dam.api.query.rpa.user.response.UserGetRafflePrizeActivityDetailyByOperatorVo;
import com.qniao.dam.api.query.rpa.user.response.UserPageRafflePrizeActivityByOperatorVo;
import com.qniao.dam.domain.aggregate.rpa.entity.RafflePrizeActivity;
import com.qniao.dam.domian.aggregate.rpa.constant.RafflePrizeActivityConditionEnum;
import com.qniao.dam.infrastructure.persistent.dao.rpa.RafflePrizeActivityDao;
import com.qniao.dam.query.rpa.RafflePrizeActivityQueryService;
import com.qniao.framework.utils.PageUtil;
@ -12,6 +14,7 @@ import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Objects;
@Service
@ -36,4 +39,18 @@ public class RafflePrizeActivityQueryServiceImpl implements RafflePrizeActivityQ
}
return detailVo;
}
@Override
public RafflePrizeActivity queryEnableBy(RafflePrizeActivityConditionEnum condition) {
LambdaQueryWrapper<RafflePrizeActivity> wrapper = new LambdaQueryWrapper<>();
if (Objects.nonNull(condition)) {
wrapper.eq(RafflePrizeActivity::getCondition, condition);
}
wrapper.eq(RafflePrizeActivity::getEnable, true);
LocalDateTime now = LocalDateTime.now();
wrapper.ge(RafflePrizeActivity::getStartTime, now);
wrapper.le(RafflePrizeActivity::getEndTime, now);
wrapper.last("limit 1");
return rafflePrizeActivityDao.selectOne(wrapper);
}
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpaw/RafflePrizeActivityWinningQueryService.java

@ -0,0 +1,5 @@
package com.qniao.dam.query.rpaw;
public interface RafflePrizeActivityWinningQueryService {
}

9
dating-agency-mall-server/src/main/java/com/qniao/dam/query/rpaw/impl/RafflePrizeActivityWinningQueryServiceImpl.java

@ -0,0 +1,9 @@
package com.qniao.dam.query.rpaw.impl;
import com.qniao.dam.query.rpaw.RafflePrizeActivityWinningQueryService;
import org.springframework.stereotype.Service;
@Service
public class RafflePrizeActivityWinningQueryServiceImpl implements RafflePrizeActivityWinningQueryService {
}
Loading…
Cancel
Save