Explorar o código

删除角色, 将该角色下的用户设置为游客

wuweihao %!s(int64=4) %!d(string=hai) anos
pai
achega
3c06bb121e

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

@@ -187,9 +187,7 @@ public class LoginController {
 
         Long userId = entity.getId();
         Object role = getRoleKey(userId);
-//        SysRoleEntity role = getRole(userId);
         log.info("role: {}", role);
-//        String roleKey = role.getRoleKey();
 
         if ("cms".equals(from) && ((Set)role).contains("sys_visitor")) {
             log.error("游客不能登录管理后台");

+ 5 - 2
gis_admin/src/main/java/com/gis/admin/mapper/SysRoleMapper.java

@@ -48,6 +48,9 @@ public interface SysRoleMapper extends IBaseMapper<SysRoleEntity, Long> {
     SysRoleEntity findByUserId(Long userId);
 
     /** 该角色是否有用户在使用*/
-    @Select("select a.id from sys_role a left join sys_user_role b on a.id=b.role_id left join sys_user c on c.id=b.user_id where a.is_delete=0 and c.is_delete=0 and a.id=#{roleId}")
-    Integer checkUseByRoleId(Long roleId);
+    @Select("select b.user_id from sys_role a left join sys_user_role b on a.id=b.role_id left join sys_user c on c.id=b.user_id where a.is_delete=0 and c.is_delete=0 and a.id=#{roleId}")
+    List<Long> checkUseByRoleId(Long roleId);
+
+    @Update("update sys_user_role set role_id = #{roleId} , create_time = NOW() where user_id = #{userId} ")
+    void setUserIdByRoleId(Long userId, Long roleId);
 }

+ 3 - 3
gis_admin/src/main/java/com/gis/admin/mapper/provider/SysRoleProvider.java

@@ -13,7 +13,7 @@ public class SysRoleProvider {
 
     public String search(PageDto param) {
         StringBuffer sql = new StringBuffer(
-                "select a.*, count(*) as count from sys_role a left JOIN sys_user_role b on b.role_id=a.id WHERE a.is_delete=0 ");
+                "select a.*, count(b.user_id) as count from sys_role a left JOIN sys_user_role b on b.role_id=a.id WHERE a.is_delete=0 ");
 
         String searchKey = param.getSearchKey();
         if (!StringUtils.isAllBlank(searchKey)) {
@@ -21,9 +21,9 @@ public class SysRoleProvider {
             sql.append(" and ( a.role_name like '%").append(searchKey).append("%' )");
         }
 
-        sql.append(" GROUP BY a.id");
 
-        sql.append(" order by a.create_time desc");
+        sql.append(" GROUP BY a.id");
+        sql.append(" order by a.sort, a.create_time desc");
         log.info("sql: {}", sql.toString());
         return sql.toString();
     }

+ 12 - 11
gis_admin/src/main/java/com/gis/admin/service/impl/SysRoleServiceImpl.java

@@ -144,10 +144,8 @@ public class SysRoleServiceImpl extends IBaseServiceImpl<SysRoleEntity, Long> im
             return Result.failure("系统预设角色不能删除");
         }
 
-        // 检测是否有用户在使用该角色
-        if (checkUse(id)) {
-            return Result.failure("该角色已绑定用户,不能删除");
-        }
+        // 检测是否有用户在使用该角色, 如果使用,将该角色设置为游客角色
+        checkUserRole(id);
 
         // db数据真删除, 会把中间表数据也删除
         this.deleteById(id);
@@ -157,17 +155,20 @@ public class SysRoleServiceImpl extends IBaseServiceImpl<SysRoleEntity, Long> im
     /**
      *
      * @param roleId 角色id
-     * @return true: 有用户在使用
-     * false : 没有用户在使用
      */
-    private Boolean checkUse(Long roleId){
-        Integer integer = entityMapper.checkUseByRoleId(roleId);
-        if (integer != null) {
-            return true;
+    private void checkUserRole(Long roleId){
+        List<Long> userIds = entityMapper.checkUseByRoleId(roleId);
+        if (userIds.size() > 0) {
+            // 需要确认数据库sys_role.role_key:2=sys_visitor
+            for (Long userId : userIds) {
+                entityMapper.setUserIdByRoleId(userId, 2L);
+            }
         }
-        return false;
     }
 
+
+
+
     @Override
     public Result detail(Long id) {
         SysRoleEntity roleEntity = this.findById(id);

+ 1 - 2
gis_cms/src/main/java/com/gis/cms/controller/QuestionGroupController.java

@@ -62,8 +62,7 @@ public class QuestionGroupController  {
     }
 
 
-//    @WebControllerLog(description = "题组管理-提审", addDb = true)
-    @WebControllerLog(description = "题组管理-审核", addDb = true)
+    @WebControllerLog(description = "题组管理-提审", addDb = true)
     @ApiOperation("题组管理-提审")
     @GetMapping("apply/{id}")
     public Result apply(@PathVariable Long id) {

+ 2 - 0
gis_cms/src/main/java/com/gis/cms/controller/WebController.java

@@ -211,6 +211,8 @@ public class WebController {
     @PostMapping("register")
     @Transactional
     public Result register(@Valid @RequestBody RegisterDto param) {
+        param.setPassword(Base64Converter.decodePassword(param.getPassword()));
+        param.setVerifyPassword(Base64Converter.decodePassword(param.getVerifyPassword()));
         return sysUserService.register(param);
 
 

+ 4 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/CountAnswerDto.java

@@ -27,5 +27,9 @@ public class CountAnswerDto {
     @ApiModelProperty(value = "用户id", required = true)
     private Long  userId;
 
+    @NotNull(message = "耗时不能为空")
+    @ApiModelProperty(value = "耗时(单位:秒)", required = true)
+    private Long  time;
+
 
 }

+ 3 - 0
gis_cms/src/main/java/com/gis/cms/entity/po/QuestionUserEntity.java

@@ -40,5 +40,8 @@ public class QuestionUserEntity extends BaseEntity implements Serializable {
     @Transient
     private String realName;
 
+    @ApiModelProperty(value = "耗时", required = true)
+    private Long  time;
+
 
 }

+ 7 - 2
gis_cms/src/main/java/com/gis/cms/mapper/QuestionUserMapper.java

@@ -5,6 +5,7 @@ import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.cms.entity.po.QuestionUserEntity;
 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;
@@ -14,8 +15,12 @@ import java.util.List;
 public interface QuestionUserMapper extends IBaseMapper<QuestionUserEntity, Long> {
 
 //    @Select("select distinct a.user_id, a.score, a.id, b.real_name as realName from tb_question_user a left join sys_user b on b.id=a.user_id where a.is_delete=0 AND a.question_group_id=#{questionGroupId} order by a.score desc limit 10")
-    @Select("SELECT DISTINCT a.user_id,  max(a.score) as score ,a.id, b.real_name as realName " +
+    @Select("SELECT DISTINCT a.user_id,  max(a.score) as score ,a.id, b.real_name as realName, a.time, a.question_group_id " +
             "FROM tb_question_user a left join sys_user b on b.id=a.user_id  WHERE question_group_id=#{questionGroupId} " +
-            "GROUP BY user_id ORDER BY a.score desc limit 10")
+            "GROUP BY user_id ORDER BY a.score desc, a.time   limit 10")
     List<QuestionUserEntity> ranking(Long questionGroupId);
+
+
+    @Update("update tb_question_group set visit = visit + 1 , update_time = NOW() where is_delete = 0  and id= #{questionGroupId}")
+    void addVisit(Long questionGroupId);
 }

+ 5 - 3
gis_cms/src/main/java/com/gis/cms/service/impl/QuestionGroupServiceImpl.java

@@ -148,10 +148,12 @@ public class QuestionGroupServiceImpl extends IBaseServiceImpl<QuestionGroupEnti
             return Result.failure("对象id不存在");
         }
 
-        if (entity.getStatus() != 3 || display == 1) {
-            return Result.failure("只有审核通过的,才允许设置为显示状态");
-
+        if (display == 1) {
+            if (entity.getStatus() != 3){
+                return Result.failure("只有审核通过的,才允许设置为显示状态");
+            }
         }
+
         entity.setDisplay(display);
         this.update(entity);
         return Result.success(entity);

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

@@ -96,10 +96,14 @@ public class QuestionUserServiceImpl extends IBaseServiceImpl<QuestionUserEntity
             BeanUtils.copyProperties(param, userEntity);
             this.save(userEntity);
 
-
+            addVisit(param.getQuestionGroupId());
 
         return Result.success();
     }
 
 
+    private void addVisit(Long questionGroupId){
+        entityMapper.addVisit(questionGroupId);
+    }
+
 }

+ 1 - 1
gis_common/src/main/java/com/gis/common/util/Base64Converter.java

@@ -87,7 +87,7 @@ public class Base64Converter {
 
     @Test
     public void test(){
-        String password = "1UxELRpIExMTExcWG627AcMTQBIN2mog";
+        String password = "Ie233eCnIzNDU2ltskQTN0MTmMK8XMNV";
         System.out.println(decodePassword(password));
     }