Explorar el Código

用户修改信息添加积分

change hace 4 años
padre
commit
aee383ca83

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/user/UserSchoolInfoController.java

@@ -67,7 +67,7 @@ public class UserSchoolInfoController extends BaseController {
     @ApiOperation("修改用户学校信息")
     @Log(title = "用户学校信息", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult<Void> edit(@RequestBody UserSchoolInfoEditBo bo) {
+    public AjaxResult<Void> edit(@RequestBody UserSchoolInfoEditBo bo) throws IllegalAccessException {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         if(loginUser.getUser().getUserId()!=bo.getUserId()){
             return AjaxResult.error("无权限修改");

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

@@ -42,7 +42,7 @@ public interface IUserSchoolInfoService extends IService<UserSchoolInfo> {
 	 * @param bo 用户学校信息编辑业务对象
 	 * @return
 	 */
-	Boolean updateByEditBo(UserSchoolInfoEditBo bo);
+	Boolean updateByEditBo(UserSchoolInfoEditBo bo) throws IllegalAccessException;
 
 	/**
 	 * 校验并删除数据

+ 103 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSchoolInfoServiceImpl.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.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.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.user.bo.UserEditBo;
 import com.zhongzheng.modules.user.bo.UserSchoolInfoAddBo;
 import com.zhongzheng.modules.user.bo.UserSchoolInfoEditBo;
 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.mapper.UserSchoolInfoMapper;
 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.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.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -33,6 +49,19 @@ import java.util.stream.Collectors;
 @Service
 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
     public UserSchoolInfoVo queryById(Long userSchoolId){
         UserSchoolInfo db = this.baseMapper.selectById(userSchoolId);
@@ -95,13 +124,86 @@ public class UserSchoolInfoServiceImpl extends ServiceImpl<UserSchoolInfoMapper,
     }
 
     @Override
-    public Boolean updateByEditBo(UserSchoolInfoEditBo bo) {
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateByEditBo(UserSchoolInfoEditBo bo) throws IllegalAccessException {
         UserSchoolInfo update = BeanUtil.toBean(bo, UserSchoolInfo.class);
         validEntityBeforeSave(update);
+
+        //增加学习的积分
+        information(bo);
+
         update.setUpdateTime(DateUtils.getNowTime());
         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;
+    }
     /**
      * 保存前的数据校验
      *