1
zj
2024-08-01 cc90152bc8eab5e26bd997a0fc5b06ae78bd2b0b
1
7 files modified
2 files added
238 ■■■■ changed files
websocketSerivce/src/main/java/org/example/common/MybatisPlusConfig.java 23 ●●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/controller/AdminLogin.java 104 ●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/controller/UserController.java 50 ●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/pojo/ConfigCurrency.java 2 ●●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/pojo/bo/WsBo.java 3 ●●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/pojo/vo/UpdateUserVo.java 48 ●●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/util/WebMvcConfig.java 1 ●●●● patch | view | raw | blame | history
websocketSerivce/src/main/java/org/example/websocket/server/WsServer.java 4 ●●●● patch | view | raw | blame | history
websocketSerivce/src/main/resources/application.yml 3 ●●●●● 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 # 实体类的包路径