diff --git a/cjscdsjkbpt/pom.xml b/cjscdsjkbpt/pom.xml index a5446a8..4aff008 100644 --- a/cjscdsjkbpt/pom.xml +++ b/cjscdsjkbpt/pom.xml @@ -40,9 +40,14 @@ test - org.mybatis.spring.boot - mybatis-spring-boot-starter - 2.3.1 + com.baomidou + mybatis-plus-boot-starter + 3.5.12 + + + cn.hutool + hutool-all + 5.8.8 com.alibaba.fastjson2 diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/AimzProjectApplication.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/AimzProjectApplication.java index 27a8703..3fbfa6f 100644 --- a/cjscdsjkbpt/src/main/java/cn/com/tenlion/AimzProjectApplication.java +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/AimzProjectApplication.java @@ -13,7 +13,7 @@ import java.util.HashMap; import java.util.Map; @SpringBootApplication(scanBasePackages = {"cn.com.tenlion"}) -@MapperScan("cn.com.tenlion.mapper") +@MapperScan("cn.com.tenlion.**.mapper") public class AimzProjectApplication { public static void main(String[] args) { diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/SignController.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/SignController.java new file mode 100644 index 0000000..d17fb3b --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/SignController.java @@ -0,0 +1,68 @@ +package cn.com.tenlion.auth.controller; + +import cn.com.tenlion.auth.entity.LoginUser; +import cn.com.tenlion.auth.entity.User; +import cn.com.tenlion.auth.filter.SystemFilter; +import cn.com.tenlion.auth.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/sign") +public class SignController { + + @Autowired + private UserService userService; + @Autowired + private HttpServletRequest httpServletRequest; + @Autowired + private HttpServletResponse httpServletResponse; + + @PostMapping("/signin") + public Map signin(@RequestBody LoginUser body) { + if (!StringUtils.hasText(body.getUsername())) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户名不能为空"); + }}; + } + if (!StringUtils.hasText(body.getPassword())) { + return new HashMap() {{ + put("code", 400); + put("msg", "密码不能为空"); + }}; + } + User user = userService.getByUsername(body.getUsername()); + if (user == null) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户不存在"); + }}; + } + if (!StringUtils.pathEquals(user.getPassword(), body.getPassword())) { + return new HashMap() {{ + put("code", 400); + put("msg", "密码错误"); + }}; + } + httpServletRequest.getSession().setAttribute(SystemFilter.SESSION_USER, user); + return new HashMap() {{ + put("code", 0); + put("msg", "success"); + }}; + } + + @GetMapping("signout") + public void signout() throws IOException { + httpServletRequest.getSession().removeAttribute(SystemFilter.SESSION_USER); + httpServletResponse.sendRedirect("/route/login.html"); + } + +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/UserController.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/UserController.java new file mode 100644 index 0000000..3e571a5 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/controller/UserController.java @@ -0,0 +1,88 @@ +package cn.com.tenlion.auth.controller; + +import cn.com.tenlion.auth.entity.User; +import cn.com.tenlion.auth.service.UserService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@RestController +@RequestMapping("/api/user") +public class UserController { + + @Autowired + private UserService userService; + + @PostMapping("save") + public Map save(@RequestBody User user) { + if (!StringUtils.hasText(user.getUsername())) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户名不能为空"); + }}; + } + if (!StringUtils.hasText(user.getPassword())) { + return new HashMap() {{ + put("code", 400); + put("msg", "密码不能为空"); + }}; + } + User byUsername = userService.getByUsername(user.getUsername()); + if (byUsername != null) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户已存在"); + }}; + } + userService.save(user); + return new HashMap() {{ + put("code", 0); + put("msg", "success"); + }}; + } + + @PutMapping("update/{userId}") + public Map update(@PathVariable("userId") Long userId, @RequestBody User user) { + if (!StringUtils.hasText(user.getUsername())) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户名不能为空"); + }}; + } + if (!StringUtils.hasText(user.getPassword())) { + return new HashMap() {{ + put("code", 400); + put("msg", "密码不能为空"); + }}; + } + User byUsername = userService.getByUsername(user.getUsername()); + if (byUsername != null && userId == byUsername.getId()) { + return new HashMap() {{ + put("code", 400); + put("msg", "用户已存在"); + }}; + } + user.setId(userId); + userService.updateById(user); + return new HashMap() {{ + put("code", 0); + put("msg", "success"); + }}; + } + + @GetMapping("get/{userId}") + public User get(@PathVariable("userId") Long userId) { + return userService.getById(userId); + } + + @GetMapping("list") + public List list() { + return userService.list(new QueryWrapper<>()).stream().peek(user -> user.setPassword(null)).collect(Collectors.toList()); + } +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/LoginUser.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/LoginUser.java new file mode 100644 index 0000000..a44f3b8 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/LoginUser.java @@ -0,0 +1,23 @@ +package cn.com.tenlion.auth.entity; + +public class LoginUser { + + private String username; + private String password; + + public String getUsername() { + return username == null ? "" : username.trim(); + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password == null ? "" : password.trim(); + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/User.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/User.java new file mode 100644 index 0000000..140f4c5 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/entity/User.java @@ -0,0 +1,81 @@ +package cn.com.tenlion.auth.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +@TableName("SYS_USER") +public class User { + + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + @TableField(value = "USERNAME") + private String username; + @TableField(value = "PASSWORD") + private String password; + @TableField(value = "NICKNAME") + private String nickname; + @TableField(value = "EMAIL") + private String email; + @TableField(value = "PHONE") + private String phone; + @TableField(value = "GMT_CREATE") + private String gmtCreate; + + public Long getId() { + return id == null ? 0 : id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username == null ? "" : username.trim(); + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password == null ? "" : password.trim(); + } + + public void setPassword(String password) { + this.password = password; + } + + public String getNickname() { + return nickname == null ? "" : nickname.trim(); + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getEmail() { + return email == null ? "" : email.trim(); + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone == null ? "" : phone.trim(); + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getGmtCreate() { + return gmtCreate == null ? "" : gmtCreate.trim(); + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/filter/SystemFilter.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/filter/SystemFilter.java new file mode 100644 index 0000000..6a7955d --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/filter/SystemFilter.java @@ -0,0 +1,27 @@ +package cn.com.tenlion.auth.filter; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +public class SystemFilter implements Filter { + + public static final String SESSION_USER = "SESSION_USER"; + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; + HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse; + + HttpSession session = httpServletRequest.getSession(); + Object sessionUser = session.getAttribute(SESSION_USER); + if (sessionUser == null) { + httpServletResponse.sendRedirect("/route/login.html"); + return; + } + filterChain.doFilter(servletRequest, servletResponse); + } + +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/init/AppAuthStart.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/init/AppAuthStart.java new file mode 100644 index 0000000..be214f0 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/init/AppAuthStart.java @@ -0,0 +1,56 @@ +package cn.com.tenlion.auth.init; + +import cn.com.tenlion.auth.entity.User; +import cn.com.tenlion.auth.mapper.IUserMapper; +import cn.com.tenlion.auth.service.UserService; +import cn.com.tenlion.mapper.IAppMapper; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +@Component +public class AppAuthStart implements ApplicationRunner { + private static final Logger LOG = LoggerFactory.getLogger(AppAuthStart.class); + + @Autowired + private IAppMapper appMapper; + @Autowired + private IUserMapper userMapper; + + @Override + public void run(ApplicationArguments args) throws Exception { + String checkTableName = appMapper.checkTableExists("SYS_USER"); + if (!StringUtils.hasText(checkTableName)) { + LOG.debug("用户表不存在"); + appMapper.updateSql("CREATE TABLE `SYS_USER` (\n" + + "`ID` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,\n" + + "`USERNAME` varchar(255) DEFAULT NULL COMMENT '用户名',\n" + + "`PASSWORD` varchar(255) DEFAULT NULL COMMENT '密码',\n" + + "`NICKNAME` varchar(255) DEFAULT NULL COMMENT '昵称',\n" + + "`EMAIL` varchar(255) DEFAULT NULL COMMENT '邮箱',\n" + + "`PHONE` varchar(255) DEFAULT NULL COMMENT '手机号',\n" + + "`GMT_CREATE` varchar(255) DEFAULT NULL COMMENT '创建时间'\n" + + ");"); + } + Long userCount = userMapper.selectCount(new QueryWrapper<>()); + if (userCount == 0) { + LOG.debug("用户表为空"); + User user = new User(); + user.setUsername("admin"); + user.setPassword("123456"); + user.setNickname("管理员"); + user.setPhone("12345678910"); + user.setEmail("admin@tenlion.cn"); + user.setGmtCreate(DateUtil.now()); + userMapper.insert(user); + } + } + + +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/mapper/IUserMapper.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/mapper/IUserMapper.java new file mode 100644 index 0000000..fcb1492 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/mapper/IUserMapper.java @@ -0,0 +1,9 @@ +package cn.com.tenlion.auth.mapper; + +import cn.com.tenlion.auth.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface IUserMapper extends BaseMapper { +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/service/UserService.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/service/UserService.java new file mode 100644 index 0000000..7ebc0a1 --- /dev/null +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/auth/service/UserService.java @@ -0,0 +1,16 @@ +package cn.com.tenlion.auth.service; + +import cn.com.tenlion.auth.entity.User; +import cn.com.tenlion.auth.mapper.IUserMapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service +public class UserService extends ServiceImpl { + + public User getByUsername(String username) { + return getOne(new QueryWrapper().eq("USERNAME", username)); + } + +} diff --git a/cjscdsjkbpt/src/main/java/cn/com/tenlion/config/WebConfig.java b/cjscdsjkbpt/src/main/java/cn/com/tenlion/config/WebConfig.java index 0c98b5e..5acee1a 100644 --- a/cjscdsjkbpt/src/main/java/cn/com/tenlion/config/WebConfig.java +++ b/cjscdsjkbpt/src/main/java/cn/com/tenlion/config/WebConfig.java @@ -1,5 +1,8 @@ package cn.com.tenlion.config; +import cn.com.tenlion.auth.filter.SystemFilter; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -19,4 +22,14 @@ public class WebConfig implements WebMvcConfigurer { registry.addViewController("/").setViewName("forward:/route/login.html"); } + @Bean + public FilterRegistrationBean systemFilter() { + FilterRegistrationBean registration = new FilterRegistrationBean<>(); + registration.setFilter(new SystemFilter()); + registration.addUrlPatterns("/route/pages/*","/api/*"); + registration.setName("systemFilter"); + registration.setOrder(1); + return registration; + } + } diff --git a/cjscdsjkbpt/src/main/resources/static/route/login.html b/cjscdsjkbpt/src/main/resources/static/route/login.html index 3c65970..293a236 100644 --- a/cjscdsjkbpt/src/main/resources/static/route/login.html +++ b/cjscdsjkbpt/src/main/resources/static/route/login.html @@ -47,7 +47,7 @@
  • - +
  • @@ -62,14 +62,55 @@ - +、 + diff --git a/cjscdsjkbpt/src/main/resources/static/route/pages/index.html b/cjscdsjkbpt/src/main/resources/static/route/pages/index.html index ade5b0b..bec722d 100644 --- a/cjscdsjkbpt/src/main/resources/static/route/pages/index.html +++ b/cjscdsjkbpt/src/main/resources/static/route/pages/index.html @@ -416,7 +416,7 @@
  • 管理员
    -
    退出
    +
    退出
  • @@ -808,6 +808,10 @@ homepage.style.display = 'none'; }); + $('#signoutBtn').click(function() { + window.open('sign/signout', '_self') + }) + }); diff --git a/cjscdsjkbpt/src/main/resources/static/route/pages/user/list.html b/cjscdsjkbpt/src/main/resources/static/route/pages/user/list.html new file mode 100644 index 0000000..af2a6f6 --- /dev/null +++ b/cjscdsjkbpt/src/main/resources/static/route/pages/user/list.html @@ -0,0 +1,221 @@ + + + + + + + 车间生产大数据看板平台 + + + + +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    +
    +
    + + + + diff --git a/cjscdsjkbpt/src/main/resources/static/route/pages/user/save.html b/cjscdsjkbpt/src/main/resources/static/route/pages/user/save.html new file mode 100644 index 0000000..c1f973e --- /dev/null +++ b/cjscdsjkbpt/src/main/resources/static/route/pages/user/save.html @@ -0,0 +1,137 @@ + + + + + + 车间生产大数据看板平台 + + + + +
    +
    +
    +
    环境监测新增数据
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + + + diff --git a/cjscdsjkbpt/src/main/resources/static/route/pages/user/update.html b/cjscdsjkbpt/src/main/resources/static/route/pages/user/update.html new file mode 100644 index 0000000..6888e3d --- /dev/null +++ b/cjscdsjkbpt/src/main/resources/static/route/pages/user/update.html @@ -0,0 +1,161 @@ + + + + + + + 车间生产大数据看板平台 + + + + +
    +
    +
    +
    环境监测编辑数据
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
    +
    + + + +