Browse Source

用户修改信息添加积分

change 4 years ago
parent
commit
ef9b31b723

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/user/UserController.java

@@ -95,7 +95,7 @@ public class UserController extends BaseController {
     @PreAuthorize("@ss.hasPermi('system:user:edit')")
     @Log(title = "客户端用户", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
-    public AjaxResult<Void> edit(@RequestBody UserEditBo bo) {
+    public AjaxResult<Void> edit(@RequestBody UserEditBo bo) throws IllegalAccessException {
         return toAjax(iUserService.updateByEditBo(bo) ? 1 : 0);
     }
 

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

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

+ 98 - 6
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/UserServiceImpl.java

@@ -10,18 +10,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
 import com.zhongzheng.common.exception.CustomException;
 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.IActivityTaskUserService;
+import com.zhongzheng.modules.activity.service.impl.ActivityTaskUserServiceImpl;
+import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
+import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
 import com.zhongzheng.modules.collect.domain.CollectBank;
 import com.zhongzheng.modules.collect.domain.CollectCourse;
 import com.zhongzheng.modules.collect.domain.CollectNote;
 import com.zhongzheng.modules.collect.mapper.CollectBankMapper;
 import com.zhongzheng.modules.collect.mapper.CollectCourseMapper;
 import com.zhongzheng.modules.collect.mapper.CollectNoteMapper;
-import com.zhongzheng.modules.user.bo.RanKingUserQuery;
-import com.zhongzheng.modules.user.bo.UserAddBo;
-import com.zhongzheng.modules.user.bo.UserEditBo;
-import com.zhongzheng.modules.user.bo.UserQueryBo;
+import com.zhongzheng.modules.user.bo.*;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserBankRecord;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -31,9 +34,13 @@ import com.zhongzheng.modules.user.vo.RanKingUser;
 import com.zhongzheng.modules.user.vo.UserVo;
 import io.swagger.models.auth.In;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.lang.reflect.Field;
+import java.math.BigDecimal;
 import java.sql.Timestamp;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -62,6 +69,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     @Autowired
     private IActivityTaskUserService activityTaskUserService;
 
+    @Autowired
+    private IActivityTaskService activityTaskService;
+
+    @Autowired
+    private IUserService userService;
+
+    @Autowired
+    private IActivityGradeService activityGradeService;
+
 
     @Override
     public UserVo queryById(Long userId) {
@@ -149,13 +165,74 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
     @Override
-    public Boolean updateByEditBo(UserEditBo bo) {
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateByEditBo(UserEditBo bo) throws IllegalAccessException {
         User update = BeanUtil.toBean(bo, User.class);
         validEntityBeforeSave(update);
         update.setUpdateTime(DateUtils.getNowTime());
+
+        //增加客户端信息进行添加积分
+        information(bo);
+
         return this.updateById(update);
     }
 
+    public void information(UserEditBo 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())) == 0){
+            return;
+        }
+        UserSchoolInfoEditBo userSchoolInfoEditBo = new UserSchoolInfoEditBo();
+        //userVO用户  有参值/总数 得出比例 乘以分数 四舍五入
+        Field[] field = bo.getClass().getDeclaredFields();
+        Integer integer = countUser(bo);
+        String num = String.valueOf(new BigDecimal(Convert.toStr(field.length-6)).divide(new BigDecimal(integer.toString())));
+        BigDecimal result5 = new BigDecimal(Convert.toStr(activityTaskVo.getStartIntegral()*0.8)).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);
+    }
+
     /**
      * 保存前的数据校验
      *
@@ -165,6 +242,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
         //TODO 做一些数据校验,如唯一约束
     }
 
+    public Integer  countUser(UserEditBo 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;
+    }
+
     @Override
     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
         if (isValid) {
@@ -240,6 +331,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
                 c.setHourse(getHour(c.getHourse()));
             });
         }
+        ranKingUser.setRank(ranKingUser.getRank()+1);
         return ranKingUser;
 
     }
@@ -249,7 +341,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     public static String getHour(String date) {
         //秒数
 		Integer dt = Integer.parseInt(date) ;
-		if (dt < 3600) return Math.round(dt / 60) + "分钟";
+		if (dt < 3600) return Math.round(dt / 60) + "m";
 		int hour = Math.round(dt / 3600);
 		int minute = Math.round((dt - (hour * 3600)) / 60);
 		return hour + "h" + (minute == 0 ? "" : minute + "m");

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

@@ -46,7 +46,7 @@ public interface IUserService extends IService<User> {
 	 * @param bo 用户编辑业务对象
 	 * @return
 	 */
-	Boolean updateByEditBo(UserEditBo bo);
+	Boolean updateByEditBo(UserEditBo bo) throws IllegalAccessException;
 
 	/**
 	 * 校验并删除数据

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserPlanServiceImpl.java

@@ -176,6 +176,7 @@ public class UserPlanServiceImpl extends ServiceImpl<UserPlanMapper, UserPlan> i
             }
             return userPlanVo;
         }else{
+            validEntitySave(bo);
             UserPlanVo userPlanVo = generateSelfBo(bo);
             if (bo.getStatus() != null && bo.getStatus() == 1) {
                 UserPlan userPlan = new UserPlan();
@@ -218,6 +219,25 @@ public class UserPlanServiceImpl extends ServiceImpl<UserPlanMapper, UserPlan> i
         }
     }
 
+    private void validEntitySave(UserPlanQueryBo bo) {
+        if (bo.getStudyDay() == null){
+            throw new IllegalArgumentException("复习天数为空");
+        }
+        if (bo.getCourseId() == null){
+            throw new IllegalArgumentException("课程为空");
+        }
+        if (bo.getStudyCount() == null){
+            throw new IllegalArgumentException("周复习为空");
+        }
+        if (bo.getExamDate() == null){
+            throw new IllegalArgumentException("考试时间为空");
+        }
+
+        if (bo.getStartTime() == null || bo.getEndTime() == null){
+            throw new IllegalArgumentException("起止天数为空");
+        }
+    }
+
     @Override
     public List<UserPlanVo> userPlan(UserPlanQueryBo bo) {
         List<UserPlan> userPlans = baseMapper.selectByUserPlan(bo);