Parcourir la source

领取活动积分接口

change il y a 4 ans
Parent
commit
57d0d706f6
15 fichiers modifiés avec 545 ajouts et 26 suppressions
  1. 3 3
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/alioss/OssController.java
  2. 56 4
      zhongzheng-api/src/main/java/com/zhongzheng/controller/activity/ActivityTaskController.java
  3. 3 3
      zhongzheng-api/src/main/java/com/zhongzheng/controller/alioss/OssController.java
  4. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityGradeMapper.java
  5. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityTaskTimeMapper.java
  6. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityGradeService.java
  7. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskTimeService.java
  8. 44 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskUserService.java
  9. 7 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityGradeServiceImpl.java
  10. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskTimeServiceImpl.java
  11. 368 9
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskUserServiceImpl.java
  12. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java
  13. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java
  14. 12 0
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityGradeMapper.xml
  15. 16 0
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityTaskTimeMapper.xml

+ 3 - 3
zhongzheng-admin/src/main/java/com/zhongzheng/controller/alioss/OssController.java

@@ -64,10 +64,10 @@ public class OssController extends BaseController {
      */
     @ApiOperation("上传file图片")
     @PostMapping("/upload")
-    public AjaxResult<Void> upload(OssRequest file) throws Exception {
-        Boolean result = ossService.upload(file);
+    public AjaxResult<String> upload(OssRequest file) throws Exception {
+        String result = ossService.upload(file);
         log.info("服务端生成签名:{}",result);
-        return toAjax(result);
+        return AjaxResult.success("返回图片路径",result);
     }
 
 }

+ 56 - 4
zhongzheng-api/src/main/java/com/zhongzheng/controller/activity/ActivityTaskController.java

@@ -47,13 +47,65 @@ public class ActivityTaskController extends BaseController {
     }
 
     /**
-     * 增加用戶積
+     * 签到获得积
      */
-    @ApiOperation("增加用戶積分")
-    @Log(title = "增加用戶積分", businessType = BusinessType.INSERT)
-    @PostMapping("/userTask")
+    @ApiOperation("签到获得积分")
+    @Log(title = "签到获得积分", businessType = BusinessType.UPDATE)
+    @PostMapping("/signIn")
     public AjaxResult<Void> userTask(@RequestBody ActivityTaskUserAddBo bo) {
         return toAjax(activityTaskUserService.userTask(bo) ? 1 : 0);
     }
 
+    /**
+     * 完善信息
+     */
+    @ApiOperation("完善信息")
+    @Log(title = "完善信息", businessType = BusinessType.UPDATE)
+    @PostMapping("/information")
+    public AjaxResult<Void> information(@RequestBody ActivityTaskUserAddBo bo) throws IllegalAccessException {
+        return toAjax(activityTaskUserService.information(bo) ? 1 : 0);
+    }
+
+
+
+    /**
+     * 邀请朋友
+     */
+    @ApiOperation("邀请朋友")
+    @Log(title = "邀请朋友", businessType = BusinessType.UPDATE)
+    @PostMapping("/invitation")
+    public AjaxResult<Void> invitation(@RequestBody ActivityTaskUserAddBo bo){
+        return toAjax(activityTaskUserService.invitation(bo) ? 1 : 0);
+    }
+
+    /**
+     * 每日分享
+     */
+    @ApiOperation("每日分享")
+    @Log(title = "每日分享", businessType = BusinessType.UPDATE)
+    @PostMapping("/share")
+    public AjaxResult<Void> share(@RequestBody ActivityTaskUserAddBo bo){
+        return toAjax(activityTaskUserService.share(bo) ? 1 : 0);
+    }
+
+    /**
+     * 学习时长
+     */
+    @ApiOperation("学习时长")
+    @Log(title = "学习时长", businessType = BusinessType.UPDATE)
+    @PostMapping("/learnTime")
+    public AjaxResult<Void> learnTime(@RequestBody ActivityTaskUserAddBo bo){
+        return toAjax(activityTaskUserService.learnTime(bo) ? 1 : 0);
+    }
+
+    /**
+     * 模拟考试
+     */
+    @ApiOperation("模拟考试")
+    @Log(title = "模拟考试", businessType = BusinessType.UPDATE)
+    @PostMapping("/practiceTest")
+    public AjaxResult<Void> practiceTest(@RequestBody ActivityTaskUserAddBo bo){
+        return toAjax(activityTaskUserService.practiceTest(bo) ? 1 : 0);
+    }
+
 }

+ 3 - 3
zhongzheng-api/src/main/java/com/zhongzheng/controller/alioss/OssController.java

@@ -62,10 +62,10 @@ public class OssController {
      */
     @ApiOperation("上传file图片")
     @PostMapping("/upload")
-    public AjaxResult upload(OssRequest file) throws Exception {
-        Boolean result = ossService.upload(file);
+    public AjaxResult<String> upload(OssRequest file) throws Exception {
+        String result = ossService.upload(file);
         log.info("服务端生成签名:{}",result);
-        return AjaxResult.success();
+        return AjaxResult.success("返回图片路径url",result);
     }
 
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityGradeMapper.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.activity.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.activity.bo.ActivityGradeQueryBo;
+import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import com.zhongzheng.modules.activity.domain.ActivityGrade;
 import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
 
@@ -22,4 +23,13 @@ public interface ActivityGradeMapper extends BaseMapper<ActivityGrade> {
      * @return 等级信息集合信息
      */
     Collection<ActivityGradeVo> selectGradeList(ActivityGradeQueryBo bo);
+
+
+    /**
+     * 查询等级分页
+     *
+     * @param bo 等级信息
+     * @return 等级信息集合信息
+     */
+    ActivityGradeVo queryByInteger(Long bo);
 }

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityTaskTimeMapper.java

@@ -1,7 +1,9 @@
 package com.zhongzheng.modules.activity.mapper;
 
+import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import com.zhongzheng.modules.activity.domain.ActivityTaskTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.activity.vo.ActivityTaskTimeVo;
 
 /**
  * 模拟考试分数给予积分关联Mapper接口
@@ -18,4 +20,13 @@ public interface ActivityTaskTimeMapper extends BaseMapper<ActivityTaskTime> {
      *
      */
     void inserTaskTime(ActivityTaskTime toBean);
+
+
+    /**
+     * 查询积分分数
+     *
+     * @param bo 时间范围分数
+     *
+     */
+    ActivityTaskTimeVo queryPractice(ActivityTaskUserAddBo bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityGradeService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.activity.bo.ActivityGradeAddBo;
 import com.zhongzheng.modules.activity.bo.ActivityGradeEditBo;
 import com.zhongzheng.modules.activity.bo.ActivityGradeQueryBo;
+import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import com.zhongzheng.modules.activity.domain.ActivityGrade;
 import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
 
@@ -49,4 +50,6 @@ public interface IActivityGradeService extends IService<ActivityGrade> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    ActivityGradeVo queryByInteger(Long bo);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskTimeService.java

@@ -1,5 +1,6 @@
 package com.zhongzheng.modules.activity.service;
 
+import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import com.zhongzheng.modules.activity.domain.ActivityTaskTime;
 import com.zhongzheng.modules.activity.vo.ActivityTaskTimeVo;
 import com.zhongzheng.modules.activity.bo.ActivityTaskTimeQueryBo;
@@ -51,4 +52,6 @@ public interface IActivityTaskTimeService extends IService<ActivityTaskTime> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     void inserTaskTime(ActivityTaskTime toBean);
+
+    ActivityTaskTimeVo queryPractice(ActivityTaskUserAddBo bo);
 }

+ 44 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskUserService.java

@@ -50,5 +50,49 @@ public interface IActivityTaskUserService extends IService<ActivityTaskUser> {
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
+
+	/**
+	 * 签到
+	 * @param bo 签到参数
+	 * @return
+	 */
     boolean userTask(ActivityTaskUserAddBo bo);
+
+
+	/**
+	 * 完善信息
+	 * @param bo 参数
+	 * @return
+	 */
+    boolean information(ActivityTaskUserAddBo bo) throws IllegalAccessException;
+
+
+	/**
+	 * 邀请好友
+	 * @param bo 参数
+	 * @return
+	 */
+	boolean invitation(ActivityTaskUserAddBo bo);
+
+
+	/**
+	 * 每日分享
+	 * @param bo 参数
+	 * @return
+	 */
+	boolean share(ActivityTaskUserAddBo bo);
+
+	/**
+	 * 学习时长
+	 * @param bo 参数
+	 * @return
+	 */
+	boolean learnTime(ActivityTaskUserAddBo bo);
+
+	/**
+	 * 模拟考试
+	 * @param bo 参数
+	 * @return
+	 */
+	boolean practiceTest(ActivityTaskUserAddBo bo);
 }

+ 7 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityGradeServiceImpl.java

@@ -4,10 +4,7 @@ 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.bo.ActivityGradeAddBo;
-import com.zhongzheng.modules.activity.bo.ActivityGradeEditBo;
-import com.zhongzheng.modules.activity.bo.ActivityGradePrivilegeEditBo;
-import com.zhongzheng.modules.activity.bo.ActivityGradeQueryBo;
+import com.zhongzheng.modules.activity.bo.*;
 import com.zhongzheng.modules.activity.domain.ActivityConfiguration;
 import com.zhongzheng.modules.activity.domain.ActivityGrade;
 import com.zhongzheng.modules.activity.domain.ActivityGradePrivilege;
@@ -191,4 +188,10 @@ public class ActivityGradeServiceImpl extends ServiceImpl<ActivityGradeMapper, A
         ids.stream().forEach(id -> activityGradeArrayList.add(new ActivityGrade().setId(id)));
         return this.updateBatchById(activityGradeArrayList);
     }
+
+    @Override
+    public ActivityGradeVo queryByInteger(Long bo) {
+
+        return baseMapper.queryByInteger(bo);
+    }
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskTimeServiceImpl.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.activity.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -99,4 +100,9 @@ public class ActivityTaskTimeServiceImpl extends ServiceImpl<ActivityTaskTimeMap
     public void inserTaskTime(ActivityTaskTime toBean) {
         baseMapper.inserTaskTime(toBean);
     }
+
+    @Override
+    public ActivityTaskTimeVo queryPractice(ActivityTaskUserAddBo bo) {
+        return baseMapper.queryPractice(bo);
+    }
 }

+ 368 - 9
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskUserServiceImpl.java

@@ -1,16 +1,22 @@
 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.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
+import com.zhongzheng.modules.activity.domain.ActivityGrade;
 import com.zhongzheng.modules.activity.service.IActivityGradeService;
 import com.zhongzheng.modules.activity.service.IActivityTaskService;
+import com.zhongzheng.modules.activity.service.IActivityTaskTimeService;
 import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
+import com.zhongzheng.modules.activity.vo.ActivityTaskTimeVo;
 import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
+import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserVo;
+import lombok.Data;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,11 +29,15 @@ import com.zhongzheng.modules.activity.domain.ActivityTaskUser;
 import com.zhongzheng.modules.activity.mapper.ActivityTaskUserMapper;
 import com.zhongzheng.modules.activity.vo.ActivityTaskUserVo;
 import com.zhongzheng.modules.activity.service.IActivityTaskUserService;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.List;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -48,6 +58,9 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
     @Autowired
     private IActivityTaskService activityTaskService;
 
+    @Autowired
+    private IActivityTaskTimeService activityTaskTimeService;
+
 
     @Override
     public ActivityTaskUserVo queryById(Long userId){
@@ -117,22 +130,281 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
         return this.removeByIds(ids);
     }
 
+    /**
+     * 签到领取积分
+     *
+     * @param bo
+     * @return
+     */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean userTask(ActivityTaskUserAddBo bo) {
+        //判断是否是签到
+        if (bo.getTaskType() != 0){
+            throw new IllegalArgumentException("该请求是签到请求");
+        }
+
+        //判断是否领过过
+        validReceiver(bo);
+
+        //增加用户积分,并判断是否达到对应等级,更新等级
+        UserVo userVo = userService.queryById(bo.getUserId());
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+
+        //签到逻辑连续签到获得累加积分,断了为初始积分
+        LambdaQueryWrapper<ActivityTaskUser> lqw =Wrappers.lambdaQuery();;
+        lqw.eq(bo.getUserId() != null,ActivityTaskUser::getUserId,bo.getUserId());
+        lqw.eq(bo.getTaskType() != null, ActivityTaskUser::getTaskType, bo.getTaskType());
+        lqw.between( ActivityTaskUser::getCreateTime, getDateOne(),DateUtils.getNowTime());
+        List<ActivityTaskUser> list = this.list(lqw);
+        List<SignIn> signIn = new ArrayList<>();
+        list.forEach(s -> {
+            try {
+                signIn.add(new SignIn(s.getCreateTime().toString()));
+            } catch (ParseException e) {
+                e.printStackTrace();
+            }
+        });
+
+        //连续签到的天数,不包括今天,即第一天1积分第二天2积分
+        int continuousSignInDay = getContinuousSignInDay(signIn);
+        //天数*每次累加分数得出今天分数
+        int fen = activityTaskVo.getAccIntegral()*continuousSignInDay;
+        Long score = userVo.getIntegral()+fen;
+
+        //分数达到的等级赋予学生等级
         //增加用户领取记录
         ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
-        //判断是否领过过
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(score);
+        add.setScore(Convert.toStr(fen));
+
+        //增加用户积分和等级
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,score);
+
+        return this.save(add);
+    }
+
+
+
+    /**
+     * 完善信息领取积分
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean information(ActivityTaskUserAddBo bo) throws IllegalAccessException {
+        //判断是否是完善信息
+        if (bo.getTaskType() != 1){
+            throw new IllegalArgumentException("该请求是完善信息");
+        }
         validReceiver(bo);
+
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+
+       //得出已领取的分数是多少
+        LambdaQueryWrapper<ActivityTaskUser> lqw =Wrappers.lambdaQuery();;
+        lqw.eq(bo.getUserId() != null,ActivityTaskUser::getUserId,bo.getUserId());
+        lqw.eq(bo.getTaskType() != null, ActivityTaskUser::getTaskType, bo.getTaskType());
+        List<ActivityTaskUser> list = this.list(lqw);
+        BigDecimal bigDecimal = new BigDecimal("0");
+        if (!CollectionUtils.isEmpty(list)) {
+            for (ActivityTaskUser activityTaskUser : list) {
+                bigDecimal = bigDecimal.add(new BigDecimal(activityTaskUser.getScore()));
+            }
+        }
+
+        //userVO用户  有参值/总数 得出比例 乘以分数 四舍五入
+        UserVo userVo = userService.queryById(bo.getUserId());
+        Field[] field = userVo.getClass().getDeclaredFields();
+        Integer integer = countUser(userVo);
+        String num = String.valueOf(integer/ field.length);
+        BigDecimal result5 = new BigDecimal(activityTaskVo.getEndIntegral().toString()).divide(new BigDecimal(num),BigDecimal.ROUND_HALF_UP);
+
+        //增加用户领取记录
+        ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
+        add.setScore(bigDecimal.subtract(result5).toString());
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        //增加用户积分,并判断是否达到对应等级,更新等级
+
+        //增加用户积分更新等级
+        Long Integer = userVo.getIntegral()+ Convert.toLong(bigDecimal.subtract(result5));
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(Integer);
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,Integer);
+
+        return this.save(add);
+    }
+
+    /**
+     * 邀请好友
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean invitation(ActivityTaskUserAddBo bo) {
+        //判断是否是邀请好友
+        if (bo.getTaskType() != 2){
+            throw new IllegalArgumentException("该请求是邀请好友");
+        }
+        validReceiver(bo);
+
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+
+        //增加用户积分
         UserVo userVo = userService.queryById(bo.getUserId());
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskVo.getStartIntegral());
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,userVo.getIntegral()+activityTaskVo.getStartIntegral());
+
+        //增加领取记录
+        ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
+        add.setScore(Convert.toStr(activityTaskVo.getStartIntegral()));
+        return this.save(add);
+    }
+
+
+    /**
+     * 每日分享
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean share(ActivityTaskUserAddBo bo) {
+        //判断是否是每日分享
+        if (bo.getTaskType() != 3){
+            throw new IllegalArgumentException("该请求是完善信息");
+        }
+        validReceiver(bo);
+
         ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
 
+        //增加用户积分
+        UserVo userVo = userService.queryById(bo.getUserId());
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskVo.getStartIntegral());
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,userVo.getIntegral()+activityTaskVo.getStartIntegral());
+
+        //增加领取记录
+        ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
+        add.setScore(Convert.toStr(activityTaskVo.getStartIntegral()));
         return this.save(add);
     }
 
+
+    /**
+     * 学习时长
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean learnTime(ActivityTaskUserAddBo bo) {
+        //判断是否是每日分享
+        if (bo.getTaskType() != 4){
+            throw new IllegalArgumentException("该请求是完善信息");
+        }
+        validReceiver(bo);
+
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+
+        //增加用户积分
+        UserVo userVo = userService.queryById(bo.getUserId());
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskVo.getStartIntegral());
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,userVo.getIntegral()+activityTaskVo.getStartIntegral());
+
+        //增加领取记录
+        ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
+        add.setScore(Convert.toStr(activityTaskVo.getStartIntegral()));
+        return this.save(add);
+    }
+
+
+    /**
+     * 模拟考试
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean practiceTest(ActivityTaskUserAddBo bo) {
+        //判断是否是模拟考试
+        if (bo.getTaskType() != 5){
+            throw new IllegalArgumentException("该请求是模拟考试");
+        }
+        validReceiver(bo);
+
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+        bo.setTaskId(activityTaskVo.getId());
+        ActivityTaskTimeVo activityTaskTimeVo = activityTaskTimeService.queryPractice(bo);
+
+        //增加用户积分
+        UserVo userVo = userService.queryById(bo.getUserId());
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskVo.getStartIntegral());
+        userVo.setUserLevel(list1.getGrade());
+        increaseUser(userVo,userVo.getIntegral()+Convert.toLong(activityTaskTimeVo.getIntegral()));
+
+        //增加领取记录
+        ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
+        add.setScore(Convert.toStr(activityTaskVo.getStartIntegral()));
+        return this.save(add);
+    }
+
+    private Boolean increaseUser(UserVo userVo,Long score){
+        User user = BeanUtil.toBean(userVo, User.class);
+        user.setIntegral(score);
+        user.setUpdateTime(DateUtils.getNowTime());
+        return userService.updateById(user);
+    }
+
+    /**
+     *
+     * @author change
+     * @date 2021/6/23 14:38
+     * @param userVo
+     * @return Integer
+     */
+    public Integer  countUser(UserVo userVo) throws IllegalAccessException {
+        // Java的反射
+        Field[] field = userVo.getClass().getDeclaredFields();
+        int count = 0;
+        for(int i=0; i<field.length; i++){
+            Field f = field[i];
+            f.setAccessible(true);
+            if (f.get(userVo) != null){
+                count++;
+            }
+        }
+        return count;
+    }
+
+
+
+    //获得过去七天的日期
+    private Long getDateOne(){
+        Calendar c = Calendar.getInstance();
+        //过去七天
+        c.setTime(new Date());
+        c.add(Calendar.DATE, - 7);
+        Date d = c.getTime();
+
+        return d.getTime();
+    }
+
+
     private void validReceiver(ActivityTaskUserAddBo bo) {
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
         switch (bo.getTaskType()){
             //每日签到逻辑,当日有领取即无法签到
             case 0:
@@ -151,7 +423,11 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
                 useWan.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
                 useWan.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
                 List<ActivityTaskUser> listWan = this.list(useWan);
-                if (!CollectionUtils.isEmpty(listWan) && listWan.size() > 0){
+                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;
@@ -161,10 +437,30 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
                 LambdaQueryChainWrapper<ActivityTaskUser> useMei = 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 = this.list(useMei);
-                ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
-                if (!CollectionUtils.isEmpty(listMei) && listMei.size() > 0){
-                    throw new IllegalArgumentException("");
+                if (!CollectionUtils.isEmpty(listMei) && listMei.size() == 3){
+                    throw new IllegalArgumentException("当日分享已达上线");
+                }
+                break;
+            case 4:
+                LambdaQueryChainWrapper<ActivityTaskUser> study = 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 = this.list(study);
+                if (!CollectionUtils.isEmpty(listStudy) && listStudy.size() == 3){
+                    throw new IllegalArgumentException("当日领取连续学习积分已达上线");
+                }
+                break;
+            case 5:
+                LambdaQueryChainWrapper<ActivityTaskUser> practice = 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 = this.list(practice);
+                if (!CollectionUtils.isEmpty(listPractice) && listPractice.size() > 0){
+                    throw new IllegalArgumentException("当日领取连续模拟考试积分已达上线");
                 }
                 break;
         }
@@ -203,5 +499,68 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
 
     }
 
+    /**
+     * 连续签到天数
+     *
+     * @return int
+     * @Author change
+     * @Date 2019-08-15 17:16:01
+     * @Param
+     **/
+    private static int getContinuousSignInDay(List<SignIn> signInList) {
+        //continuousDay 连续签到数
+        int continuousDay = 1;
+        boolean todaySignIn = false;
+        Date today = new Date();
+        for (int i = 0; i < signInList.size(); i++) {
+            SignIn signIn = signInList.get(i);
+            int intervalDay = distanceDay(today, signIn.getSignInDay());
+            //当天签到
+            if (intervalDay == 0 && i == 0) {
+                todaySignIn = true;
+            }
+            else if (intervalDay == continuousDay) {
+                continuousDay++;
+            }else {
+                //不连续,终止判断
+                break;
+            }
+        }
+        if (!todaySignIn) {
+            continuousDay--;
+        }
+        return continuousDay;
+    }
+
+    /**
+     * 两个日期对比间隔天数
+     *
+     * @param smallDay
+     * @return boolean
+     * @Author change
+     * @Date 2019-08-13 18:42:41
+     * @Param largeDay
+     **/
+    private static int distanceDay(Date largeDay, Date smallDay) {
+        int day = (int) ((largeDay.getTime() - smallDay.getTime()) / (1000 * 60 * 60 * 24));
+        return day;
+    }
+
+    @Data
+    static
+    class SignIn{
+        private Date signInDay;
+
+        public SignIn(){
+
+        }
+
+        public SignIn(String day) throws ParseException {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            String sd = sdf.format(new Date(Long.parseLong(String.valueOf(day))));
+            signInDay = sdf.parse(day);
+        }
+    }
+
 
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java

@@ -15,7 +15,7 @@ public interface OssService {
 
     ResultBean callback(HttpServletRequest request);
 
-    Boolean upload(OssRequest base) throws Exception;
+    String upload(OssRequest base) throws Exception;
 
     String uploadBase64(String fileStr);
 

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java

@@ -152,7 +152,7 @@ public class OssServiceImpl implements OssService {
     }
 
     @Override
-    public Boolean upload(OssRequest file){
+    public String upload(OssRequest file){
         try{
             //获取上传文件输入流
             InputStream inputStream = file.getFile().getInputStream();
@@ -170,7 +170,7 @@ public class OssServiceImpl implements OssService {
             ossClient.shutdown();
 
                 System.out.println(fileName);
-            return true;
+            return fileName;
         }catch(Exception e) {
             e.printStackTrace();
             throw new IllegalStateException("上传失败");

+ 12 - 0
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityGradeMapper.xml

@@ -47,4 +47,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE 1=1
     </select>
 
+    <select id="queryByInteger" parameterType="Long" resultMap="ActivityGradeVoResult">
+        SELECT
+            *
+        FROM
+            activity_grade
+        WHERE 1=1
+        <if test="bo != null" >
+            AND #{bo} BETWEEN need_integral_start AND need_integral_end
+        </if>
+        limit 1
+    </select>
+
 </mapper>

+ 16 - 0
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityTaskTimeMapper.xml

@@ -24,4 +24,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                    #{integral}
                )
     </insert>
+
+    <select id="queryPractice" parameterType="com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo" resultMap="ActivityTaskTimeResult">
+        SELECT
+            *
+        FROM
+            activity_task_time
+        WHERE
+            1 = 1
+        <if test="taskId != null" >
+            AND task_id = #{taskId}
+        </if>
+        <if test="score != null" >
+            AND #{score} BETWEEN start_range AND end_range
+        </if>
+        LIMIT 1
+    </select>
 </mapper>