package com.ks.lucky.util.mq.consumer;
|
|
import com.ks.lucky.exception.*;
|
import com.ks.lucky.pojo.DTO.ActivityMQMsg;
|
import com.ks.lucky.remote.service.LuckyActivityOpenService;
|
import com.ks.lucky.service.impl.LuckyActivityManager;
|
import com.ks.lucky.util.LoggerUtil;
|
import com.ks.lucky.util.mq.CMQManager;
|
import com.ks.lucky.utils.mq.CMQConsumeRunner;
|
import org.yeshi.utils.mq.JobThreadExecutorServiceImpl;
|
|
import javax.annotation.Resource;
|
import java.util.Iterator;
|
import java.util.Map;
|
|
public class ActivityConsumer implements CMQConsumeRunner {
|
|
@Resource
|
private LuckyActivityManager luckyActivityManager;
|
|
@Resource
|
private LuckyActivityOpenService luckyActivityOpenService;
|
|
private void preOpen(Long activityId, String handler) {
|
|
try {
|
luckyActivityOpenService.preOpenAward(activityId);
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyActivityAwardException e) {
|
e.printStackTrace();
|
} catch (LuckyActivityOpenException e) {
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
}
|
}
|
|
|
@Override
|
public void start() {
|
new JobThreadExecutorServiceImpl().run(new Runnable() {
|
@Override
|
public void run() {
|
Map<String, ActivityMQMsg> map = CMQManager.getInstance().consumeActivityMsg(16);
|
if (map != null) {
|
for (Iterator<String> its = map.keySet().iterator(); its.hasNext(); ) {
|
String handler = its.next();
|
ActivityMQMsg msg = map.get(handler);
|
if (msg != null) {
|
switch (msg.getType()) {
|
case ActivityMQMsg.TYPE_EXEC_START:
|
LoggerUtil.activityLogger.info("执行启动活动:"+msg.getActivityId());
|
//启动活动
|
try {
|
luckyActivityManager.startUpActivity(msg.getActivityId());
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
e.printStackTrace();
|
} catch (LuckyMQException e) {
|
e.printStackTrace();
|
}
|
|
break;
|
case ActivityMQMsg.TYPE_EXEC_FINSIH:
|
LoggerUtil.activityLogger.info("执行结束活动:"+msg.getActivityId());
|
//结束活动
|
try {
|
luckyActivityManager.finishActivity(msg.getActivityId(), false, "定时结束");
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyMQException e) {
|
e.printStackTrace();
|
}
|
|
break;
|
|
|
case ActivityMQMsg.TYPE_REACH_MIN_PERSON:
|
LoggerUtil.activityLogger.info("参与人数到达最低开奖人数:"+msg.getActivityId());
|
try {
|
luckyActivityOpenService.reachMinPerson(msg.getActivityId());
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
}
|
break;
|
|
case ActivityMQMsg.TYPE_REACH_MAX_PERSON:
|
LoggerUtil.activityLogger.info("参与人数到达最大参与人数:"+msg.getActivityId());
|
try {
|
luckyActivityManager.finishActivity(msg.getActivityId(), false, "活动达到最大开奖人数");
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyMQException e) {
|
e.printStackTrace();
|
}
|
|
|
break;
|
|
case ActivityMQMsg.TYPE_REACH_OPEN_TIME:
|
LoggerUtil.activityLogger.info("活动达到开奖时间:"+msg.getActivityId());
|
try {
|
luckyActivityManager.finishActivity(msg.getActivityId(), false, "活动达到开奖时间");
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyMQException e) {
|
e.printStackTrace();
|
}
|
break;
|
|
case ActivityMQMsg.TYPE_OPEN_SHOW:
|
LoggerUtil.activityLogger.info("显示开奖结果:"+msg.getActivityId());
|
try {
|
luckyActivityOpenService.showOpenAward(msg.getActivityId());
|
CMQManager.getInstance().deleteActivityMsg(handler);
|
} catch (LuckyActivityException e) {
|
e.printStackTrace();
|
} catch (LuckyActivityOpenInfoException e) {
|
e.printStackTrace();
|
}
|
break;
|
|
case ActivityMQMsg.TYPE_EXEC_OPEN:
|
LoggerUtil.activityLogger.info("执行预开奖:"+msg.getActivityId());
|
preOpen(msg.getActivityId(), handler);
|
break;
|
}
|
}
|
}
|
}
|
}
|
});
|
|
|
}
|
|
@Override
|
public void destroy() {
|
|
}
|
}
|