|
@@ -1,24 +1,40 @@
|
|
|
package com.zhongzheng.modules.user.service.impl;
|
|
package com.zhongzheng.modules.user.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.lang.Validator;
|
|
import cn.hutool.core.lang.Validator;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
|
|
+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.IActivityTaskUserService;
|
|
|
|
|
+import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
|
|
|
|
|
+import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
|
|
|
import com.zhongzheng.modules.course.domain.MajorCategory;
|
|
import com.zhongzheng.modules.course.domain.MajorCategory;
|
|
|
|
|
+import com.zhongzheng.modules.user.bo.UserEditBo;
|
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoAddBo;
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoAddBo;
|
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoEditBo;
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoEditBo;
|
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoQueryBo;
|
|
import com.zhongzheng.modules.user.bo.UserSchoolInfoQueryBo;
|
|
|
|
|
+import com.zhongzheng.modules.user.domain.User;
|
|
|
import com.zhongzheng.modules.user.domain.UserSchoolInfo;
|
|
import com.zhongzheng.modules.user.domain.UserSchoolInfo;
|
|
|
import com.zhongzheng.modules.user.mapper.UserSchoolInfoMapper;
|
|
import com.zhongzheng.modules.user.mapper.UserSchoolInfoMapper;
|
|
|
import com.zhongzheng.modules.user.service.IUserSchoolInfoService;
|
|
import com.zhongzheng.modules.user.service.IUserSchoolInfoService;
|
|
|
|
|
+import com.zhongzheng.modules.user.service.IUserService;
|
|
|
import com.zhongzheng.modules.user.vo.UserSchoolInfoVo;
|
|
import com.zhongzheng.modules.user.vo.UserSchoolInfoVo;
|
|
|
|
|
+import com.zhongzheng.modules.user.vo.UserVo;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.pagehelper.Page;
|
|
import com.github.pagehelper.Page;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -33,6 +49,19 @@ import java.util.stream.Collectors;
|
|
|
@Service
|
|
@Service
|
|
|
public class UserSchoolInfoServiceImpl extends ServiceImpl<UserSchoolInfoMapper, UserSchoolInfo> implements IUserSchoolInfoService {
|
|
public class UserSchoolInfoServiceImpl extends ServiceImpl<UserSchoolInfoMapper, UserSchoolInfo> implements IUserSchoolInfoService {
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IActivityTaskUserService activityTaskUserService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IActivityTaskService activityTaskService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IUserService userService;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private IActivityGradeService activityGradeService;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public UserSchoolInfoVo queryById(Long userSchoolId){
|
|
public UserSchoolInfoVo queryById(Long userSchoolId){
|
|
|
UserSchoolInfo db = this.baseMapper.selectById(userSchoolId);
|
|
UserSchoolInfo db = this.baseMapper.selectById(userSchoolId);
|
|
@@ -95,13 +124,86 @@ public class UserSchoolInfoServiceImpl extends ServiceImpl<UserSchoolInfoMapper,
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public Boolean updateByEditBo(UserSchoolInfoEditBo bo) {
|
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public Boolean updateByEditBo(UserSchoolInfoEditBo bo) throws IllegalAccessException {
|
|
|
UserSchoolInfo update = BeanUtil.toBean(bo, UserSchoolInfo.class);
|
|
UserSchoolInfo update = BeanUtil.toBean(bo, UserSchoolInfo.class);
|
|
|
validEntityBeforeSave(update);
|
|
validEntityBeforeSave(update);
|
|
|
|
|
+
|
|
|
|
|
+ //增加学习的积分
|
|
|
|
|
+ information(bo);
|
|
|
|
|
+
|
|
|
update.setUpdateTime(DateUtils.getNowTime());
|
|
update.setUpdateTime(DateUtils.getNowTime());
|
|
|
return this.updateById(update);
|
|
return this.updateById(update);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public void information(UserSchoolInfoEditBo bo) throws IllegalAccessException {
|
|
|
|
|
+ //判断是否是完善信息
|
|
|
|
|
+ ActivityTaskVo activityTaskVo = activityTaskService.queryByTaskId(1L);
|
|
|
|
|
+ if (activityTaskVo == null){
|
|
|
|
|
+ return ;
|
|
|
|
|
+ }
|
|
|
|
|
+ //得出已领取的分数是多少
|
|
|
|
|
+ LambdaQueryWrapper<ActivityTaskUser> lqw =Wrappers.lambdaQuery();;
|
|
|
|
|
+ lqw.eq(bo.getUserId() != null,ActivityTaskUser::getUserId,bo.getUserId());
|
|
|
|
|
+ lqw.eq(ActivityTaskUser::getTaskType, 1);
|
|
|
|
|
+ List<ActivityTaskUser> list = activityTaskUserService.list(lqw);
|
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal("0");
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(list)) {
|
|
|
|
|
+ for (ActivityTaskUser activityTaskUser : list) {
|
|
|
|
|
+ bigDecimal = bigDecimal.add(new BigDecimal(activityTaskUser.getScore()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (bigDecimal.compareTo(new BigDecimal(activityTaskVo.getStartIntegral())) > -1){
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ //userVO用户 有参值/总数 得出比例 乘以分数 四舍五入
|
|
|
|
|
+ Field[] field = bo.getClass().getDeclaredFields();
|
|
|
|
|
+ Integer integer = countUser(bo);
|
|
|
|
|
+ String num = String.valueOf(new BigDecimal(field.length).divide(new BigDecimal(Convert.toStr(integer.toString())),BigDecimal.ROUND_HALF_UP));
|
|
|
|
|
+ BigDecimal result5 = new BigDecimal(Convert.toStr(activityTaskVo.getStartIntegral()*0.2)).divide(new BigDecimal(num),BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
+
|
|
|
|
|
+ //增加用户领取记录
|
|
|
|
|
+ ActivityTaskUser add = BeanUtil.toBean(bo, ActivityTaskUser.class);
|
|
|
|
|
+ add.setScore(result5.toString());
|
|
|
|
|
+ add.setCreateTime(DateUtils.getNowTime());
|
|
|
|
|
+ add.setUpdateTime(DateUtils.getNowTime());
|
|
|
|
|
+ add.setUserId(bo.getUserId());
|
|
|
|
|
+ add.setTaskType(activityTaskVo.getTaskType());
|
|
|
|
|
+ add.setTaskId(activityTaskVo.getId());
|
|
|
|
|
+ //增加用户积分
|
|
|
|
|
+ UserVo userVo = userService.queryById(bo.getUserId());
|
|
|
|
|
+ if (userVo.getIntegral() == null){
|
|
|
|
|
+ userVo.setIntegral(0L);
|
|
|
|
|
+ }
|
|
|
|
|
+ //增加用户积分更新等级
|
|
|
|
|
+ Long Integer = userVo.getIntegral()+ Convert.toLong(result5);
|
|
|
|
|
+ ActivityGradeVo list1 = activityGradeService.queryByInteger(Integer);
|
|
|
|
|
+ userVo.setUserLevel(list1.getGrade());
|
|
|
|
|
+ increaseUser(userVo,Integer);
|
|
|
|
|
+ activityTaskUserService.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);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public Integer countUser(UserSchoolInfoEditBo 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;
|
|
|
|
|
+ }
|
|
|
/**
|
|
/**
|
|
|
* 保存前的数据校验
|
|
* 保存前的数据校验
|
|
|
*
|
|
*
|