Jelajahi Sumber

Merge branch 'dev'

change 4 tahun lalu
induk
melakukan
b9c8c94c4c
36 mengubah file dengan 774 tambahan dan 83 penghapusan
  1. 12 0
      zhongzheng-api/src/main/java/com/zhongzheng/controller/activity/ActivityConfigurationController.java
  2. 2 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/activity/ActivityTaskController.java
  3. 3 2
      zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java
  4. 62 30
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java
  5. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityConfigurationMapper.java
  6. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityTaskMapper.java
  7. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityConfigurationService.java
  8. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskService.java
  9. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskUserService.java
  10. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityConfigurationServiceImpl.java
  11. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskServiceImpl.java
  12. 38 13
      zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskUserServiceImpl.java
  13. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionBankServiceImpl.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseQueryBo.java
  15. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  16. 9 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamNoteServiceImpl.java
  17. 33 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityAddBo.java
  18. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityEditBo.java
  19. 46 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityQueryBo.java
  20. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java
  21. 45 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderActivity.java
  22. 11 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/CouponMapper.java
  23. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderActivityMapper.java
  24. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/ICouponService.java
  25. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderActivityService.java
  26. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/CouponServiceImpl.java
  27. 100 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderActivityServiceImpl.java
  28. 68 29
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  29. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderActivityVo.java
  30. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java
  31. 23 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java
  32. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/RanKingUser.java
  33. 42 0
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityConfigurationMapper.xml
  34. 5 0
      zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityTaskMapper.xml
  35. 15 2
      zhongzheng-system/src/main/resources/mapper/modules/order/CouponMapper.xml
  36. 16 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderActivityMapper.xml

+ 12 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/activity/ActivityConfigurationController.java

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.activity.bo.ActivityConfigurationUseAddBo;
 import com.zhongzheng.modules.activity.service.IActivityConfigurationService;
 import com.zhongzheng.modules.activity.service.IActivityConfigurationUseService;
 import com.zhongzheng.modules.activity.vo.ActivityConfigurationVo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.service.ICourseService;
 import com.zhongzheng.modules.course.vo.CourseConfigurationVo;
 import com.zhongzheng.modules.order.bo.CouponQueryBo;
@@ -61,6 +62,17 @@ public class ActivityConfigurationController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询活动配置列表
+     */
+    @ApiOperation("查询课程所做的活动")
+    @GetMapping("/listConfig")
+    public TableDataInfo<ActivityConfigurationVo> listConfiguration(CourseQueryBo bo) {
+        startPage();
+        List<ActivityConfigurationVo> list = iActivityConfigurationService.listConfiguration(bo);
+        return getDataTable(list);
+    }
+
 
     /**
      * 领取活动

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

@@ -108,14 +108,14 @@ public class ActivityTaskController extends BaseController {
     /**
      * 学习时长
      */
-    @ApiOperation("学习时长")
+ /*   @ApiOperation("学习时长")
     @Log(title = "学习时长", businessType = BusinessType.UPDATE)
     @PostMapping("/learnTime")
     public AjaxResult<Void> learnTime(@RequestBody ActivityTaskUserAddBo bo){
         ClientLoginUser loginUser = WxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
         return toAjax(activityTaskUserService.learnTime(bo) ? 1 : 0);
-    }
+    }*/
 
     /**
      * 模拟考试

+ 3 - 2
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserStudyRecordController.java

@@ -5,6 +5,7 @@ import java.util.Arrays;
 
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.activity.service.IActivityTaskUserService;
 import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordEditBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
@@ -77,10 +78,10 @@ public class UserStudyRecordController extends BaseController {
     @ApiOperation("新增用户学习记录")
     @Log(title = "用户学习记录", businessType = BusinessType.INSERT)
     @PostMapping()
-    public AjaxResult<Void> add(@RequestBody UserStudyRecordAddBo bo) {
+    public AjaxResult<Integer> add(@RequestBody UserStudyRecordAddBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
-        return toAjax(iUserStudyRecordService.insertByAddBo(bo) ? 1 : 0);
+        return AjaxResult.success(iUserStudyRecordService.insertByAddBo(bo));
     }
 
     /**

+ 62 - 30
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.framework.web.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -29,6 +30,7 @@ import com.zhongzheng.modules.user.vo.UserVo;
 import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.sql.Timestamp;
 import java.util.*;
@@ -53,10 +55,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     private CollectNoteMapper collectNoteMapper;
 
 
-
-
     @Override
-    public UserVo queryById(Long userId){
+    public UserVo queryById(Long userId) {
         User db = this.baseMapper.selectById(userId);
         return BeanUtil.toBean(db, UserVo.class);
     }
@@ -64,7 +64,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Override
     public User queryByUnionId(String unionId) {
         User user = getOne(new LambdaQueryWrapper<User>()
-                .eq(User::getUnionId,unionId)
+                .eq(User::getUnionId, unionId)
                 .last("limit 1"));
         if (Validator.isNotNull(user)) {
             return user;
@@ -73,7 +73,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
 
-
     @Override
     public List<UserVo> queryList(UserQueryBo bo) {
         LambdaQueryWrapper<User> lqw = Wrappers.lambdaQuery();
@@ -102,19 +101,19 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
     /**
-    * 实体类转化成视图对象
-    *
-    * @param collection 实体类集合
-    * @return
-    */
+     * 实体类转化成视图对象
+     *
+     * @param collection 实体类集合
+     * @return
+     */
     private List<UserVo> entity2Vo(Collection<User> collection) {
         List<UserVo> voList = collection.stream()
                 .map(any -> BeanUtil.toBean(any, UserVo.class))
                 .collect(Collectors.toList());
         if (collection instanceof Page) {
-            Page<User> page = (Page<User>)collection;
+            Page<User> page = (Page<User>) collection;
             Page<UserVo> pageVo = new Page<>();
-            BeanUtil.copyProperties(page,pageVo);
+            BeanUtil.copyProperties(page, pageVo);
             pageVo.addAll(voList);
             voList = pageVo;
         }
@@ -143,13 +142,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
      *
      * @param entity 实体类数据
      */
-    private void validEntityBeforeSave(User entity){
+    private void validEntityBeforeSave(User entity) {
         //TODO 做一些数据校验,如唯一约束
     }
 
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
+        if (isValid) {
             //TODO 做一些业务上的校验,判断是否需要校验
         }
         return this.removeByIds(ids);
@@ -158,12 +157,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Override
     public Integer getCollectTotal(Long userId) {
         Integer collectCourse = collectCourseMapper.selectCount(new LambdaQueryWrapper<CollectCourse>()
-                .eq(CollectCourse::getUserId,userId));
+                .eq(CollectCourse::getUserId, userId));
         Integer collectBank = collectBankMapper.selectCount(new LambdaQueryWrapper<CollectBank>()
-                .eq(CollectBank::getUserId,userId));
+                .eq(CollectBank::getUserId, userId));
         Integer collectNote = collectNoteMapper.selectCount(new LambdaQueryWrapper<CollectNote>()
-                .eq(CollectNote::getUserId,userId));
-        return collectCourse+collectBank+collectNote;
+                .eq(CollectNote::getUserId, userId));
+        return collectCourse + collectBank + collectNote;
     }
 
     @Override
@@ -178,46 +177,68 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
             long tt = calendar.getTime().getTime() / 1000;
             query.setStartTime(zero);
             query.setEndTime(tt);
-            ranKingUser= baseMapper.selectByRank(query);
+            ranKingUser = baseMapper.selectByRank(query);
             if (ranKingUser != null && ranKingUser.getHourse() != null) {
-                Integer rank = baseMapper.selectByRankOne(ranKingUser.getHourse());
+                Integer rank = baseMapper.selectByRankOne(Convert.toInt(ranKingUser.getHourse()));
                 ranKingUser.setRank(rank);
-            }else {
+            } else {
                 ranKingUser = baseMapper.selectByOneRank(query);
                 ranKingUser.setRank(0);
             }
             List<RanKingUser> ranKingUsers = baseMapper.selectByRanks(query);
             if (ranKingUsers != null && ranKingUsers.size() != 0) {
                 ranKingUser.setRanKingUsers(ranKingUsers);
-            }else {
+            } else {
                 ranKingUser.setRanKingUsers(new ArrayList<>());
             }
-        }else {
+        } else {
             Calendar cal = Calendar.getInstance();
             int month = cal.get(Calendar.MONTH) + 1;
             Long firstDayOfMonth = getFirstDayOfMonth(month);
             Long lastDayOfMonth = getLastDayOfMonth(month);
             query.setStartTime(firstDayOfMonth);
             query.setEndTime(lastDayOfMonth);
-            ranKingUser= baseMapper.selectByRank(query);
-            if (ranKingUser != null && ranKingUser.getHourse() != null)  {
-                Integer rank = baseMapper.selectByRankOne(ranKingUser.getHourse());
+            ranKingUser = baseMapper.selectByRank(query);
+            if (ranKingUser != null && ranKingUser.getHourse() != null) {
+                Integer rank = baseMapper.selectByRankOne(Convert.toInt(ranKingUser.getHourse()));
                 ranKingUser.setRank(rank);
-            }else {
+            } else {
                 ranKingUser = baseMapper.selectByOneRank(query);
                 ranKingUser.setRank(0);
             }
             List<RanKingUser> ranKingUsers = baseMapper.selectByRanks(query);
             if (ranKingUsers != null && ranKingUsers.size() != 0) {
                 ranKingUser.setRanKingUsers(ranKingUsers);
-            }else {
+            } else {
                 ranKingUser.setRanKingUsers(new ArrayList<>());
             }
         }
+        if (ranKingUser.getHourse() != null){
+            ranKingUser.setHourse(getHour(ranKingUser.getHourse()));
+        }
+        if (!CollectionUtils.isEmpty(ranKingUser.getRanKingUsers())){
+            ranKingUser.getRanKingUsers().stream().forEach(c -> {
+                c.setHourse(getHour(c.getHourse()));
+            });
+        }
         return ranKingUser;
 
     }
 
+
+    //Util.java
+    public static String getHour(String date) {
+        //秒数
+		Integer dt = Integer.parseInt(date) ;
+		if (dt < 3600) return Math.round(dt / 60) + "分钟";
+		int hour = Math.round(dt / 3600);
+		int minute = Math.round((dt - (hour * 3600)) / 60);
+		return hour + "h" + (minute == 0 ? "" : minute + "m");
+    }
+
+
+
+
     @Override
     public Integer getRank(Long userId) {
         RanKingUserQuery query = new RanKingUserQuery();
@@ -232,7 +253,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         query.setEndTime(tt);
         RanKingUser ranKingUser = baseMapper.selectByRank(query);
         if (ranKingUser != null && ranKingUser.getHourse() != null) {
-            Integer rank = baseMapper.selectByRankOne(ranKingUser.getHourse());
+            Integer rank = baseMapper.selectByRankOne(Convert.toInt(ranKingUser.getHourse()));
             return rank;
          }
         return 0;
@@ -251,7 +272,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         int firstDay = calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
         // 设置日历中月份的最小天数
         calendar.set(Calendar.DAY_OF_MONTH, firstDay);
-
+        //将小时至0
+        calendar.set(Calendar.HOUR_OF_DAY, 0);
+        //将分钟至0
+        calendar.set(Calendar.MINUTE, 0);
+        //将秒至0
+        calendar.set(Calendar.SECOND,0);
         Date time = calendar.getTime();
         return time.getTime() / 1000;
     }
@@ -270,6 +296,12 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         }
         // 设置日历中月份的最大天数
         calendar.set(Calendar.DAY_OF_MONTH, lastDay);
+        //将小时至0
+        calendar.set(Calendar.HOUR_OF_DAY, 24);
+        //将分钟至0
+        calendar.set(Calendar.MINUTE, 0);
+        //将秒至0
+        calendar.set(Calendar.SECOND,0);
         Date time = calendar.getTime();
         return time.getTime() / 1000;
     }

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityConfigurationMapper.java

@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.activity.bo.ActivityConfigurationQueryBo;
 import com.zhongzheng.modules.activity.domain.ActivityConfiguration;
 import com.zhongzheng.modules.activity.vo.ActivityConfigurationVo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.vo.CourseConfigurationVo;
 
 import java.util.Collection;
+import java.util.List;
 
 /**
  * 活动配置Mapper接口
@@ -40,4 +42,23 @@ public interface ActivityConfigurationMapper extends BaseMapper<ActivityConfigur
      * @return Collection<CourseConfigurationVo> 详细配置
      */
     Collection<CourseConfigurationVo> selectConfiguraIssueList(ActivityConfigurationQueryBo bo);
+
+
+    /**
+     * 查询课程能做的活动
+     *
+     * @param bo 详细配置信息
+     * @return Collection<CourseConfigurationVo> 详细配置
+     */
+    List<ActivityConfigurationVo> selectlistConfiguration(CourseQueryBo bo);
+
+    /**
+     *
+     * @author change
+     * @date 2021/7/1 16:14
+     * @param goodsId
+     * @param activity
+     * @return int
+     */
+    int selectCountActivity(Long goodsId, Long activity);
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/mapper/ActivityTaskMapper.java

@@ -11,4 +11,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface ActivityTaskMapper extends BaseMapper<ActivityTask> {
 
+    /**
+     * 查询类型活动
+     *
+     * @param taskId 类型id
+     *
+     */
+    ActivityTask queryByTaskId(Long taskId);
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityConfigurationService.java

@@ -6,6 +6,7 @@ import com.zhongzheng.modules.activity.bo.ActivityConfigurationEditBo;
 import com.zhongzheng.modules.activity.bo.ActivityConfigurationQueryBo;
 import com.zhongzheng.modules.activity.domain.ActivityConfiguration;
 import com.zhongzheng.modules.activity.vo.ActivityConfigurationVo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.vo.CourseConfigurationVo;
 
 
@@ -59,4 +60,13 @@ public interface IActivityConfigurationService extends IService<ActivityConfigur
 	 * @return List<CourseConfigurationVo>
 	 */
     List<CourseConfigurationVo> queryIssueList(ActivityConfigurationQueryBo bo);
+
+	/**
+	 * 查询活动课程
+	 * @param bo
+	 * @return List<ActivityConfigurationVo>
+	 */
+    List<ActivityConfigurationVo> listConfiguration(CourseQueryBo bo);
+
+    int selectCount(Long goodsId, Long activity);
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/IActivityTaskService.java

@@ -49,4 +49,12 @@ public interface IActivityTaskService extends IService<ActivityTask> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+
+	/**
+	 * 查询当前做的任务类型
+	 * @param taskId 主键集合
+	 * @return
+	 */
+    ActivityTaskVo queryByTaskId(Long taskId);
 }

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

@@ -87,7 +87,7 @@ public interface IActivityTaskUserService extends IService<ActivityTaskUser> {
 	 * @param bo 参数
 	 * @return
 	 */
-	boolean learnTime(ActivityTaskUserAddBo bo);
+	Integer learnTime(ActivityTaskUserAddBo bo);
 
 	/**
 	 * 模拟考试

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityConfigurationServiceImpl.java

@@ -13,6 +13,7 @@ import com.zhongzheng.modules.activity.mapper.ActivityConfigurationCourseMapper;
 import com.zhongzheng.modules.activity.mapper.ActivityConfigurationMapper;
 import com.zhongzheng.modules.activity.service.IActivityConfigurationService;
 import com.zhongzheng.modules.activity.vo.ActivityConfigurationVo;
+import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.vo.CourseConfigurationVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -137,6 +138,18 @@ public class ActivityConfigurationServiceImpl extends ServiceImpl<ActivityConfig
         return courseConfigurationVos;
     }
 
+    @Override
+    public List<ActivityConfigurationVo> listConfiguration(CourseQueryBo bo) {
+        bo.setStartTime(DateUtils.getNowTime());
+        List<ActivityConfigurationVo> activityConfigurations =baseMapper.selectlistConfiguration(bo) ;
+        return activityConfigurations;
+    }
+
+    @Override
+    public int selectCount(Long goodsId, Long activity) {
+        return baseMapper.selectCountActivity(goodsId,activity);
+    }
+
     /**
      * 实体类转化成视图对象
      *

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

@@ -159,4 +159,10 @@ public class ActivityTaskServiceImpl extends ServiceImpl<ActivityTaskMapper, Act
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public ActivityTaskVo queryByTaskId(Long taskId) {
+        ActivityTask db = baseMapper.queryByTaskId(taskId);
+        return BeanUtil.toBean(db,ActivityTaskVo.class);
+    }
 }

+ 38 - 13
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskUserServiceImpl.java

@@ -308,25 +308,45 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean learnTime(ActivityTaskUserAddBo bo) {
+    public Integer learnTime(ActivityTaskUserAddBo bo) {
         //判断是否是每日分享
         if (bo.getTaskType() != 4){
-            throw new IllegalArgumentException("该请求是完善信息");
+            throw new IllegalArgumentException("该请求是学习时长");
+        }
+        if (validReceiver(bo) == false){
+            return 0;
         }
-        validReceiver(bo);
 
-        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+        ActivityTaskVo activityTaskVo = activityTaskService.queryByTaskId(Convert.toLong(bo.getTaskType()));
 
         //增加用户积分
-        UserVo userVo = userService.queryById(bo.getUserId());
-        ActivityGradeVo list1 = activityGradeService.queryByInteger(userVo.getIntegral()+activityTaskVo.getStartIntegral());
-        userVo.setUserLevel(list1.getGrade());
-        increaseUser(userVo,userVo.getIntegral()+activityTaskVo.getStartIntegral());
+        if ((activityTaskVo.getLongTime()*60) > Convert.toInt(bo.getScore())) {
+            return 0;
+        }
+        Integer integer = (int)Math.ceil(Convert.toInt(bo.getScore())/(activityTaskVo.getLongTime()*60));
+
+            UserVo userVo = userService.queryById(bo.getUserId());
+            Long socor = 0L;
+            if (userVo.getIntegral() != null) {
+                socor = userVo.getIntegral() + (activityTaskVo.getStartIntegral() * integer);
+            }else {
+                socor =  Convert.toLong(activityTaskVo.getStartIntegral() * integer);
+
+            }
+        ActivityGradeVo list1 = activityGradeService.queryByInteger(socor);
+            userVo.setUserLevel(list1.getGrade());
+            increaseUser(userVo, socor);
 
         //增加领取记录
         ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
         add.setScore(Convert.toStr(activityTaskVo.getStartIntegral()));
-        return this.save(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        add.setTaskType(bo.getTaskType());
+        add.setUserId(bo.getUserId());
+        add.setTaskId(activityTaskVo.getId());
+        this.save(add);
+        return (activityTaskVo.getStartIntegral()*integer);
     }
 
 
@@ -403,7 +423,7 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
     }
 
 
-    private void validReceiver(ActivityTaskUserAddBo bo) {
+    private Boolean validReceiver(ActivityTaskUserAddBo bo) {
         ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
         switch (bo.getTaskType()){
             //每日签到逻辑,当日有领取即无法签到
@@ -446,13 +466,17 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
                 break;
             case 4:
                 //连续学习,大于三次达到上线
-                LambdaQueryChainWrapper<ActivityTaskUser> study = lambdaQuery();
+                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 = this.list(study);
-                if (!CollectionUtils.isEmpty(listStudy) && listStudy.size() == 3){
-                    throw new IllegalArgumentException("当日领取连续学习积分已达上线");
+                Integer score = 0;
+                for (ActivityTaskUser activityTaskUser : listStudy) {
+                     score = score+Convert.toInt(activityTaskUser.getScore());
+                }
+                if (!CollectionUtils.isEmpty(listStudy) && activityTaskVo.getEndIntegral().equals(score)){
+                    return false;
                 }
                 break;
             case 5:
@@ -466,6 +490,7 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
                 }
                 break;
         }
+        return true;
     }
 
 

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionBankServiceImpl.java

@@ -12,7 +12,9 @@ import com.zhongzheng.modules.bank.service.IQuestionBankService;
 import com.zhongzheng.modules.bank.vo.QuestionBankVo;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
+import com.zhongzheng.modules.course.service.IMajorCategoryService;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.course.vo.MajorCategoryVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,9 +40,16 @@ public class QuestionBankServiceImpl extends ServiceImpl<QuestionBankMapper, Que
     @Autowired
     private QuestionBankMapper questionBankMapper;
 
+    @Autowired
+    private IMajorCategoryService iMajorCategoryService;
+
     @Override
     public QuestionBankVo queryById(Long bankId){
         QuestionBank db = this.baseMapper.selectById(bankId);
+        if(db.getCategoryId()!=null){
+            MajorCategoryVo majorCategoryVo = iMajorCategoryService.queryById(db.getCategoryId());
+            db.setCategoryName(majorCategoryVo.getCategoryName());
+        }
         return BeanUtil.toBean(db, QuestionBankVo.class);
     }
 

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/CourseQueryBo.java

@@ -24,6 +24,8 @@ import com.zhongzheng.common.core.domain.BaseEntity;
 @ApiModel("课程分页查询对象")
 public class CourseQueryBo extends BaseEntity {
 
+	/** 课程id */
+	@ApiModelProperty("课程id")
 	private Long courseId;
 
 	/** 分页大小 */

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -10,7 +10,9 @@ import com.zhongzheng.modules.course.bo.CourseQueryBo;
 import com.zhongzheng.modules.course.domain.Course;
 import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.course.service.ICourseService;
+import com.zhongzheng.modules.course.service.IMajorCategoryService;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.course.vo.MajorCategoryVo;
 import com.zhongzheng.modules.order.bo.CouponQueryBo;
 import com.zhongzheng.modules.order.vo.CouponVo;
 import com.zhongzheng.modules.system.domain.SysUserRole;
@@ -37,9 +39,16 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
     @Autowired
     private CourseMapper courseMapper;
 
+    @Autowired
+    private IMajorCategoryService iMajorCategoryService;
+
     @Override
     public CourseVo queryById(Long courseId){
         Course db = this.baseMapper.selectById(courseId);
+        if(db.getCategoryId()!=null){
+            MajorCategoryVo majorCategoryVo = iMajorCategoryService.queryById(db.getCategoryId());
+            db.setCategoryName(majorCategoryVo.getCategoryName());
+        }
         return BeanUtil.toBean(db, CourseVo.class);
     }
 

+ 9 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamNoteServiceImpl.java

@@ -3,6 +3,8 @@ package com.zhongzheng.modules.exam.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.course.service.IMajorCategoryService;
+import com.zhongzheng.modules.course.vo.MajorCategoryVo;
 import com.zhongzheng.modules.exam.bo.ExamNoteAddBo;
 import com.zhongzheng.modules.exam.bo.ExamNoteEditBo;
 import com.zhongzheng.modules.exam.bo.ExamNoteQueryBo;
@@ -33,9 +35,16 @@ public class ExamNoteServiceImpl extends ServiceImpl<ExamNoteMapper, ExamNote> i
     @Autowired
     private ExamNoteMapper examNoteMapper;
 
+    @Autowired
+    private IMajorCategoryService iMajorCategoryService;
+
     @Override
     public ExamNoteVo queryById(Long fileId){
         ExamNote db = this.baseMapper.selectById(fileId);
+        if(db.getCategoryId()!=null){
+            MajorCategoryVo majorCategoryVo = iMajorCategoryService.queryById(db.getCategoryId());
+            db.setCategoryName(majorCategoryVo.getCategoryName());
+        }
         return BeanUtil.toBean(db, ExamNoteVo.class);
     }
 

+ 33 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityAddBo.java

@@ -0,0 +1,33 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 活动订单添加对象 order_activity
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Data
+@ApiModel("活动订单添加对象")
+public class OrderActivityAddBo {
+
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    /** 活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityEditBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+/**
+ * 活动订单编辑对象 order_activity
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Data
+@ApiModel("活动订单编辑对象")
+public class OrderActivityEditBo {
+
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 订单号 */
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    /** 活动ID */
+    @ApiModelProperty("活动ID")
+    private Long activityId;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+}

+ 46 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderActivityQueryBo.java

@@ -0,0 +1,46 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 活动订单分页查询对象 order_activity
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("活动订单分页查询对象")
+public class OrderActivityQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 订单号 */
+	@ApiModelProperty("订单号")
+	private String orderSn;
+	/** 活动ID */
+	@ApiModelProperty("活动ID")
+	private Long activityId;
+
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java

@@ -23,6 +23,11 @@ public class OrderAddBo {
     /** 优惠券ID */
     @ApiModelProperty("优惠券ID")
     private Long couponId;
+
+    /** 活動ID */
+    @ApiModelProperty("活動ID")
+    private Long activityId;
+
     /** 订单价格 */
     @ApiModelProperty("商品列表")
     private List<OrderGoodsAddBo> goodsList;

+ 45 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderActivity.java

@@ -0,0 +1,45 @@
+package com.zhongzheng.modules.order.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 活动订单对象 order_activity
+ * 
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("order_activity")
+public class OrderActivity implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+
+    /** 订单号 */
+    private String orderSn;
+
+    /** 活动ID */
+    private Long activityId;
+
+    /** 创建时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}

+ 11 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/CouponMapper.java

@@ -2,6 +2,7 @@ package com.zhongzheng.modules.order.mapper;
 
 import com.zhongzheng.modules.order.domain.Coupon;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import feign.Param;
 
 /**
  * 【请填写功能名称】Mapper接口
@@ -11,4 +12,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface CouponMapper extends BaseMapper<Coupon> {
 
+
+    /**
+     * 查詢是否課程有活動
+     * @author chang
+     * @date 2021/7/1 15:53
+     * @param goodsId
+     * @param couponId
+     * @return Integer
+     */
+    Integer selectCountCon(@Param("goodsId") Long goodsId,@Param("couponId") Long couponId);
 }

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderActivityMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.order.mapper;
+
+import com.zhongzheng.modules.order.domain.OrderActivity;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 活动订单Mapper接口
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+public interface OrderActivityMapper extends BaseMapper<OrderActivity> {
+
+}

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/ICouponService.java

@@ -58,4 +58,12 @@ public interface ICouponService extends IService<Coupon> {
 	 * @return List<CouponVo>
 	 */
 	List<CouponVo> queryIssueListCoupon(CouponQueryBo bo);
+
+	/**
+	 * 查詢課程活動
+	 * @param goodsId 主键集合
+	 * @param couponId 主键集合
+	 * @return Integer
+	 */
+    Integer selectCount(Long goodsId, Long couponId);
 }

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderActivityService.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.order.service;
+
+import com.zhongzheng.modules.order.domain.OrderActivity;
+import com.zhongzheng.modules.order.vo.OrderActivityVo;
+import com.zhongzheng.modules.order.bo.OrderActivityQueryBo;
+import com.zhongzheng.modules.order.bo.OrderActivityAddBo;
+import com.zhongzheng.modules.order.bo.OrderActivityEditBo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 活动订单Service接口
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+public interface IOrderActivityService extends IService<OrderActivity> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	OrderActivityVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<OrderActivityVo> queryList(OrderActivityQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入活动订单
+	 * @param bo 活动订单新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(OrderActivityAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改活动订单
+	 * @param bo 活动订单编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(OrderActivityEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/CouponServiceImpl.java

@@ -127,4 +127,9 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
         lqw.eq(bo.getCouponType() != null, Coupon::getCouponType, bo.getCouponType());
         return entity2Vo(this.list(lqw));
     }
+
+    @Override
+    public Integer selectCount(Long goodsId, Long couponId) {
+        return baseMapper.selectCountCon(goodsId,couponId);
+    }
 }

+ 100 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderActivityServiceImpl.java

@@ -0,0 +1,100 @@
+package com.zhongzheng.modules.order.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+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 com.zhongzheng.modules.order.bo.OrderActivityAddBo;
+import com.zhongzheng.modules.order.bo.OrderActivityQueryBo;
+import com.zhongzheng.modules.order.bo.OrderActivityEditBo;
+import com.zhongzheng.modules.order.domain.OrderActivity;
+import com.zhongzheng.modules.order.mapper.OrderActivityMapper;
+import com.zhongzheng.modules.order.vo.OrderActivityVo;
+import com.zhongzheng.modules.order.service.IOrderActivityService;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 活动订单Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Service
+public class OrderActivityServiceImpl extends ServiceImpl<OrderActivityMapper, OrderActivity> implements IOrderActivityService {
+
+    @Override
+    public OrderActivityVo queryById(Long id){
+        OrderActivity db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, OrderActivityVo.class);
+    }
+
+    @Override
+    public List<OrderActivityVo> queryList(OrderActivityQueryBo bo) {
+        LambdaQueryWrapper<OrderActivity> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getOrderId() != null, OrderActivity::getOrderId, bo.getOrderId());
+        lqw.eq(bo.getActivityId() != null, OrderActivity::getActivityId, bo.getActivityId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<OrderActivityVo> entity2Vo(Collection<OrderActivity> collection) {
+        List<OrderActivityVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, OrderActivityVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<OrderActivity> page = (Page<OrderActivity>)collection;
+            Page<OrderActivityVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(OrderActivityAddBo bo) {
+        OrderActivity add = BeanUtil.toBean(bo, OrderActivity.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(OrderActivityEditBo bo) {
+        OrderActivity update = BeanUtil.toBean(bo, OrderActivity.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(OrderActivity entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 68 - 29
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -1,10 +1,14 @@
 package com.zhongzheng.modules.order.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.activity.domain.ActivityConfiguration;
+import com.zhongzheng.modules.activity.service.IActivityConfigurationService;
+import com.zhongzheng.modules.activity.vo.ActivityConfigurationVo;
 import com.zhongzheng.modules.bank.service.IQuestionBankService;
 import com.zhongzheng.modules.bank.vo.QuestionBankVo;
 import com.zhongzheng.modules.bank.vo.QuestionVo;
@@ -16,11 +20,9 @@ import com.zhongzheng.modules.exam.vo.ExamNoteVo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.Coupon;
 import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.order.domain.OrderActivity;
 import com.zhongzheng.modules.order.mapper.OrderMapper;
-import com.zhongzheng.modules.order.service.ICouponService;
-import com.zhongzheng.modules.order.service.IOrderCouponService;
-import com.zhongzheng.modules.order.service.IOrderGoodsService;
-import com.zhongzheng.modules.order.service.IOrderService;
+import com.zhongzheng.modules.order.service.*;
 import com.zhongzheng.modules.order.vo.CouponVo;
 import com.zhongzheng.modules.order.vo.OrderVo;
 import com.zhongzheng.modules.user.domain.OrderPossessUser;
@@ -36,6 +38,7 @@ 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 java.math.BigDecimal;
 import java.util.Collection;
@@ -80,6 +83,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private IOrderCouponService iOrderCouponService;
 
+    @Autowired
+    private IActivityConfigurationService activityConfigurationService;
+
+    @Autowired
+    private IOrderActivityService oOrderActivityService;
+
     @Override
     public OrderVo queryById(Long orderId){
         Order db = this.baseMapper.selectById(orderId);
@@ -140,6 +149,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public Map<String, String> placeOrder(OrderAddBo bo) {
         List<OrderGoodsAddBo> goodsList = bo.getGoodsList();
         if(goodsList.size()<1){
@@ -149,7 +159,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        Map<String, String> result = dealOrder(add,goodsList,bo.getCouponId());
+        Map<String, String> result = dealOrder(add,goodsList,bo.getCouponId(),bo.getActivityId());
 
         return result;
     }
@@ -178,7 +188,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return this.removeByIds(ids);
     }
 
-    private Map<String, String>  dealOrder(Order add,List<OrderGoodsAddBo> goodsList,Long couponId){
+    private Map<String, String>  dealOrder(Order add,List<OrderGoodsAddBo> goodsList,Long couponId,Long activity){
         UserVo userVo = iUserService.queryById(add.getUserId());
         String body = "中正云课堂消费";
         String price = "1";
@@ -223,34 +233,63 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             if(!iOrderGoodsService.insertByAddBo(g)){
                 throw new CustomException("商品错误");
             }
-            totalPrice = totalPrice.add(g.getGoodsPrice());
 
-        }
-        if(couponId>0){
-            //使用优惠券
-            Coupon coupon= iCouponService.queryByIdAndUserId(couponId,add.getUserId());
-            if(!Validator.isNotNull(coupon)){
-                throw new CustomException("该优惠券不存在");
-            }
-            if(coupon.getUserStatus()!=0||coupon.getEndTime()<DateUtils.getNowTime()){
-                throw new CustomException("该优惠券无法使用");
-            }
-            if(coupon.getCouponType()==0){
-                //优惠券
-                totalPrice = totalPrice.subtract(coupon.getPrice());
+            //查詢該券是否使用於此課程上
+            if(couponId>0 && g.getGoodsType()==1 && iCouponService.selectCount(g.getGoodsId(),couponId) > 0 ){
+                //使用优惠券
+                Coupon coupon= iCouponService.queryByIdAndUserId(couponId,add.getUserId());
+                if(!Validator.isNotNull(coupon)){
+                    throw new CustomException("该优惠券不存在");
+                }
+                if(coupon.getUserStatus()!=0||coupon.getEndTime()<DateUtils.getNowTime()){
+                    throw new CustomException("该优惠券无法使用");
+                }
+                if(coupon.getCouponType()==0){
+                    //优惠券
+                    g.setGoodsPrice(g.getGoodsPrice().subtract(coupon.getPrice()));
 
+                }
+                if(coupon.getCouponType()==1){
+                    //折扣券
+                    g.setGoodsPrice(g.getGoodsPrice().divide((new BigDecimal(10))).multiply(coupon.getPrice()));
+                }
+                OrderCouponAddBo orderCouponAddBo = new OrderCouponAddBo();
+                orderCouponAddBo.setCouponId(couponId);
+                orderCouponAddBo.setOrderSn(out_trade_no);
+                if(!iOrderCouponService.insertByAddBo(orderCouponAddBo)){
+                    throw new CustomException("优惠券数据错误");
+                }
             }
-            if(coupon.getCouponType()==1){
-                //折扣券
-                totalPrice = totalPrice.divide((new BigDecimal(10))).multiply(coupon.getPrice());
-            }
-            OrderCouponAddBo orderCouponAddBo = new OrderCouponAddBo();
-            orderCouponAddBo.setCouponId(couponId);
-            orderCouponAddBo.setOrderSn(out_trade_no);
-            if(!iOrderCouponService.insertByAddBo(orderCouponAddBo)){
-                throw new CustomException("优惠券数据错误");
+
+            //查詢該活動是否使用於此課程上
+            if(activity >0 && g.getGoodsType()==1 && activityConfigurationService.selectCount(g.getGoodsId(),activity) > 0 ){
+                //使用活動
+                ActivityConfigurationVo activityConfigurationVo = activityConfigurationService.queryById(activity);
+                if(!Validator.isNotNull(activityConfigurationVo)){
+                    throw new CustomException("该活動不存在");
+                }
+                if(Convert.toLong(activityConfigurationVo.getActivityType()) ==3){
+                    //定價
+                    g.setGoodsPrice(activityConfigurationVo.getPrice());
+                }
+                if(Convert.toLong(activityConfigurationVo.getActivityType()) ==4){
+                    //優惠
+                    g.setGoodsPrice(g.getGoodsPrice().subtract((activityConfigurationVo.getPrice())));
+                }
+                if(Convert.toLong(activityConfigurationVo.getActivityType()) ==5){
+                    //折扣
+                    g.setGoodsPrice(g.getGoodsPrice().divide((new BigDecimal(10))).multiply(activityConfigurationVo.getPrice()));
+                }
+                OrderActivityAddBo orderActivityAddBo = new OrderActivityAddBo();
+                orderActivityAddBo.setActivityId(couponId);
+                orderActivityAddBo.setOrderSn(out_trade_no);
+                if(!oOrderActivityService.insertByAddBo(orderActivityAddBo)){
+                    throw new CustomException("活動錯誤");
+                }
             }
 
+            totalPrice = totalPrice.add(g.getGoodsPrice());
+
         }
         BigDecimal zero = new BigDecimal(0.01);
         if(totalPrice.compareTo(zero) == -1){

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/vo/OrderActivityVo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.order.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 活动订单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2021-07-01
+ */
+@Data
+@ApiModel("活动订单视图对象")
+public class OrderActivityVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 订单号 */
+	@Excel(name = "订单号")
+	@ApiModelProperty("订单号")
+	private Long orderId;
+	/** 活动ID */
+	@Excel(name = "活动ID")
+	@ApiModelProperty("活动ID")
+	private Long activityId;
+
+}

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/IUserStudyRecordService.java

@@ -35,7 +35,7 @@ public interface IUserStudyRecordService extends IService<UserStudyRecord> {
 	 * @param bo 用户学习记录新增业务对象
 	 * @return
 	 */
-	Boolean insertByAddBo(UserStudyRecordAddBo bo);
+	Integer insertByAddBo(UserStudyRecordAddBo bo);
 
 	/**
 	 * 根据编辑业务对象修改用户学习记录

+ 23 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserStudyRecordServiceImpl.java

@@ -1,8 +1,14 @@
 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.IActivityTaskUserService;
+import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
+import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordAddBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordEditBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
@@ -10,12 +16,14 @@ import com.zhongzheng.modules.user.domain.UserStudyRecord;
 import com.zhongzheng.modules.user.mapper.UserStudyRecordMapper;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.UserStudyRecordVo;
+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 java.util.Collection;
 import java.util.Collections;
@@ -34,6 +42,9 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     @Autowired
     private UserStudyRecordMapper userStudyRecordMapper;
 
+    @Autowired
+    private IActivityTaskUserService activityTaskUserServiceImpl;
+
     @Override
     public UserStudyRecordVo queryById(Long recordId){
         UserStudyRecord db = this.baseMapper.selectById(recordId);
@@ -78,12 +89,22 @@ public class UserStudyRecordServiceImpl extends ServiceImpl<UserStudyRecordMappe
     }
 
     @Override
-    public Boolean insertByAddBo(UserStudyRecordAddBo bo) {
+    @Transactional(rollbackFor = Exception.class)
+    public Integer insertByAddBo(UserStudyRecordAddBo bo) {
         UserStudyRecord add = BeanUtil.toBean(bo, UserStudyRecord.class);
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        return this.save(add);
+
+        //学习时长达到规定时长即加分
+        ActivityTaskUserAddBo activityTaskUserAddBo = new ActivityTaskUserAddBo();
+        activityTaskUserAddBo.setUserId(bo.getUserId());
+        activityTaskUserAddBo.setTaskType(4);
+        activityTaskUserAddBo.setScore(Convert.toStr(bo.getStudyDuration()));
+        Integer integer = activityTaskUserServiceImpl.learnTime(activityTaskUserAddBo);
+
+        this.save(add);
+        return integer;
     }
 
     @Override

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/vo/RanKingUser.java

@@ -36,7 +36,7 @@ public class RanKingUser {
     /** 头像 */
     @Excel(name = "时间")
     @ApiModelProperty("时间")
-    private Integer hourse;
+    private String hourse;
 
     /** 头像 */
     @Excel(name = "排行榜排名")

+ 42 - 0
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityConfigurationMapper.xml

@@ -216,4 +216,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         order by c.update_time desc
     </select>
+
+
+    <select id="selectCountActivity" parameterType="com.zhongzheng.modules.course.bo.CourseQueryBo" resultMap="ActivityConfigurationResult">
+        SELECT
+        c.id,
+        c.activity_name,
+        c.activity_type,
+        c.description,
+        c.start_time ,
+        c.end_time ,
+        c.price ,
+        c.quantity ,
+        c.live_content ,
+        c.live_adress,
+        c.create_time,
+        c.update_time,
+        c.status  ,
+        c.coupon_end
+        FROM
+        activity_configuration c
+        LEFT JOIN activity_configuration_course f ON c.id = f.configuration_id
+        LEFT JOIN course s ON f.course_id = s.course_id
+        WHERE 1=1
+        and c.status = 3
+          and c.activity_type in (3,4,5)
+        <if test="courseId != null" >
+            and f.course_id = #{courseId}
+        </if>
+        order by c.update_time desc
+    </select>
+
+    <select id="selectConfigures" parameterType="java.lang.Long" resultMap="ActivityConfigurationResultVO">
+        SELECT
+            c.*,
+            s.*
+        FROM
+            activity_configuration c
+                LEFT JOIN activity_configuration_course f ON c.id = f.configuration_id
+                LEFT JOIN course s ON f.configuration_id = s.course_id
+        WHERE 1=1
+          and c.id = #{id,jdbcType=INTEGER}
+    </select>
 </mapper>

+ 5 - 0
zhongzheng-system/src/main/resources/mapper/modules/activity/ActivityTaskMapper.xml

@@ -19,5 +19,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status" column="status"/>
     </resultMap>
 
+    <select id="queryByTaskId" parameterType="Long" resultMap="ActivityTaskResult">
+        select * FROM activity_task where 1=1
+            and task_type = #{taskId} limit 1
+
+    </select>
 
 </mapper>

+ 15 - 2
zhongzheng-system/src/main/resources/mapper/modules/order/CouponMapper.xml

@@ -10,10 +10,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="endTime" column="end_time"/>
         <result property="userId" column="user_id"/>
         <result property="userStatus" column="user_status"/>
-        <result property="rangeStatus" column="range_status"/>
         <result property="configurationId" column="configuration_id"/>
         <result property="couponType" column="coupon_type"/>
     </resultMap>
 
-
+    <select id="selectCountCon" parameterType="Long" resultType="integer">
+        SELECT
+        COUNT(a.id)
+        FROM
+        activity_configuration a
+        LEFT JOIN activity_configuration_course t ON a.id = t.configuration_id
+        WHERE
+        1 = 1
+        <if test="coupon_id != null and coupon_id != ''" >
+            AND a.id = #{activityId}
+        </if>
+        <if test="goodsId != null and goodsId != ''" >
+            AND t.course_id =#{goodsId}
+        </if>
+    </select>
 </mapper>

+ 16 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderActivityMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.system.mapper.OrderActivityMapper">
+
+    <resultMap type="com.zhongzheng.modules.order.domain.OrderActivity" id="OrderActivityResult">
+        <result property="id" column="id"/>
+        <result property="orderId" column="order_id"/>
+        <result property="activityId" column="activity_id"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+
+</mapper>