admin
2020-12-17 d8d576c5220e9d24251b51a59a58271c6e0cb4a4
service-lucky/src/main/java/com/ks/lucky/service/impl/remote/LuckyActivityServiceImpl.java
@@ -1,13 +1,10 @@
package com.ks.lucky.service.impl.remote;
import com.ks.app.exception.AppException;
import com.ks.lib.common.exception.ParamsException;
import com.ks.lucky.exception.LuckyActivityException;
import com.ks.lucky.exception.LuckyMQException;
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.pojo.DO.LuckyActivitySponsorInfo;
import com.ks.lucky.pojo.DO.*;
import com.ks.lucky.query.ActivityDaoQuery;
import com.ks.lucky.remote.service.LuckyActivityService;
import com.ks.lucky.service.LuckyMQService;
@@ -18,6 +15,8 @@
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@@ -45,9 +44,6 @@
    @Resource
    private LuckyMQService luckyMQService;
    private Long getAppId(String appKey) throws AppException {
        return appManager.getAppId(appKey);
    }
    private void notNull(LuckyActivity activity) throws LuckyActivityException {
        if (activity == null) {
@@ -56,17 +52,12 @@
    }
    @Override
    public List<LuckyActivity> getActivityList(String appKey, Long sponsorId, List<Integer> stateList, String key, int page, int pageSize) {
    public List<LuckyActivity> getActivityList(Long appId, Long sponsorId, List<Integer> stateList, String key, int page, int pageSize) {
        ActivityDaoQuery query = new ActivityDaoQuery();
        query.stateList = stateList;
        query.key = key;
        query.sponsorId = sponsorId;
        try {
            query.appId = getAppId(appKey);
        } catch (AppException e) {
            return null;
        }
        query.appId = appId;
        query.start = (page - 1) * pageSize;
        query.count = pageSize;
        query.sort = "start_time desc";
@@ -74,16 +65,13 @@
    }
    @Override
    public long countActivity(String appKey, Long sponsorId, List<Integer> stateList, String key) {
    public long countActivity(Long appId, Long sponsorId, List<Integer> stateList, String key) {
        ActivityDaoQuery query = new ActivityDaoQuery();
        query.stateList = stateList;
        query.key = key;
        query.sponsorId = sponsorId;
        try {
            query.appId = getAppId(appKey);
        } catch (AppException e) {
            return 0L;
        }
        query.appId = appId;
        return luckyActivityMapper.count(query);
    }
@@ -91,7 +79,15 @@
    @Validated
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Long createActivity(LuckyActivity activity) throws LuckyActivityException {
    public Long createActivity(LuckyActivity activity) throws ParamsException, LuckyActivityException {
        activity.setState(LuckyActivity.STATE_NOT_SUBMIT_VERIFY);
        activity.setStateRemarks("未提交审核");
        if (activity.getCreateTime() == null) {
            activity.setCreateTime(new Date());
        }
        luckyActivityMapper.insertSelective(activity);
        return activity.getId();
    }
@@ -115,15 +111,15 @@
     */
    private void checkActivityForPublish(LuckyActivity activity) throws LuckyActivityException {
        notNull(activity);
        if (activity.getStartTime() == null) {
        if (activity.getPreStartTime() == null) {
            throw new LuckyActivityException(1, "活动开始时间未设置");
        }
        if (activity.getStartTime().getTime() < System.currentTimeMillis()) {
        if (activity.getPreStartTime().getTime() < System.currentTimeMillis()) {
            throw new LuckyActivityException(1, "活动开始时间不能小于当前时间");
        }
        if (activity.getFinishTime() != null && activity.getStartTime().getTime() >= activity.getFinishTime().getTime()) {
        if (activity.getPreFinishTime() != null && activity.getPreStartTime().getTime() >= activity.getPreFinishTime().getTime()) {
            throw new LuckyActivityException(1, "活动开始结束时间不能小于开始时间");
        }
@@ -179,22 +175,25 @@
            throw new LuckyActivityException(2, "活动尚未处于已发布状态");
        }
        luckyActivityManager.startUpActivity(activityId);
        try {
            luckyActivityManager.startUpActivity(activityId);
        } catch (LuckyMQException e) {
            throw new LuckyActivityException(e.getCode(), e.getMsg());
        }
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void verifyActivity(Long activityId, boolean pass, String remarks) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        notNull(activity);
        if (activity.getState() != LuckyActivity.STATE_WAITING_VERIFY) {
            throw new LuckyActivityException(2, "活动尚未处于审核状态");
        }
        //审核活动
        //审核通过
        if (pass) {
            //审核通过
            luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_PUBLISH, remarks);
        } else {
            //审核未通过
@@ -203,18 +202,15 @@
    }
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void forceFinishActivity(Long activityId, String remarks) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKey(activityId);
        notNull(activity);
        if (activity.getState() != LuckyActivity.STATE_STARTED) {
            throw new LuckyActivityException(1, "活动未处于已开始状态");
        try {
            luckyActivityManager.finishActivity(activityId, true, remarks);
        } catch (LuckyMQException e) {
            throw new LuckyActivityException(e.getCode(), e.getMsg());
        }
        //设置活动处于强制结束状态
        luckyActivityManager.setState(activityId, LuckyActivity.STATE_FOUCE_FINISH, remarks);
    }
    @Transactional(rollbackFor = Exception.class)
@@ -229,6 +225,26 @@
        //设置活动为未发布状态
        luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_PUBLISH, remarks);
        //删除相关的消息
        LuckyMQ mq = LuckyMQFactory.createStartUpActivity(activity);
        try {
            luckyMQService.removeUnSendMsg(mq.getTaskId());
        } catch (LuckyMQException e) {
            throw new LuckyActivityException(2, e.getMsg());
        }
    }
    @Override
    public void cancelVerify(Long activityId) throws LuckyActivityException {
        LuckyActivity activity = luckyActivityMapper.selectByPrimaryKeyForUpdate(activityId);
        notNull(activity);
        if (activity.getState() != LuckyActivity.STATE_WAITING_VERIFY) {
            throw new LuckyActivityException(1, "活动未处于等待审核状态");
        }
        luckyActivityManager.setState(activityId, LuckyActivity.STATE_NOT_SUBMIT_VERIFY, "主动取消审核");
    }
    @Override
@@ -256,13 +272,62 @@
    }
    @Override
    public List<LuckyActivity> getActivityDetail(List<Long> ids) {
        List<LuckyActivity> activityList = new ArrayList<>();
        for (Long id : ids) {
            LuckyActivity luckyActivity = getActivityDetail(id);
            activityList.add(luckyActivity);
        }
        return activityList;
    }
    @Override
    public void updateActivity(LuckyActivity activity) throws LuckyActivityException {
        if (activity.getState() != null) {
            throw new LuckyActivityException(1, "不能更改活动状态");
        }
        if (!luckyActivityManager.canUpdate(activity.getId())) {
            throw new LuckyActivityException(1, "当前活动不能修改");
        }
        activity.setUpdateTime(new Date());
        luckyActivityMapper.updateByPrimaryKeySelective(activity);
    }
    @Override
    public List<LuckyActivity> getRecommendActivity(Long appId, String uid, int page, int pageSize) {
        ActivityDaoQuery query = new ActivityDaoQuery();
        query.appId = appId;
        query.start = (page - 1) * pageSize;
        query.count = pageSize;
        query.sort = "actual_start_time desc";
        query.stateList = Arrays.asList(new Integer[]{
                LuckyActivity.STATE_STARTED,
                LuckyActivity.STATE_FINISH,
                LuckyActivity.STATE_PRE_OPENED,
                LuckyActivity.STATE_OPENED,
        });
        return luckyActivityMapper.list(query);
    }
    @Override
    public Long getRecommendActivityCount(Long appId, String uid) {
        ActivityDaoQuery query = new ActivityDaoQuery();
        query.appId = appId;
        query.stateList = Arrays.asList(new Integer[]{
                LuckyActivity.STATE_STARTED,
                LuckyActivity.STATE_FINISH,
                LuckyActivity.STATE_PRE_OPENED,
                LuckyActivity.STATE_OPENED,
        });
        return luckyActivityMapper.count(query);
    }
}