| | |
| | | package org.example.controller; |
| | | |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.GsonBuilder; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.example.common.ServerResponse; |
| | | import org.example.dao.ConfigCurrencyMapper; |
| | | import org.example.dao.LogMapper; |
| | | import org.example.pojo.ConfigCurrency; |
| | | import org.example.pojo.Log; |
| | | import org.example.pojo.LoginOut; |
| | | import org.example.pojo.User; |
| | | import org.example.pojo.vo.DeleteConfigVo; |
| | | import org.example.pojo.vo.SaveConfigVo; |
| | | import org.example.server.impl.UserServiceImpl; |
| | | import org.example.util.IpAddressUtil; |
| | | import org.example.util.JwtUtil; |
| | | import org.example.util.MD5Util; |
| | | import org.example.util.RedisUtil; |
| | | import org.example.util.*; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | import java.security.SecureRandom; |
| | | import java.sql.Date; |
| | | import java.time.LocalDate; |
| | | import java.util.Base64; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @program: demo |
| | |
| | | **/ |
| | | @RestController |
| | | @RequestMapping("/user") |
| | | @CrossOrigin(origins = "*") |
| | | @Slf4j |
| | | public class UserController { |
| | | |
| | | @Autowired |
| | |
| | | private LogMapper logMapper; |
| | | |
| | | @PostMapping("/login") |
| | | @ResponseBody |
| | | public ServerResponse saveUser(@RequestParam("account") String account |
| | | , @RequestParam("password") String password, HttpServletRequest request) { |
| | | , @RequestParam("password") String password, HttpServletRequest request) throws JsonProcessingException { |
| | | try { |
| | | User user = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getAccount, account)); |
| | | if(null == user){ |
| | | return ServerResponse.createBySuccessMsg("用户不存在"); |
| | | } |
| | | |
| | | User user = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getAccount, account).eq(User::getIsRoot,0)); |
| | | if(null == user){ |
| | | return ServerResponse.createBySuccessMsg("用户不存在"); |
| | | if (!MD5Util.verify(password, user.getPassword())) { |
| | | return ServerResponse.createBySuccessMsg("密码错误"); |
| | | } |
| | | |
| | | if(user.getIsRoot() == 1){ |
| | | String token = JwtUtil.getToken(user); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("token",token); |
| | | String loginJson = "[\n" + |
| | | " {\n" + |
| | | " \"title\":\"行情比对\",\n" + |
| | | " \"name\":\"index\",\n" + |
| | | " \"path\":\"/index\",\n" + |
| | | " \"icon\":\"el-icon-data-analysis\",\n" + |
| | | " \"component\":\"comparison\"\n" + |
| | | " },\n" + |
| | | " {\n" + |
| | | " \"title\":\"用户管理\",\n" + |
| | | " \"name\":\"user\",\n" + |
| | | " \"path\":\"/user\",\n" + |
| | | " \"icon\":\"el-icon-user\",\n" + |
| | | " \"component\": \"user\"\n" + |
| | | " }\n" + |
| | | "]"; |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | |
| | | List<LoginOut> loginOuts = objectMapper.readValue(loginJson, new TypeReference<List<LoginOut>>() {}); |
| | | map.put("menu",loginOuts); |
| | | return ServerResponse.createBySuccess(map); |
| | | } |
| | | |
| | | //判断是否锁定 |
| | | if(user.getIsLock() == 1){ |
| | | return ServerResponse.createBySuccessMsg("账号已被锁定"); |
| | | } |
| | | |
| | | //判断是否到期 |
| | | if(new java.util.Date().after(user.getEndTime())){ |
| | | return ServerResponse.createBySuccessMsg("账号已到期"); |
| | | } |
| | | |
| | | String token = JwtUtil.getToken(user); |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("token",token); |
| | | String loginJson = "[\n" + |
| | | " {\n" + |
| | | " \"title\":\"行情比对\",\n" + |
| | | " \"name\":\"index\",\n" + |
| | | " \"path\":\"/index\",\n" + |
| | | " \"icon\":\"el-icon-data-analysis\",\n" + |
| | | " \"component\":\"comparison\"\n" + |
| | | " }\n" + |
| | | "]"; |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | List<LoginOut> loginOuts = objectMapper.readValue(loginJson, new TypeReference<List<LoginOut>>() {}); |
| | | map.put("menu",loginOuts); |
| | | |
| | | String key = "user_"; |
| | | RedisUtil.set(key+user.getId(),token); |
| | | String ip = IpAddressUtil.getIpAddress(request); |
| | | String address = null; |
| | | address = IpAddressUtil.getIpPossessionByFile(ip); |
| | | if(null == address){ |
| | | address = IpAddressUtil.getIpAddressByOnline(ip); |
| | | } |
| | | Log log = new Log(); |
| | | log.setIp(ip); |
| | | log.setAccount(account); |
| | | log.setLoginTime(new java.util.Date()); |
| | | log.setAddress(address); |
| | | logMapper.insert(log); |
| | | return ServerResponse.createBySuccess(map); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | log.error("登录异常:"+e.getMessage()); |
| | | } |
| | | |
| | | if (!MD5Util.verify(password, user.getPassword())) { |
| | | return ServerResponse.createBySuccessMsg("密码错误"); |
| | | } |
| | | |
| | | //判断是否锁定 |
| | | if(user.getIsLock() == 1){ |
| | | return ServerResponse.createBySuccessMsg("账号已被锁定"); |
| | | } |
| | | |
| | | //判断是否到期 |
| | | if(new java.util.Date().after(user.getEndTime())){ |
| | | return ServerResponse.createBySuccessMsg("账号已到期"); |
| | | } |
| | | |
| | | |
| | | String token = JwtUtil.getToken(user); |
| | | Map<String,String> map = new HashMap<>(); |
| | | map.put("token",token); |
| | | String key = "user_"; |
| | | RedisUtil.set(key+user.getId(),token); |
| | | String ip = IpAddressUtil.getIpAddress(request); |
| | | String address = null; |
| | | address = IpAddressUtil.getIpPossessionByFile(ip); |
| | | if(null == address){ |
| | | address = IpAddressUtil.getIpAddressByOnline(ip); |
| | | } |
| | | Log log = new Log(); |
| | | log.setIp(ip); |
| | | log.setAccount(account); |
| | | log.setLoginTime(new java.util.Date()); |
| | | log.setAddress(address); |
| | | logMapper.insert(log); |
| | | |
| | | return ServerResponse.createBySuccess(map); |
| | | } |
| | | |
| | | // 生成指定长度的随机 token |
| | | public static String generateToken() { |
| | | SecureRandom secureRandom = new SecureRandom(); |
| | | byte[] token = new byte[16]; |
| | | secureRandom.nextBytes(token); |
| | | return Base64.getUrlEncoder().withoutPadding().encodeToString(token); |
| | | return ServerResponse.createBySuccessMsg("系统异常"); |
| | | } |
| | | |
| | | @PostMapping("/saveConfig") |