From 4d756db62a276bc9521c769f3842964671666471 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 30 十一月 2020 15:27:34 +0800 Subject: [PATCH] 抽奖服务完善 --- service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java | 122 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 108 insertions(+), 14 deletions(-) diff --git a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java index f5aa521..fced767 100644 --- a/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java +++ b/service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityOpenServiceImpl.java @@ -1,36 +1,130 @@ package com.ks.lucky.service.impl.remote; +import com.ks.lucky.exception.LuckyActivityAwardException; import com.ks.lucky.exception.LuckyActivityException; +import com.ks.lucky.mapper.LuckyActivityMapper; import com.ks.lucky.pojo.DO.LuckyActivity; +import com.ks.lucky.pojo.DO.LuckyActivityAwards; +import com.ks.lucky.pojo.DO.LuckyActivityOpenInfo; import com.ks.lucky.remote.service.LuckyActivityOpenService; +import com.ks.lucky.service.impl.LuckyActivityAwardManager; +import com.ks.lucky.service.impl.LuckyActivityAwardResultManager; +import com.ks.lucky.service.impl.LuckyActivityJoinManager; +import com.ks.lucky.service.impl.LuckyActivityOpenInfoManager; +import com.ks.lucky.util.LuckyRunUtil; import org.apache.dubbo.config.annotation.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.Set; @Service(version = "1.0") public class LuckyActivityOpenServiceImpl implements LuckyActivityOpenService { - @Override - public List<LuckyActivity> listValidActivity(String appKey, int page, int pageSize) { - return null; + + @Resource + private LuckyActivityAwardManager luckyActivityAwardManager; + + @Resource + private LuckyActivityMapper luckyActivityMapper; + + @Resource + private LuckyActivityOpenInfoManager luckyActivityOpenInfoManager; + + @Resource + private LuckyActivityJoinManager luckyActivityJoinManager; + + @Resource + private LuckyActivityAwardResultManager luckyActivityAwardResultManager; + + + /** + * 鏄惁鍙互寮�濂栦簡 + * + * @param activity + * @return + */ + private boolean canOpen(LuckyActivity activity) throws LuckyActivityException { + long now = System.currentTimeMillis(); + + if (activity.getState() != LuckyActivity.STATE_FINISH) { + throw new LuckyActivityException(1, "娲诲姩灏氭湭缁撴潫"); + } + + LuckyActivityOpenInfo openInfo = luckyActivityOpenInfoManager.getOpenInfo(activity.getId()); + + //鏈揪鍒版渶浣庡紑濂栦汉鏁� + if (activity.getCurrentPersonCount() < openInfo.getMinPersonCount()) { + throw new LuckyActivityException(2, "灏氭湭杈惧埌鏈�浣庡紑濂栦汉鏁�"); + } + + //鍒拌揪鏈�浣庡紑濂栦汉鏁板氨寮�濂� + if (activity.getPreOpenTime() != null) { + if (activity.getPreOpenTime().getTime() > now) { + throw new LuckyActivityException(2, "灏氭湭杈惧埌寮�濂栨椂闂�"); + } + } + return true; } + + @Transactional(rollbackFor = Exception.class) @Override - public long countValidActivity(String appKey) { - return 0; + public void preOpenAward(Long activityId) throws LuckyActivityException, LuckyActivityAwardException { + //鍒ゆ柇娲诲姩鐘舵�� + LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); + if (activity == null) { + throw new LuckyActivityException(LuckyActivityException.CODE_NOT_EXIST, "娲诲姩涓嶅瓨鍦�"); + } + + + //鍒ゆ柇鏄惁杈惧埌寮�濂栨潯浠� + canOpen(activity); + //------------璁$畻寮�濂�------------- + + //鑾峰彇濂栭」鏁版嵁 + List<LuckyActivityAwards> awardsList = luckyActivityAwardManager.getAwardList(activityId); + if (awardsList == null || awardsList.size() == 0) { + throw new LuckyActivityAwardException(LuckyActivityAwardException.CODE_NOT_EXIST, "鏃犲椤逛俊鎭�"); + } + + //鑾峰彇鐢ㄦ埛鏁版嵁 + Map<String, Integer> data = luckyActivityJoinManager.getJoinData(activityId); + for (LuckyActivityAwards awards : awardsList) { + //鑾峰彇涓鐢ㄦ埛ID + Set<String> uids = LuckyRunUtil.compute(data, awards.getCount()); + //淇濆瓨寮�濂栫粨鏋� + luckyActivityAwardResultManager.addRecord(uids, awards.getActivityId(), awards.getId()); + } + + + //鏇存柊鐘舵�� + LuckyActivity update = new LuckyActivity(); + update.setId(activityId); + update.setState(LuckyActivity.STATE_PRE_OPEND); + update.setStateRemarks("棰勫紑濂栨垚鍔�"); + update.setUpdateTime(new Date()); + luckyActivityMapper.updateByPrimaryKeySelective(update); } + @Transactional(rollbackFor = Exception.class) @Override - public void createActivity(LuckyActivity activity) throws LuckyActivityException { + public void showOpenAward(Long activityId) throws LuckyActivityException { + LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId); + if (activity.getState() != LuckyActivity.STATE_PRE_OPEND) { + throw new LuckyActivityException(1, "灏氭湭寮�濂�"); + } + LuckyActivity update = new LuckyActivity(); + update.setId(activityId); + update.setUpdateTime(new Date()); + update.setState(LuckyActivity.STATE_OPENED); + update.setStateRemarks("宸插紑濂�"); + luckyActivityMapper.updateByPrimaryKeySelective(update); + luckyActivityAwardResultManager.setResultShow(activityId); } - @Override - public LuckyActivity getActivityDetail(Long id) { - return null; - } - @Override - public void updateActivity(LuckyActivity activity) throws LuckyActivityException { - - } } -- Gitblit v1.8.0