| websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/controller/AdminLogin.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/controller/UserController.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java | ●●●●● patch | view | raw | blame | history | |
| websocketSerivce/src/main/resources/application.yml | ●●●●● patch | view | raw | blame | history |
websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java
New file @@ -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; } } 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); // } //} 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); } } 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; 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; websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java
New file @@ -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; } websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java
@@ -17,7 +17,6 @@ registry.addInterceptor(new LoginInterceptor()) .addPathPatterns("/**") // 拦截所有请求 .excludePathPatterns( "/user/saveConfig", "/user/login"); } } 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 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 # 实体类的包路径