| | |
| | | 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 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; |
| | | |
| | |
| | | @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) { |
| | |
| | | } |
| | | |
| | | @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"; |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | |
| | | */ |
| | | 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, "活动开始结束时间不能小于开始时间"); |
| | | } |
| | | |
| | |
| | | throw new LuckyActivityException(2, "活动尚未处于已发布状态"); |
| | | } |
| | | |
| | | luckyActivityManager.startUpActivity(activityId); |
| | | |
| | | //尝试删除消息 |
| | | try { |
| | | LuckyMQ mq = LuckyMQFactory.createStartUpActivity(activity); |
| | | luckyMQService.removeUnSendMsg(mq.getTaskId()); |
| | | luckyActivityManager.startUpActivity(activityId); |
| | | } catch (LuckyMQException e) { |
| | | e.printStackTrace(); |
| | | 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 { |
| | | //审核未通过 |
| | |
| | | |
| | | } |
| | | |
| | | @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) |
| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | |
| | | } |