工作周记

完成任务:紫钻官网挖宝藏页面买道具送一次抽奖,主要逻辑:抽奖逻辑及支付逻辑,奖品的发放逻辑:父类BaseProcessor里有一个PresentReleaseService,PresentReleaseService里有个map,每当一个子类Processor初始化时(Spring自动扫描),就往PresentReleaseService里的map里放自己(和奖品类型对应),这样PresentReleaseService只有一个,map也只有一个,发放的时候根据奖品类型从map里拿Processor,每个子类Processor重写getProcessorType()方法和release()方法

public abstract class BaseProcessor implements ReleaseProcessor { 
    @Autowired
    protected PresentReleaseService presentReleaseService;
    @PostConstruct
    public void registerProcesser() {
presentReleaseService.register(getProcessorType(),this);
    }
    abstract protected int getProcessorType();
}

public class PresentReleaseServiceImpl implements PresentReleaseService {

private Map<Integer, ReleaseProcessor> releaseProcessors = new HashMap<Integer, ReleaseProcessor>();

 @Override
    public void register(Integer type, ReleaseProcessor releaseProcessor) {
ReleaseProcessor previousReleaseProcessor = releaseProcessors.put(type, releaseProcessor);
if (previousReleaseProcessor != null) {
   throw new RuntimeException("注册器检测到相同的奖品发放逻辑,请保证发放逻辑的唯一性。冲突的奖品类型为:" + type);
}
    }

}

// 发放逻辑

ReleaseProcessor releaseProcesser = releaseProcessors.get(present.getType());
if (releaseProcesser != null) {
result = releaseProcesser.release(uid, present, remark);

}


下单验证器Validator逻辑也是这样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值