change 4 лет назад
Родитель
Сommit
3cbb4a4421

+ 117 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserBankRecordServiceImpl.java

@@ -1,24 +1,40 @@
 package com.zhongzheng.modules.user.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.bo.ActivityTaskUserAddBo;
+import com.zhongzheng.modules.activity.domain.ActivityTaskUser;
+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.service.IActivityTaskUserService;
+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.bo.UserBankQuestionRecordAddBo;
 import com.zhongzheng.modules.user.bo.UserBankRecordAddBo;
 import com.zhongzheng.modules.user.bo.UserBankRecordEditBo;
 import com.zhongzheng.modules.user.bo.UserBankRecordQueryBo;
+import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserBankRecord;
 import com.zhongzheng.modules.user.mapper.UserBankRecordMapper;
 import com.zhongzheng.modules.user.service.IUserBankQuestionRecordService;
 import com.zhongzheng.modules.user.service.IUserBankRecordService;
+import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserBankRecordVo;
+import com.zhongzheng.modules.user.vo.UserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -36,6 +52,22 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
     @Autowired
     private IUserBankQuestionRecordService iUserBankQuestionRecordService;
 
+    @Autowired
+    private IActivityTaskUserService activityTaskUserService;
+
+    @Autowired
+    private IActivityTaskService activityTaskService;
+
+    @Autowired
+    private IActivityTaskTimeService activityTaskTimeService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private IActivityGradeService activityGradeService;
+
+
     @Override
     public UserBankRecordVo queryById(Long recordId){
         UserBankRecord db = this.baseMapper.selectById(recordId);
@@ -73,6 +105,7 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Boolean insertByAddBo(UserBankRecordAddBo bo) {
         UserBankRecord add = BeanUtil.toBean(bo, UserBankRecord.class);
         validEntityBeforeSave(add);
@@ -80,7 +113,9 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
         add.setUpdateTime(DateUtils.getNowTime());
 
         //模拟考试获得用户积分
-
+        if(bo.getType() != null && bo.getType() == 1){
+            checkBank(bo);
+        }
 
         if(this.save(add)){
             Long recordId =  add.getRecordId();
@@ -96,6 +131,54 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
 
     }
 
+    private void checkBank(UserBankRecordAddBo bo){
+        //判断是否是模拟考试
+
+        LambdaQueryWrapper<ActivityTaskUser> practice = Wrappers.lambdaQuery();
+        practice.eq(ActivityTaskUser::getTaskType,5);
+        practice.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
+        practice.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
+        List<ActivityTaskUser> listPractice = activityTaskUserService.list(practice);
+        ActivityTaskVo activityTaskVo = activityTaskService.queryByTaskId(5L);
+        if (activityTaskVo == null){
+            return;
+        }
+        if (!CollectionUtils.isEmpty(listPractice) && listPractice.size() >= activityTaskVo.getCountDay()){
+            return;
+        }
+        ActivityTaskUserAddBo activityTaskUserAddBo = new ActivityTaskUserAddBo();
+        activityTaskUserAddBo.setScore(Convert.toStr(bo.getGrade()));
+        ActivityTaskTimeVo activityTaskTimeVo = activityTaskTimeService.queryPractice(activityTaskUserAddBo);
+
+        //增加用户积分
+        UserVo userVo = userService.queryById(bo.getUserId());
+        if (userVo.getIntegral() == null){
+            userVo.setIntegral(0L);
+        }
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskTimeVo.getIntegral());
+        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()));
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        add.setTaskId(activityTaskVo.getId());
+        add.setTaskType(activityTaskVo.getTaskType());
+        add.setUserId(bo.getUserId());
+        add.setScore(Convert.toStr(activityTaskTimeVo.getIntegral()));
+        activityTaskUserService.save(add);
+        return ;
+    }
+
+    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);
+    }
+
     @Override
     public Boolean updateByEditBo(UserBankRecordEditBo bo) {
         UserBankRecord update = BeanUtil.toBean(bo, UserBankRecord.class);
@@ -120,4 +203,37 @@ public class UserBankRecordServiceImpl extends ServiceImpl<UserBankRecordMapper,
         }
         return this.removeByIds(ids);
     }
+
+
+    //获得今天时间的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);
+
+    }
 }

+ 8 - 1
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityTaskTimeMapper.xml

@@ -11,6 +11,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="integral" column="integral"/>
     </resultMap>
 
+    <resultMap type="com.zhongzheng.modules.activity.vo.ActivityTaskTimeVo" id="ActivityTaskTimeVoResult">
+        <result property="taskId" column="task_id"/>
+        <result property="startRange" column="start_range"/>
+        <result property="endRange" column="end_range"/>
+        <result property="integral" column="integral"/>
+    </resultMap>
+
     <insert id="inserTaskTime" parameterType="map">
         insert into activity_task_time (
             task_id,
@@ -25,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                )
     </insert>
 
-    <select id="queryPractice" parameterType="com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo" resultMap="ActivityTaskTimeResult">
+    <select id="queryPractice" parameterType="com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo" resultMap="ActivityTaskTimeVoResult">
         SELECT
             *
         FROM