|
|
@@ -1,10 +1,13 @@
|
|
|
package com.zhongzheng.modules.activity.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
import com.zhongzheng.modules.activity.domain.ActivityTaskTime;
|
|
|
+import com.zhongzheng.modules.activity.domain.ActivityTaskUser;
|
|
|
import com.zhongzheng.modules.activity.service.IActivityTaskTimeService;
|
|
|
+import com.zhongzheng.modules.activity.service.IActivityTaskUserService;
|
|
|
import com.zhongzheng.modules.activity.vo.ActivityTaskTimeVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -20,11 +23,10 @@ import com.zhongzheng.modules.activity.mapper.ActivityTaskMapper;
|
|
|
import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
|
|
|
import com.zhongzheng.modules.activity.service.IActivityTaskService;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.List;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -39,6 +41,9 @@ public class ActivityTaskServiceImpl extends ServiceImpl<ActivityTaskMapper, Act
|
|
|
@Autowired
|
|
|
private IActivityTaskTimeService activityTaskTimeService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IActivityTaskUserService activityTaskUserService;
|
|
|
+
|
|
|
@Override
|
|
|
public ActivityTaskVo queryById(Long id){
|
|
|
ActivityTask db = this.baseMapper.selectById(id);
|
|
|
@@ -165,4 +170,120 @@ public class ActivityTaskServiceImpl extends ServiceImpl<ActivityTaskMapper, Act
|
|
|
ActivityTask db = baseMapper.queryByTaskId(taskId);
|
|
|
return BeanUtil.toBean(db,ActivityTaskVo.class);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ActivityTaskVo> querylistUser(ActivityTaskQueryBo bo) {
|
|
|
+ LambdaQueryWrapper<ActivityTask> lqwActivity = Wrappers.lambdaQuery();
|
|
|
+ lqwActivity.eq(ActivityTask::getStatus, 1);
|
|
|
+ List<ActivityTaskVo> activityTaskVos = entity2Vo(this.list(lqwActivity));
|
|
|
+ activityTaskVos.stream().forEach(l -> {
|
|
|
+ if (l.getId() != null && l.getTaskType() == 5) {
|
|
|
+ LambdaQueryWrapper<ActivityTaskTime> lqwTime = Wrappers.lambdaQuery();
|
|
|
+ lqwTime.eq(l.getId() != null,ActivityTaskTime::getTaskId,l.getId());
|
|
|
+ List<ActivityTaskTimeVo> activityTaskTimeVo = entity2TimeActivityVo(activityTaskTimeService.list(lqwTime));
|
|
|
+ l.setActivityTaskTimeVo(activityTaskTimeVo);
|
|
|
+ }
|
|
|
+ ActivityTaskVo activityTaskVo = queryByTaskId(Convert.toLong(l.getTaskType()));
|
|
|
+ switch (l.getTaskType()){
|
|
|
+ //每日签到逻辑,当日有领取即无法签到
|
|
|
+ case 0:
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> lqw = Wrappers.lambdaQuery();
|
|
|
+ lqw.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
|
|
|
+ lqw.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
+ lqw.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
|
|
|
+ List<ActivityTaskUser> list = activityTaskUserService.list(lqw);
|
|
|
+ if (!CollectionUtils.isEmpty(list) && list.size() > 0){
|
|
|
+ throw new IllegalArgumentException("已签到请勿重复签到");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //完善信息 按照百分比求得乘以分数得到奖励分数
|
|
|
+ case 1:
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> useWan = Wrappers.lambdaQuery();
|
|
|
+ useWan.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
|
|
|
+ useWan.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
+ List<ActivityTaskUser> listWan = activityTaskUserService.list(useWan);
|
|
|
+ BigDecimal bigDecimal = new BigDecimal("0");
|
|
|
+ for (ActivityTaskUser activityTaskUser : listWan) {
|
|
|
+ bigDecimal = bigDecimal.add(new BigDecimal(activityTaskUser.getScore()));
|
|
|
+ }
|
|
|
+ if (bigDecimal.compareTo(new BigDecimal(activityTaskVo.getAccIntegral())) != 0){
|
|
|
+ throw new IllegalArgumentException("已完善信息领取完成,无法再次领取");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ //每日分享,大于三次达到上线
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> useMei = Wrappers.lambdaQuery();
|
|
|
+ useMei.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
|
|
|
+ useMei.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
+ useMei.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
|
|
|
+ List<ActivityTaskUser> listMei = activityTaskUserService.list(useMei);
|
|
|
+ if (!CollectionUtils.isEmpty(listMei) && listMei.size() == 3){
|
|
|
+ throw new IllegalArgumentException("当日分享已达上线");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ //连续学习,大于三次达到上线
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> study = Wrappers.lambdaQuery();
|
|
|
+ study.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
|
|
|
+ study.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
+ study.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
|
|
|
+ List<ActivityTaskUser> listStudy = activityTaskUserService.list(study);
|
|
|
+ Integer score = 0;
|
|
|
+ for (ActivityTaskUser activityTaskUser : listStudy) {
|
|
|
+ score = score+ Convert.toInt(activityTaskUser.getScore());
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(listStudy) && activityTaskVo.getEndIntegral().equals(score)){
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> practice = Wrappers.lambdaQuery();
|
|
|
+ practice.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
|
|
|
+ practice.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
+ practice.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
|
|
|
+ List<ActivityTaskUser> listPractice = activityTaskUserService.list(practice);
|
|
|
+ if (!CollectionUtils.isEmpty(listPractice) && listPractice.size() > 0){
|
|
|
+ throw new IllegalArgumentException("当日领取连续模拟考试积分已达上线");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return activityTaskVos;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //获得今天时间的0点
|
|
|
+ public static int getTimesmorning(){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
+
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+
|
|
|
+ cal.set(Calendar.MILLISECOND, 0);
|
|
|
+
|
|
|
+ return (int) (cal.getTimeInMillis()/1000);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //获得当天24点时间
|
|
|
+ public static int getTimesnight(){
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+
|
|
|
+ cal.set(Calendar.HOUR_OF_DAY, 24);
|
|
|
+
|
|
|
+ cal.set(Calendar.SECOND, 0);
|
|
|
+
|
|
|
+ cal.set(Calendar.MINUTE, 0);
|
|
|
+
|
|
|
+ cal.set(Calendar.MILLISECOND, 0);
|
|
|
+
|
|
|
+ return (int) (cal.getTimeInMillis()/1000);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|