From cc90152bc8eab5e26bd997a0fc5b06ae78bd2b0b Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 01 Aug 2024 17:52:26 +0800
Subject: [PATCH] 1

---
 websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java       |    2 
 websocketSerivce/src/main/java/org/example/controller/AdminLogin.java     |  104 +++++++++++++-------------
 websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java         |    1 
 websocketSerivce/src/main/resources/application.yml                       |    3 
 websocketSerivce/src/main/java/org/example/controller/UserController.java |   50 ++++++++++-
 websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java |    4 
 websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java              |    3 
 websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java  |   23 +++++
 websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java      |   48 ++++++++++++
 9 files changed, 176 insertions(+), 62 deletions(-)

diff --git a/websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java b/websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java
new file mode 100644
index 0000000..107bb73
--- /dev/null
+++ b/websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java
@@ -0,0 +1,23 @@
+package org.example.common;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @program: demo
+ * @description:
+ * @create: 2024-07-31 14:59
+ **/
+@Configuration
+public class MybatisPlusConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2)); // 根据你的数据库类型选择相应的DbType
+        return interceptor;
+    }
+}
\ No newline at end of file
diff --git a/websocketSerivce/src/main/java/org/example/controller/AdminLogin.java b/websocketSerivce/src/main/java/org/example/controller/AdminLogin.java
index 803fb36..64aa642 100644
--- a/websocketSerivce/src/main/java/org/example/controller/AdminLogin.java
+++ b/websocketSerivce/src/main/java/org/example/controller/AdminLogin.java
@@ -1,52 +1,52 @@
-package org.example.controller;
-
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.example.common.ServerResponse;
-import org.example.pojo.User;
-import org.example.server.impl.UserServiceImpl;
-import org.example.util.JwtUtil;
-import org.example.util.MD5Util;
-import org.example.util.RedisUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.security.SecureRandom;
-import java.util.Base64;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @program: demo
- * @description:
- * @create: 2024-07-29 11:42
- **/
-@RestController
-@RequestMapping("/admin")
-public class AdminLogin {
-
-    @Autowired
-    private UserServiceImpl userService;
-
-    @PostMapping("/login")
-    public ServerResponse saveUser(@RequestParam("account") String account
-            , @RequestParam("password") String password) {
-
-        User user = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getAccount, account).eq(User::getIsRoot,1));
-        if(null == user){
-            return ServerResponse.createBySuccessMsg("管理员账号不存在");
-        }
-
-        if (!MD5Util.verify(password, user.getPassword())) {
-            return ServerResponse.createBySuccessMsg("密码错误");
-        }
-        String token = JwtUtil.getToken(user);
-        Map<String,String> map = new HashMap<>();
-        map.put("token",token);
-        return ServerResponse.createBySuccess(map);
-    }
-}
+//package org.example.controller;
+//
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import org.example.common.ServerResponse;
+//import org.example.pojo.User;
+//import org.example.server.impl.UserServiceImpl;
+//import org.example.util.JwtUtil;
+//import org.example.util.MD5Util;
+//import org.example.util.RedisUtil;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestParam;
+//import org.springframework.web.bind.annotation.RestController;
+//
+//import java.security.SecureRandom;
+//import java.util.Base64;
+//import java.util.Date;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+///**
+// * @program: demo
+// * @description:
+// * @create: 2024-07-29 11:42
+// **/
+//@RestController
+//@RequestMapping("/admin")
+//public class AdminLogin {
+//
+//    @Autowired
+//    private UserServiceImpl userService;
+//
+//    @PostMapping("/login")
+//    public ServerResponse saveUser(@RequestParam("account") String account
+//            , @RequestParam("password") String password) {
+//
+//        User user = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getAccount, account).eq(User::getIsRoot,1));
+//        if(null == user){
+//            return ServerResponse.createBySuccessMsg("管理员账号不存在");
+//        }
+//
+//        if (!MD5Util.verify(password, user.getPassword())) {
+//            return ServerResponse.createBySuccessMsg("密码错误");
+//        }
+//        String token = JwtUtil.getToken(user);
+//        Map<String,String> map = new HashMap<>();
+//        map.put("token",token);
+//        return ServerResponse.createBySuccess(map);
+//    }
+//}
diff --git a/websocketSerivce/src/main/java/org/example/controller/UserController.java b/websocketSerivce/src/main/java/org/example/controller/UserController.java
index c0a090d..a23f0e0 100644
--- a/websocketSerivce/src/main/java/org/example/controller/UserController.java
+++ b/websocketSerivce/src/main/java/org/example/controller/UserController.java
@@ -1,4 +1,6 @@
 package org.example.controller;
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -6,6 +8,7 @@
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.example.common.ServerResponse;
 import org.example.dao.ConfigCurrencyMapper;
 import org.example.dao.LogMapper;
@@ -15,6 +18,7 @@
 import org.example.pojo.User;
 import org.example.pojo.vo.DeleteConfigVo;
 import org.example.pojo.vo.SaveConfigVo;
+import org.example.pojo.vo.UpdateUserVo;
 import org.example.server.impl.UserServiceImpl;
 import org.example.util.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -137,7 +141,7 @@
 
     @PostMapping("/saveConfig")
     public ServerResponse saveConfig(@RequestBody SaveConfigVo saveConfigVo) {
-        currencyMapper.delete(new LambdaQueryWrapper<ConfigCurrency>().eq(ConfigCurrency::getUserId,saveConfigVo.getUserId()));
+//        currencyMapper.delete(new LambdaQueryWrapper<ConfigCurrency>().eq(ConfigCurrency::getUserId,saveConfigVo.getUserId()));
         saveConfigVo.getCurrencyList().forEach(f->{
             ConfigCurrency currency = new ConfigCurrency();
             currency.setUserId(saveConfigVo.getUserId());
@@ -156,13 +160,29 @@
 
     @PostMapping("/deleteConfig")
     public ServerResponse deleteConfig(@RequestBody DeleteConfigVo deleteConfigVo) {
-        currencyMapper.deleteBatchIds(deleteConfigVo.getConfigId());
+        currencyMapper.delete(new LambdaQueryWrapper<ConfigCurrency>()
+                .eq(ConfigCurrency::getUserId,deleteConfigVo.getUserId())
+                .in(ConfigCurrency::getId,deleteConfigVo.getConfigId()));
         List<ConfigCurrency> configCurrencies = currencyMapper.selectList(new LambdaQueryWrapper<ConfigCurrency>().eq(ConfigCurrency::getUserId, deleteConfigVo.getUserId()));
         String key = "config_";
         Gson gson = new GsonBuilder().setPrettyPrinting().create();
         String json = gson.toJson(configCurrencies);
         RedisUtil.set(key+deleteConfigVo.getUserId(),json);
         return ServerResponse.createBySuccess();
+    }
+
+    @PostMapping("/selectConfig")
+    public ServerResponse selectConfig(@RequestParam(value = "currency", required = false) String currency,
+                                       @RequestParam("pageNum") int pageNum,
+                                       @RequestParam("pageSize") int pageSize,
+                                       HttpServletRequest request) {
+        String token = request.getHeader("token");
+        User user = JwtUtil.verify(token);
+        Page<ConfigCurrency> page = new Page<>(pageNum, pageSize);
+        Page<ConfigCurrency> configCurrencyPage = currencyMapper.selectPage(page, new LambdaQueryWrapper<ConfigCurrency>()
+                .eq(StringUtils.isNotEmpty(currency), ConfigCurrency::getCurrency, currency));
+        return ServerResponse.createBySuccess(configCurrencyPage);
+
     }
 
     @PostMapping("/saveUser")
@@ -180,7 +200,7 @@
     @PostMapping("/deleteUser")
     public ServerResponse deleteUser(@RequestParam("id") int id) {
         User byId = userService.getById(id);
-        if(null == byId){
+        if(null == byId || byId.getIsRoot() == 1){
             return ServerResponse.createByErrorMsg("用户不存在");
         }
         userService.removeById(id);
@@ -188,13 +208,29 @@
     }
 
     @PostMapping("/updateUser")
-    public ServerResponse deleteUser(User user) {
-        User byId = userService.getById(user.getId());
-        if(null == byId){
+    public ServerResponse deleteUser(UpdateUserVo updateUserVo) {
+        User user = userService.getById(updateUserVo.getId());
+        if(null == user || user.getIsRoot() == 1){
             return ServerResponse.createByErrorMsg("用户不存在");
         }
-        user.setPassword(MD5Util.encrypt(user.getPassword()));
+        user.setAccount(updateUserVo.getAccount());
+        user.setPassword(MD5Util.encrypt(updateUserVo.getPassword()));
+        user.setEndTime(updateUserVo.getEndTime());
+        user.setIsLock(updateUserVo.getIsLock());
         userService.updateById(user);
         return ServerResponse.createBySuccess();
     }
+
+    @GetMapping("/selectUser")
+    public ServerResponse selectUser(@RequestParam(value = "account", required = false) String account,
+                                     @RequestParam("pageNum") int pageNum,
+                                     @RequestParam("pageSize") int pageSize) {
+        Page<User> page = new Page<>(pageNum, pageSize);
+        Page<User> pageList = userService.page(page, new LambdaQueryWrapper<User>()
+                .eq(StringUtils.isNotEmpty(account), User::getAccount, account)
+                        .eq(User::getIsShow,0)
+                        .eq(User::getIsRoot,0)
+                .orderByDesc(User::getAddTime));
+        return ServerResponse.createBySuccess(pageList);
+    }
 }
diff --git a/websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java b/websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java
index 052fbbf..b4c5c88 100644
--- a/websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java
+++ b/websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java
@@ -15,6 +15,8 @@
 @Data
 public class ConfigCurrency {
     @TableId(type = IdType.AUTO)
+    private String id;
+
     private Integer userId;
 
     private String currency;
diff --git a/websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java b/websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java
index 89b6414..a3908f1 100644
--- a/websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java
+++ b/websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java
@@ -16,6 +16,9 @@
     //当前用户id
     private Integer userId;
 
+    //登录token
+    private String token;
+
     //刷新时间
     private int time;
 
diff --git a/websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java b/websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java
new file mode 100644
index 0000000..580f333
--- /dev/null
+++ b/websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java
@@ -0,0 +1,48 @@
+package org.example.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.sql.Date;
+
+/**
+ * @program: demo
+ * @description:
+ * @create: 2024-07-31 15:07
+ **/
+@Data
+public class UpdateUserVo {
+
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 账号
+     */
+    private String account;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 到期时间
+     */
+    private Date endTime;
+
+    /**
+     * 是否锁定 0 否 1 是
+     */
+    private Integer isLock;
+
+    /**
+     * 设备数量
+     */
+    private Integer deviceNumber;
+
+}
diff --git a/websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java b/websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java
index 322701d..6e933a6 100644
--- a/websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java
+++ b/websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java
@@ -17,7 +17,6 @@
         registry.addInterceptor(new LoginInterceptor())
                 .addPathPatterns("/**")  // 拦截所有请求
                 .excludePathPatterns(
-                        "/user/saveConfig",
                         "/user/login");
     }
 }
\ No newline at end of file
diff --git a/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java b/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
index 18e0dcc..ea4cce4 100644
--- a/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
+++ b/websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java
@@ -69,7 +69,7 @@
     public void onOpen(Session session) {
         WsBo wsBo = getWsBoForSession(session.getId());
         String s = RedisUtil.get("user_" + wsBo.getUserId());
-        if(null == s || s.isEmpty()){
+        if(null == s || s.isEmpty() && !wsBo.getToken().equals(s)){
             closeSession(session, "用户未登录");
         }
         this.session = session;
@@ -88,7 +88,7 @@
 
     private boolean hasReceivedSubscription(Session session) {
         WsBo wsBo = getWsBoForSession(session.getId());
-        return wsBo != null; // 简化逻辑
+        return wsBo != null;
     }
 
     @OnError
diff --git a/websocketSerivce/src/main/resources/application.yml b/websocketSerivce/src/main/resources/application.yml
index 191842b..9ba5d8e 100644
--- a/websocketSerivce/src/main/resources/application.yml
+++ b/websocketSerivce/src/main/resources/application.yml
@@ -50,3 +50,6 @@
           config:
             multi-statement-allow: false
 
+mybatis:
+  mapper-locations: classpath:/mappers/*.xml # Mapper XML文件的位置
+  type-aliases-package: com.example.demo.entity # 实体类的包路径

--
Gitblit v1.9.3