瀏覽代碼

用户登录更新军衔等级

wuweihao 3 年之前
父節點
當前提交
99ae89dc9e

+ 2 - 0
gis_admin/pom.xml

@@ -23,6 +23,8 @@
             <artifactId>shiro-spring-boot-starter</artifactId>
         </dependency>
 
+
+
     </dependencies>
 
 

+ 11 - 0
gis_admin/src/main/java/com/gis/admin/controller/LoginController.java

@@ -59,6 +59,9 @@ public class LoginController {
     @Autowired
     RedisUtil redisUtil;
 
+
+
+
     // 目前是24h
     private static Integer TOKEN_EXPIRE = 1000 * 60 * 60 * 24;
 
@@ -132,6 +135,9 @@ public class LoginController {
         // 保存操作日志
         saveLog(userId);
 
+        // 检查更新军衔等级
+        userService.updateLevel();
+
         // 更新到 redis, 有效期24h, 旧token无效, 做单用户登录 86400s-> 24H
         redisUtil.set(configConstant.redisPrefix + token, token, 86400);
 
@@ -234,6 +240,9 @@ public class LoginController {
         // 保存操作日志
         saveLog(userId);
 
+        // 检查更新军衔等级
+        userService.updateLevel();
+
 
         // 更新到 redis, 有效期24h, 旧token无效, 做单用户登录 86400s-> 24H
         redisUtil.set(configConstant.redisPrefix + token, token, 86400);
@@ -247,6 +256,8 @@ public class LoginController {
 
 
 
+
+
     @ApiIgnore
     @GetMapping("admin/test")
     public String test(){

+ 1 - 1
gis_cms/src/main/java/com/gis/cms/entity/po/IntegralEntity.java

@@ -1,4 +1,4 @@
-package com.gis.cms.entity.po;
+package com.gis.admin.entity.po;
 
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;

+ 3 - 0
gis_admin/src/main/java/com/gis/admin/entity/po/SysUserEntity.java

@@ -59,6 +59,9 @@ public class SysUserEntity extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "缩略图url")
     private String thumb;
 
+    @ApiModelProperty(value = "军衔等级")
+    private Integer level;
+
 //    @JSONField(serialize = false)
     @Transient
     @ApiModelProperty(value = "角色,sys_admin:系统管理员,sys_high:高级管理员, sys_normal:普通管理员, sys_visitor:游客")

+ 31 - 0
gis_admin/src/main/java/com/gis/admin/entity/vo/RankVo.java

@@ -0,0 +1,31 @@
+package com.gis.admin.entity.vo;
+
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by owen on 202/6/24.
+ * 军衔对应表
+ */
+@Data
+public class RankVo extends BaseEntity implements Serializable {
+
+
+    private static final long serialVersionUID = -8649853235995256213L;
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "等级")
+    private Integer level;
+
+    @ApiModelProperty(value = "等级积分")
+    private Integer exp;
+
+
+}

+ 2 - 4
gis_cms/src/main/java/com/gis/cms/mapper/IntegralMapper.java

@@ -1,15 +1,13 @@
-package com.gis.cms.mapper;
+package com.gis.admin.mapper;
 
 
-import com.gis.cms.entity.po.IntegralEntity;
-import com.gis.cms.entity.po.SensitiveEntity;
+import com.gis.admin.entity.po.IntegralEntity;
 import com.gis.common.base.mapper.IBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Component;
 
 import java.time.LocalDate;
-import java.util.Set;
 
 @Component
 @Mapper

+ 26 - 0
gis_admin/src/main/java/com/gis/admin/mapper/SysBaseMapper.java

@@ -0,0 +1,26 @@
+package com.gis.admin.mapper;
+
+
+import com.gis.admin.entity.po.SysUserEntity;
+import com.gis.admin.entity.vo.RankVo;
+import com.gis.admin.mapper.provider.SysUserProvider;
+import com.gis.common.base.entity.dto.UserPageDateDto;
+import com.gis.common.base.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.*;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @CacheNamespace(flushInterval = 360000)
+ * 开启二级缓存,缓存6分钟刷新, 毫米数
+ */
+@CacheNamespace(flushInterval = 360000)
+@Component
+@Mapper
+public interface SysBaseMapper extends IBaseMapper<SysUserEntity, Long> {
+
+
+    @Select("select * from tb_rank where is_delete = 0 ")
+    List<RankVo> getRankList();
+}

+ 3 - 1
gis_admin/src/main/java/com/gis/admin/mapper/SysUserMapper.java

@@ -1,7 +1,6 @@
 package com.gis.admin.mapper;
 
 
-import com.gis.admin.mapper.provider.SysRoleProvider;
 import com.gis.admin.mapper.provider.SysUserProvider;
 import com.gis.common.base.entity.dto.UserPageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
@@ -38,4 +37,7 @@ public interface SysUserMapper extends IBaseMapper<SysUserEntity, Long> {
 
     @Update("update sys_user set online_time = online_time + #{onlineTime} , update_time = NOW() where id = #{userId} ")
     void updateOnlineTime(Long userId, long onlineTime);
+
+    @Update("update sys_user set level = #{level} , update_time = NOW() where id = #{userId} ")
+    void updateLevel(Long userId, Integer level);
 }

+ 2 - 2
gis_cms/src/main/java/com/gis/cms/service/IntegralService.java

@@ -1,7 +1,7 @@
-package com.gis.cms.service;
+package com.gis.admin.service;
 
 
-import com.gis.cms.entity.po.IntegralEntity;
+import com.gis.admin.entity.po.IntegralEntity;
 import com.gis.common.base.service.IBaseService;
 import com.gis.common.util.Result;
 

+ 2 - 0
gis_admin/src/main/java/com/gis/admin/service/SysUserService.java

@@ -42,4 +42,6 @@ public interface SysUserService extends IBaseService<SysUserEntity, Long> {
     Result updatePwdByWeb(PasswordDto param);
 
     void updateOnlineTime(String token);
+
+    void updateLevel();
 }

+ 5 - 4
gis_cms/src/main/java/com/gis/cms/service/impl/IntegralServiceImpl.java

@@ -1,8 +1,8 @@
-package com.gis.cms.service.impl;
+package com.gis.admin.service.impl;
 
-import com.gis.cms.entity.po.IntegralEntity;
-import com.gis.cms.mapper.IntegralMapper;
-import com.gis.cms.service.IntegralService;
+import com.gis.admin.entity.po.IntegralEntity;
+import com.gis.admin.mapper.IntegralMapper;
+import com.gis.admin.service.IntegralService;
 import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.common.base.service.impl.IBaseServiceImpl;
 import com.gis.common.constant.TypeCode;
@@ -54,6 +54,7 @@ public class IntegralServiceImpl extends IBaseServiceImpl<IntegralEntity, Long>
     @Autowired
     IntegralMapper entityMapper;
 
+
     @Override
     public IBaseMapper<IntegralEntity, Long> getBaseMapper() {
         return this.entityMapper;

+ 36 - 0
gis_admin/src/main/java/com/gis/admin/service/impl/SysUserServiceImpl.java

@@ -3,6 +3,9 @@ package com.gis.admin.service.impl;
 import cn.hutool.core.util.RandomUtil;
 import com.gis.admin.entity.dto.ResetPasswordDto;
 import com.gis.admin.entity.po.SysRoleEntity;
+import com.gis.admin.entity.vo.RankVo;
+import com.gis.admin.mapper.SysBaseMapper;
+import com.gis.admin.service.IntegralService;
 import com.gis.common.base.entity.dto.UserPageDateDto;
 import com.gis.common.base.entity.po.LogEntity;
 import com.gis.common.base.exception.BaseRuntimeException;
@@ -10,6 +13,7 @@ import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.common.base.service.LogService;
 import com.gis.common.base.service.impl.IBaseServiceImpl;
 import com.gis.common.constant.MsgCode;
+import com.gis.common.constant.TypeCode;
 import com.gis.common.util.Base64Converter;
 import com.gis.common.util.JwtUtil;
 import com.gis.common.util.PasswordUtils;
@@ -49,9 +53,18 @@ public class SysUserServiceImpl extends IBaseServiceImpl<SysUserEntity, Long> im
     @Autowired
     LogService logService;
 
+    @Autowired
+    IntegralService integralService;
+
+    @Autowired
+    SysBaseMapper sysBaseMapper;
+
     /**重置密码redis key*/
     final static String RESET_PASSWORD_KEY = "reset_password_";
 
+    // 目前是12h
+    private static Integer LEVEL_EXPIRE = 1000 * 60 * 60 * 12;
+
     @Override
     public IBaseMapper<SysUserEntity, Long> getBaseMapper() {
         return this.entityMapper;
@@ -320,5 +333,28 @@ public class SysUserServiceImpl extends IBaseServiceImpl<SysUserEntity, Long> im
         entityMapper.updateOnlineTime(userId, onlineTime);
     }
 
+    @Override
+    public void updateLevel() {
+        Long userId = getTokenUserId();
+        // 每天只检查一次
+        String redisKey = TypeCode.REDIS_LEVEL_KEY + userId;
+        String levelKey = (String)redisUtil.get(redisKey);
+        if (levelKey != null){
+            log.info("今天已更新过用户等级,不需要再更新");
+            return;
+        }
+
+        Integer grade = integralService.totalGrade();
+        List<RankVo> rankList = sysBaseMapper.getRankList();
+        for (RankVo rankVo : rankList) {
+            if (grade >= rankVo.getExp()){
+                // 有效期12小时
+                redisUtil.set(redisKey, grade+"", LEVEL_EXPIRE);
+                entityMapper.updateLevel(userId, rankVo.getLevel());
+                break;
+            }
+        }
+    }
+
 
 }

+ 8 - 2
gis_cms/src/main/java/com/gis/cms/mapper/MyBaseMapper.java

@@ -3,14 +3,18 @@ package com.gis.cms.mapper;
 
 import com.gis.cms.entity.po.FileEntity;
 import com.gis.common.base.mapper.IBaseMapper;
+import org.apache.ibatis.annotations.CacheNamespace;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 
+/**
+ * @CacheNamespace(flushInterval = 360000)
+ * 开启二级缓存,缓存6分钟刷新, 毫米数
+ */
+@CacheNamespace(flushInterval = 360000)
 @Component
 @Mapper
 public interface MyBaseMapper extends IBaseMapper<FileEntity, Long> {
@@ -20,4 +24,6 @@ public interface MyBaseMapper extends IBaseMapper<FileEntity, Long> {
 
     @Select("select visit from tb_visit where is_delete = 0  and module = #{module}")
     Integer getVisit(String module);
+
+
 }

+ 1 - 5
gis_cms/src/main/java/com/gis/cms/service/impl/BarrageServiceImpl.java

@@ -1,13 +1,10 @@
 package com.gis.cms.service.impl;
 
+import com.gis.admin.service.IntegralService;
 import com.gis.cms.entity.dto.CommentDto;
 import com.gis.cms.entity.po.BarrageEntity;
-import com.gis.cms.entity.po.CommentEntity;
-import com.gis.cms.entity.po.IntegralEntity;
 import com.gis.cms.entity.vo.BarrageVo;
-import com.gis.cms.entity.vo.MournVo;
 import com.gis.cms.mapper.BarrageMapper;
-import com.gis.cms.service.IntegralService;
 import com.gis.cms.service.SensitiveService;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
@@ -22,7 +19,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Set;

+ 1 - 2
gis_cms/src/main/java/com/gis/cms/service/impl/CommentServiceImpl.java

@@ -1,11 +1,11 @@
 package com.gis.cms.service.impl;
 
+import com.gis.admin.service.IntegralService;
 import com.gis.cms.entity.dto.CommentDto;
 import com.gis.cms.entity.po.CommentEntity;
 import com.gis.cms.entity.vo.CommentVo;
 import com.gis.cms.mapper.CommentMapper;
 import com.gis.cms.service.CommentService;
-import com.gis.cms.service.IntegralService;
 import com.gis.cms.service.SensitiveService;
 import com.gis.cms.tree.CommentTreeUtil;
 import com.gis.cms.tree.vo.CommentTree;
@@ -18,7 +18,6 @@ import com.github.pagehelper.PageInfo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import tk.mybatis.mapper.entity.Condition;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;

+ 1 - 3
gis_cms/src/main/java/com/gis/cms/service/impl/MournServiceImpl.java

@@ -1,10 +1,10 @@
 package com.gis.cms.service.impl;
 
+import com.gis.admin.service.IntegralService;
 import com.gis.cms.entity.dto.MournDto;
 import com.gis.cms.entity.po.MournEntity;
 import com.gis.cms.entity.vo.MournVo;
 import com.gis.cms.mapper.MournMapper;
-import com.gis.cms.service.IntegralService;
 import com.gis.cms.service.SensitiveService;
 import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.base.entity.dto.PageDateDto;
@@ -16,11 +16,9 @@ import com.gis.common.util.MyStrUtil;
 import com.gis.common.util.Result;
 import com.gis.cms.service.MournService;
 import com.github.pagehelper.PageInfo;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import tk.mybatis.mapper.entity.Condition;
 
 import java.time.LocalDateTime;
 import java.util.List;

+ 1 - 7
gis_cms/src/main/java/com/gis/cms/service/impl/QuestionUserServiceImpl.java

@@ -1,13 +1,9 @@
 package com.gis.cms.service.impl;
 
-import cn.hutool.core.util.NumberUtil;
-import com.alibaba.fastjson.JSONObject;
+import com.gis.admin.service.IntegralService;
 import com.gis.cms.entity.dto.CountAnswerDto;
-import com.gis.cms.entity.po.QuestionAnswerEntity;
-import com.gis.cms.entity.po.QuestionGroupEntity;
 import com.gis.cms.entity.po.QuestionUserEntity;
 import com.gis.cms.mapper.QuestionUserMapper;
-import com.gis.cms.service.IntegralService;
 import com.gis.cms.service.QuestionAnswerService;
 import com.gis.cms.service.QuestionUserService;
 import com.gis.common.base.mapper.IBaseMapper;
@@ -18,9 +14,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 
 /**

+ 15 - 3
gis_cms/src/main/java/com/gis/cms/service/impl/RaceServiceImpl.java

@@ -1,9 +1,9 @@
 package com.gis.cms.service.impl;
 
+import com.gis.admin.service.IntegralService;
 import com.gis.cms.entity.dto.CountRaceDto;
 import com.gis.cms.entity.po.RaceEntity;
 import com.gis.cms.mapper.RaceMapper;
-import com.gis.cms.service.IntegralService;
 import com.gis.cms.service.RaceService;
 import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.common.base.service.impl.IBaseServiceImpl;
@@ -16,7 +16,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
-import java.util.ArrayList;
 import java.util.List;
 
 
@@ -36,6 +35,11 @@ public class RaceServiceImpl extends IBaseServiceImpl<RaceEntity, Long> implemen
 
 
 
+    // 目前是12h
+    private static Integer RACE_EXPIRE = 1000 * 60 * 60 * 12;
+
+
+
     @Override
     public IBaseMapper<RaceEntity, Long> getBaseMapper() {
         return this.entityMapper;
@@ -68,8 +72,8 @@ public class RaceServiceImpl extends IBaseServiceImpl<RaceEntity, Long> implemen
         LocalDate now = LocalDate.now();
         if ("month".equals(type)){
             String date = now.getYear()+"" + now.getMonthValue();
-            list = entityMapper.getRankingByMonth(size, date);
 
+            list = entityMapper.getRankingByMonth(size, date);
             // 当月排名前山的添加积分, 每月1号添加积分
             if (now.getDayOfMonth() == 1){
                 addGrade(list);
@@ -86,10 +90,18 @@ public class RaceServiceImpl extends IBaseServiceImpl<RaceEntity, Long> implemen
      * @param param
      */
     private void addGrade(List<RaceEntity> param){
+        String redisKey = TypeCode.REDIS_RACE_KEY + 1;
+        String data = (String)redisUtil.get(redisKey);
+        if (data != null) {
+            log.info("今天已更新排名,不需要再更新");
+            return;
+        }
         int i = 1;
         for (RaceEntity entity : param) {
             integralService.addGrade("ranking_" + i, entity.getUserId());
             if (i == 3){
+                // 有效期12小时
+                redisUtil.set(redisKey, "update", RACE_EXPIRE);
                 break;
             }
             i++;

+ 7 - 0
gis_common/src/main/java/com/gis/common/constant/TypeCode.java

@@ -39,4 +39,11 @@ public class TypeCode {
     public static final String INTEGRAL_RANKING_3 = "ranking_3";
 
 
+    /**排名积分,每月一号更新一次*/
+    public static final String REDIS_RACE_KEY = "race_key_";
+
+    /**军衔等级, 每天登录只检查一次*/
+    public final static String REDIS_LEVEL_KEY = "level_key_";
+
+
 }