Skip to content

Commit

Permalink
活动领域的配置与状态-依据依赖倒置原则改变lottery-infrastructure和lottery-domain的以来关系
Browse files Browse the repository at this point in the history
  • Loading branch information
Casflawed committed Jul 28, 2023
1 parent ba21b3f commit c82f96e
Show file tree
Hide file tree
Showing 20 changed files with 225 additions and 39 deletions.
6 changes: 6 additions & 0 deletions lottery-project/lottery-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.flameking.lottery.common.util;

import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

/**
* 实体转换工具类
*
* @author Wangsw
* @date 2022/11/22
*/
public class EntityUtils extends BeanUtils {

public static <S, T> List<T> toList(List<S> sources, Supplier<T> target) {
return toList(sources, target, null);
}

/**
* @author Wangsw
* 使用场景:Entity、Bo、Vo层数据的复制,因为BeanUtils.copyProperties只能给目标对象的属性赋值,却不能在List集合下循环赋值,因此添加该方法
* 如:List<AdminEntity> 赋值到 List<AdminVo> ,List<AdminVo>中的 AdminVo 属性都会被赋予到值
* S: 数据源类 ,T: 目标类::new(eg: AdminVo::new)
*/
public static <S, T> List<T> toList(List<S> sources, Supplier<T> target, EntityUtilsCallBack<S, T> callBack) {
List<T> list = new ArrayList<>(sources.size());
for (S source : sources) {
T t = target.get();
BeanUtils.copyProperties(source, t);
if (callBack != null) {
// 回调
callBack.callBack(source, t);
}
list.add(t);
}
return list;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.flameking.lottery.common.util;

/**
* 回调方法接口
*
* @author Wangsw
* @date 2022/11/22
*/
@FunctionalInterface
public interface EntityUtilsCallBack<S, T> {

/**
* 回调方法
*
* @param t t
* @param s 年代
*/
void callBack(S t, T s);
}
7 changes: 0 additions & 7 deletions lottery-project/lottery-domain/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,6 @@
</parent>

<dependencies>

<dependency>
<groupId>com.flameking</groupId>
<artifactId>lottery-infrastructure</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.flameking</groupId>
<artifactId>lottery-common</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.flameking.lottery.domain.strategy.algorithm;

import com.flameking.lottery.domain.strategy.model.AwardRateInfo;
import com.flameking.lottery.infrastructure.entity.StrategyDetail;
import com.flameking.lottery.domain.strategy.model.vo.AwardRateInfo;
import com.flameking.lottery.domain.strategy.model.vo.StrategyDetailBriefVO;
import org.springframework.util.Assert;

import java.util.ArrayList;
Expand All @@ -17,7 +17,7 @@ public abstract class BaseRandomDrawAlgorithm implements IRandomDrawAlgorithm {
protected Map<Long, List<AwardRateInfo>> commonAwardRateInfos = new HashMap<>();

@Override
public void initAwardRateInfo(Long strategyId, List<StrategyDetail> strategyDetails){
public void initAwardRateInfo(Long strategyId, List<StrategyDetailBriefVO> strategyDetails){
Assert.notEmpty(strategyDetails, "奖品概率信息为空");
//奖品概率信息已初始化
if (commonAwardRateInfos.containsKey(strategyId)){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.flameking.lottery.domain.strategy.algorithm;

import com.flameking.lottery.infrastructure.entity.StrategyDetail;
import com.flameking.lottery.domain.strategy.model.vo.StrategyDetailBriefVO;

import java.util.List;

Expand All @@ -25,5 +25,5 @@ public interface IRandomDrawAlgorithm {
* @param strategyId 策略id
* @param strategyDetails 奖品概率信息
*/
void initAwardRateInfo(Long strategyId, List<StrategyDetail> strategyDetails);
void initAwardRateInfo(Long strategyId, List<StrategyDetailBriefVO> strategyDetails);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.flameking.lottery.domain.strategy.algorithm.impl;

import com.flameking.lottery.domain.strategy.algorithm.BaseRandomDrawAlgorithm;
import com.flameking.lottery.domain.strategy.model.AwardRateInfo;
import com.flameking.lottery.domain.strategy.model.vo.AwardRateInfo;

import java.util.ArrayList;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.flameking.lottery.domain.strategy.algorithm.impl;

import com.flameking.lottery.domain.strategy.algorithm.BaseRandomDrawAlgorithm;
import com.flameking.lottery.domain.strategy.model.AwardRateInfo;
import com.flameking.lottery.domain.strategy.model.vo.AwardRateInfo;
import lombok.extern.slf4j.Slf4j;

import java.util.HashMap;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.flameking.lottery.common.Constants;
import com.flameking.lottery.domain.strategy.algorithm.IRandomDrawAlgorithm;
import com.flameking.lottery.domain.strategy.factory.RandomDrawAlgorithmFactory;
import com.flameking.lottery.domain.strategy.model.StrategyRich;
import com.flameking.lottery.domain.strategy.model.vo.StrategyRich;
import com.flameking.lottery.domain.strategy.model.res.DrawResult;
import com.flameking.lottery.domain.strategy.model.vo.AwardBriefVO;
import com.flameking.lottery.domain.strategy.model.vo.DrawAwardInfo;
import com.flameking.lottery.infrastructure.entity.Award;
import com.flameking.lottery.infrastructure.entity.Strategy;
import com.flameking.lottery.domain.strategy.model.vo.StrategyBriefVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;

Expand All @@ -21,7 +21,7 @@ public abstract class BaseDrawTemplate extends DrawStrategySupport implements ID
public DrawResult doDraw(Long uId, Long strategyId) {
//查询奖品概率和策略配置信息
StrategyRich strategyRich = this.queryStrategyRich(strategyId);
Strategy strategy = strategyRich.getStrategy();
StrategyBriefVO strategy = strategyRich.getStrategy();

//初始化抽奖策略
this.initRandomDrawAlgorithm(strategy.getStrategyMode(), strategyRich);
Expand Down Expand Up @@ -54,9 +54,10 @@ private DrawResult wrappedLotteryResult(Long uId, Long strategyId, Long awardId)
return new DrawResult(uId, strategyId, Constants.DrawState.FAIL.getCode(), Constants.DrawState.FAIL.getInfo());
}
log.debug("用户-{}-抽奖策略-{}-抽奖状态-{}", uId, strategyId, Constants.DrawState.FAIL.getInfo());
Award award = this.queryAward(awardId);

AwardBriefVO awardBriefVO = this.queryAward(awardId);
DrawAwardInfo drawAwardInfo = new DrawAwardInfo();
BeanUtils.copyProperties(award, drawAwardInfo);
BeanUtils.copyProperties(awardBriefVO, drawAwardInfo);

return new DrawResult(uId, strategyId, Constants.DrawState.SUCCESS.getCode(), Constants.DrawState.SUCCESS.getInfo(), drawAwardInfo);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.flameking.lottery.domain.strategy.draw;

import com.flameking.lottery.domain.strategy.model.StrategyRich;
import com.flameking.lottery.domain.strategy.model.vo.StrategyRich;
import com.flameking.lottery.domain.strategy.model.vo.AwardBriefVO;
import com.flameking.lottery.domain.strategy.repository.IStrategyRepository;
import com.flameking.lottery.infrastructure.entity.Award;

import javax.annotation.Resource;
import java.util.List;
Expand All @@ -14,7 +14,7 @@ public class DrawStrategySupport {
protected StrategyRich queryStrategyRich(Long strategyId){
return strategyRepository.queryStrategyRich(strategyId);
}
protected Award queryAward(Long awardId){
protected AwardBriefVO queryAward(Long awardId){
return strategyRepository.queryAward(awardId);
}
protected List<Long> queryAwardIdsWithoutAmount(Long strategyId){
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.flameking.lottery.domain.strategy.model.vo;

import lombok.Data;

/**
* 奖品简要信息
*/
@Data
public class AwardBriefVO {

/** 奖品ID */
private String awardId;

/** 奖品类型(1:文字描述、2:兑换码、3:优惠券、4:实物奖品) */
private Integer awardType;

/** 奖品名称 */
private String awardName;

/** 奖品内容「描述、奖品码、sku」 */
private String awardContent;

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.flameking.lottery.domain.strategy.model;
package com.flameking.lottery.domain.strategy.model.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.flameking.lottery.domain.strategy.model.vo;

import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/**
* 策略简要信息
*/
@Getter
@Setter
public class StrategyBriefVO {

/**
* 策略ID
*/
private Long strategyId;

/**
* 策略描述
*/
private String strategyDesc;

/**
* 策略方式「1:单项概率、2:总体概率」
*/
private Integer strategyMode;

/**
* 发放奖品方式「1:即时、2:定时[含活动结束]、3:人工」
*/
private Integer grantType;

/**
* 发放奖品时间
*/
private Date grantDate;

/**
* 扩展信息
*/
private String extInfo;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.flameking.lottery.domain.strategy.model.vo;

import lombok.Getter;
import lombok.Setter;

/**
* 策略明细简要信息
*/
@Getter
@Setter
public class StrategyDetailBriefVO {

/**
* 策略ID
*/
private Long strategyId;

/**
* 奖品ID
*/
private Long awardId;

/**
* 奖品名称
*/
private String awardName;

/**
* 奖品库存
*/
private Integer awardCount;

/**
* 奖品剩余库存
*/
private Integer awardSurplusCount;

/**
* 中奖概率
*/
private Double awardRate;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.flameking.lottery.domain.strategy.model;
package com.flameking.lottery.domain.strategy.model.vo;

import com.flameking.lottery.infrastructure.entity.Strategy;
import com.flameking.lottery.infrastructure.entity.StrategyDetail;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand All @@ -15,7 +13,7 @@ public class StrategyRich {
// 策略ID
private Long strategyId;
// 策略配置
private Strategy strategy;
private StrategyBriefVO strategy;
// 策略明细
private List<StrategyDetail> strategyDetailList;
private List<StrategyDetailBriefVO> strategyDetailList;
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.flameking.lottery.domain.strategy.repository;

import com.flameking.lottery.domain.strategy.model.StrategyRich;
import com.flameking.lottery.infrastructure.entity.Award;
import com.flameking.lottery.domain.strategy.model.vo.StrategyRich;
import com.flameking.lottery.domain.strategy.model.vo.AwardBriefVO;

import java.util.List;

public interface IStrategyRepository {
StrategyRich queryStrategyRich(Long strategyId);
Award queryAward(Long awardId);
AwardBriefVO queryAward(Long awardId);
List<Long> queryAwardIdsWithoutAmount(Long strategyId);
boolean decreaseLeftAwardCount(Long strategyId, Long awardId);
}
6 changes: 6 additions & 0 deletions lottery-project/lottery-infrastructure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@
</parent>

<dependencies>
<dependency>
<groupId>com.flameking</groupId>
<artifactId>lottery-domain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.flameking.lottery.domain.award.repository.impl;
package com.flameking.lottery.infrastructure.repository.impl;

import com.flameking.lottery.domain.award.repository.IAwardRepository;
import org.springframework.stereotype.Component;
Expand Down
Loading

0 comments on commit c82f96e

Please sign in to comment.