浏览代码

redis 配置改为集群

wuhongshuang 3 年之前
父节点
当前提交
17fd666786
共有 2 个文件被更改,包括 99 次插入34 次删除
  1. 84 28
      src/main/java/com/szwl/controller/TAdminController.java
  2. 15 6
      src/main/resources/bootstrap.yml

+ 84 - 28
src/main/java/com/szwl/controller/TAdminController.java

@@ -1,27 +1,40 @@
 package com.szwl.controller;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.UUID;
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.annotation.Audit;
+import com.szwl.constant.AuditEnum;
 import com.szwl.constant.ResponseCodesEnum;
+import com.szwl.exception.BizException;
+import com.szwl.manager.TokenManager;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.bo.UserDetailBO;
+import com.szwl.model.entity.SysUserRole;
 import com.szwl.model.entity.TAdmin;
 import com.szwl.model.entity.TMessageCode;
-import com.szwl.model.entity.TProportion;
+import com.szwl.model.param.AddLoginUserParam;
+import com.szwl.service.SysRoleService;
+import com.szwl.service.SysUserRoleService;
 import com.szwl.service.TAdminService;
 import com.szwl.service.TMessageCodeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Date;
-import java.util.List;
+import javax.validation.Valid;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -31,17 +44,57 @@ import java.util.List;
  * @author wuhs
  * @since 2022-04-14
  */
+@Slf4j
 @Api(value = "/tAdmin", tags = {"账户"})
 @RestController
 @RequestMapping("/tAdmin")
 public class TAdminController {
     @Autowired
+    SysRoleService sysRoleService;
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+    @Autowired
+    TokenManager tokenManager;
+    @Autowired
     TAdminService tAdminService;
     @Autowired
     TMessageCodeService tMessageCodeService;
 
+    @ApiOperation(value = "添加账号")
+    @PostMapping("/addLoginUser")
+    @Transactional
+    @Audit(type = AuditEnum.INSERT,content = "#loginUser.name + '添加账号'")
+    public ResponseModel<?> addLoginUser(@RequestBody @Valid AddLoginUserParam param) {
+        //获取当前操作人员
+        UserDetailBO loginUser = tokenManager.getLoginUserDetails();
+        // 保存用户实体
+        Date now = new Date();
+        TAdmin entity = BeanUtil.copyProperties(param,TAdmin.class);
+        entity.setParentId(loginUser.getId());
+        entity.setIsAdmined(true);
+        entity.setCreateDate(now);
+        entity.setModifyDate(now);
+        entity.setIsLocked(false);
+        entity.setLoginFailureCount(0);
+
+        tAdminService.save(entity);
+        log.debug("添加账号 id:{},TAdmin:{}",entity.getId(),entity);
+        // 保存用户角色关系
+        List<SysUserRole> userRoleList = param.getRoleList()
+                .stream()
+                .map(e -> new SysUserRole().setRoleId(e).setUserId(String.valueOf(entity.getId())) )
+                .collect(Collectors.toList());
+
+        if(CollUtil.isNotEmpty(userRoleList)){
+            sysUserRoleService.saveBatch(userRoleList);
+        }
+        return R.ok(entity);
+    }
+
+
     @ApiOperation(value = "注册")
     @PostMapping("/save")
+    @Transactional
     public ResponseModel<?> save(@RequestBody TAdmin admin) {
         if(StringUtils.isEmpty(admin.getUsername())||StringUtils.isEmpty(admin.getName())||StringUtils.isEmpty(admin.getPassword())){
             return R.fail(ResponseCodesEnum.A0100,"数据有空!");
@@ -99,8 +152,7 @@ public class TAdminController {
             admin.setIsEnabled(true);
             admin.setLoginFailureCount(0);
             admin.setIsLocked(false);
-//            admin.setPassword(DigestUtils.md5Hex(admin.getPassword()));
-            admin.setPassword(admin.getPassword());
+            admin.setPassword(DigestUtils.md5Hex(admin.getPassword()));
             boolean b = tAdminService.save(admin);
             tMessageCode.setModifyDate(new Date());
             tMessageCodeService.saveOrUpdate(tMessageCode);
@@ -112,27 +164,34 @@ public class TAdminController {
     }
     @ApiOperation(value = "登录")
     @PostMapping("/login")
-    public ResponseModel<?> login(String username,String password) {
+    @Audit(type = AuditEnum.LOGIN,content = "#username + '请求登录'")
+    public ResponseModel<UserDetailBO> login(String username, String password) {
         if(StringUtils.isEmpty(username)||StringUtils.isEmpty(password)){
             return R.fail(ResponseCodesEnum.A0001,"参数有空");
         }
+
         //验证用户名登录
         LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-        query.eq(TAdmin::getUsername,username);
+//        query.eq(TAdmin::getUsername,username);
         query.eq(TAdmin::getPassword,password);
-        List<TAdmin> list = tAdminService.list(query);
-        if(list.size()>0){
-            return R.ok(list.get(0));
-        }
-        //验证手机登录
-        LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
-        query1.eq(TAdmin::getPhone,username);
-        query1.eq(TAdmin::getPassword,password);
-        List<TAdmin> list1 = tAdminService.list(query1);
-        if(list1.size()>0){
-            return R.ok(list1.get(0));
-        }
-        return R.fail(ResponseCodesEnum.A0001,"密码或用户名错误");
+        query.and(
+                wrapper -> {
+                    wrapper.eq(TAdmin::getUsername,username)
+                            .or().eq(TAdmin::getPhone,username);
+                }
+        );
+        TAdmin tAdmin = Optional.ofNullable(tAdminService.getOnly(query))
+                .orElseThrow(() -> new BizException(ResponseCodesEnum.L0002));
+        UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin,UserDetailBO.class);
+
+        String token = IdUtil.simpleUUID();
+        userDetailBO.setCurrentToken(token);
+        // 获取拥有的权限菜单
+        Set<String> menuList = sysRoleService.listAuthMenuByUserId(userDetailBO.getId());
+        userDetailBO.setMenuCodeList(CollUtil.newArrayList(menuList));
+        // 保存到redis
+        tokenManager.saveAuthentication(token,userDetailBO);
+        return R.ok(userDetailBO);
     }
     @ApiOperation(value = "修改密码")
     @PostMapping("/updatePassword")
@@ -156,12 +215,9 @@ public class TAdminController {
 
     @ApiOperation(value = "获取账号信息")
     @GetMapping("/getAdmin")
-    public ResponseModel<IPage<TAdmin>> getAdmin(String id) {
-        LambdaQueryWrapper<TAdmin> query = Wrappers.lambdaQuery();
-        query.eq(TAdmin::getId,Long.valueOf(id));
-        Page<TAdmin> page = new Page<>(0, 10, true);
-        IPage<TAdmin> iPage = tAdminService.page(page, query);
-        return R.ok(iPage);
+    public ResponseModel<TAdmin> getAdmin(String id) {
+        TAdmin tAdmin = tAdminService.getById(id);
+        return R.ok(tAdmin);
     }
 }
 

+ 15 - 6
src/main/resources/bootstrap.yml

@@ -7,7 +7,7 @@ spring:
       discovery:
         service-id: config-server
         # 是否获取配置中心配置
-        enabled: false
+        enabled: true
   datasource:
     url: jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/szwl
     username: root
@@ -58,14 +58,23 @@ spring:
 #    host: localhost         # Redis服务器地址
 #    port: 6379              # Redis服务器连接端口
 #    password:               # Redis服务器连接密码(默认为空)
-
   redis:
-    timeout: 5000
     cluster:
+      # 连接超时时间(毫秒)
+      timeout: 50000
+      #设置命令的执行时间,如果超过这个时间,则报错
+      commandTimeout: 50000
+      #集群配置
       nodes: 10.0.0.153:7000,10.0.0.153:7001,10.0.0.152:7001,10.0.0.152:7000,10.0.0.155:7001,10.0.0.155:7000
-      max-attempts: 5
-      max-redirects: 7
-      timeout: 12000
+      pool:
+        # 连接池最大连接数(使用负值表示没有限制)
+        max-active: 5000
+        # 连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: 2000
+        # 连接池中的最大空闲连接
+        max-idle: 500
+        # 连接池中的最小空闲连接
+        min-idle: 5
 
 elasticSearch:
   host: 120.78.140.173