From 94d72c5f462d10cbc6931e7f7ec214bc3455e3a9 Mon Sep 17 00:00:00 2001
From: guowei <3306787021@qq.com>
Date: Wed, 4 Sep 2024 22:03:41 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../gw/test/controller/GuoWeiController.java | 79 +++++++++++++++++++
src/main/java/com/gw/test/entity/GuoWei.java | 48 +++++++++++
.../java/com/gw/test/mapper/GuoWeiMapper.java | 18 +++++
.../com/gw/test/service/IGuoWeiService.java | 23 ++++++
.../test/service/impl/GuoWeiServiceImpl.java | 76 ++++++++++++++++++
src/main/resources/mapper/GuoWeiMapper.xml | 14 ++++
6 files changed, 258 insertions(+)
create mode 100644 src/main/java/com/gw/test/controller/GuoWeiController.java
create mode 100644 src/main/java/com/gw/test/entity/GuoWei.java
create mode 100644 src/main/java/com/gw/test/mapper/GuoWeiMapper.java
create mode 100644 src/main/java/com/gw/test/service/IGuoWeiService.java
create mode 100644 src/main/java/com/gw/test/service/impl/GuoWeiServiceImpl.java
create mode 100644 src/main/resources/mapper/GuoWeiMapper.xml
diff --git a/src/main/java/com/gw/test/controller/GuoWeiController.java b/src/main/java/com/gw/test/controller/GuoWeiController.java
new file mode 100644
index 0000000..97737c5
--- /dev/null
+++ b/src/main/java/com/gw/test/controller/GuoWeiController.java
@@ -0,0 +1,79 @@
+package com.gw.test.controller;
+
+
+import com.gw.test.domain.Result;
+import com.gw.test.domain.vo.LoginVo;
+import com.gw.test.entity.GuoWei;
+import com.gw.test.service.IGuoWeiService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author gw
+ * @since 2024-09-04
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/guowei")
+@Tag(name = "用户管理",description = "用户管理接口")
+public class GuoWeiController {
+
+ private final IGuoWeiService service;
+
+ @Operation(summary = "用户列表",description = "用户列表接口")
+ @PostMapping("/list")
+ public Result> list(){
+ return Result.ok(service.list());
+ }
+
+ @Operation(summary = "添加用户",description = "添加用户接口")
+ @PostMapping("/save")
+ public Result save(GuoWei guoWei) {
+ service.save(guoWei);
+ return Result.ok();
+ }
+
+
+ @Operation(summary = "删除用户",description = "删除用户接口")
+ @PostMapping("/delete")
+ public Result delete(Integer id) {
+ service.removeById(id);
+ return Result.ok();
+ }
+
+
+ @Operation(summary = "用户修改",description = "用户列修改口")
+ @PostMapping("/update")
+ public Result update(GuoWei guoWei) {
+ service.updateById(guoWei);
+ return Result.ok();
+ }
+
+ @Operation(summary = "用户登录",description = "用户登录接口")
+ @PostMapping("/login")
+ public Result login(String username, String password) {
+ return Result.ok(service.login(username, password));
+ }
+
+ @Operation(summary = "用户注册",description = "用户注册接口")
+ @PostMapping("/register")
+ public Result register(GuoWei guoWei) {
+ boolean re = service.register(guoWei);
+ if (re)
+ return Result.ok();
+ else
+ return Result.error("注册失败");
+
+ }
+}
diff --git a/src/main/java/com/gw/test/entity/GuoWei.java b/src/main/java/com/gw/test/entity/GuoWei.java
new file mode 100644
index 0000000..0a337ff
--- /dev/null
+++ b/src/main/java/com/gw/test/entity/GuoWei.java
@@ -0,0 +1,48 @@
+package com.gw.test.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ *
+ *
+ *
+ *
+ * @author gw
+ * @since 2024-09-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("guo_wei")
+@Schema($schema = "GuoWei对象",description = "")
+public class GuoWei implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @Schema($schema = "主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @Schema($schema = "用户名")
+ private String username;
+
+ @Schema($schema = "密码")
+ private String password;
+
+ @Schema($schema = "创建时间")
+ @TableField(value = "create_time", fill = FieldFill.INSERT)
+ private String createTime;
+
+ @Schema($schema = "手机号")
+ private String phoneNumber;
+
+
+}
diff --git a/src/main/java/com/gw/test/mapper/GuoWeiMapper.java b/src/main/java/com/gw/test/mapper/GuoWeiMapper.java
new file mode 100644
index 0000000..75cc4b9
--- /dev/null
+++ b/src/main/java/com/gw/test/mapper/GuoWeiMapper.java
@@ -0,0 +1,18 @@
+package com.gw.test.mapper;
+
+import com.gw.test.entity.GuoWei;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author gw
+ * @since 2024-09-04
+ */
+//@Mapper
+public interface GuoWeiMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/gw/test/service/IGuoWeiService.java b/src/main/java/com/gw/test/service/IGuoWeiService.java
new file mode 100644
index 0000000..6a6ac36
--- /dev/null
+++ b/src/main/java/com/gw/test/service/IGuoWeiService.java
@@ -0,0 +1,23 @@
+package com.gw.test.service;
+
+import com.gw.test.domain.vo.LoginVo;
+import com.gw.test.entity.GuoWei;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.security.core.userdetails.UserDetails;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author gw
+ * @since 2024-09-04
+ */
+public interface IGuoWeiService extends IService {
+
+ UserDetails loadUserByUsername(String s);
+
+ LoginVo login(String username, String password);
+
+ boolean register(GuoWei guoWei);
+}
diff --git a/src/main/java/com/gw/test/service/impl/GuoWeiServiceImpl.java b/src/main/java/com/gw/test/service/impl/GuoWeiServiceImpl.java
new file mode 100644
index 0000000..b4626b0
--- /dev/null
+++ b/src/main/java/com/gw/test/service/impl/GuoWeiServiceImpl.java
@@ -0,0 +1,76 @@
+package com.gw.test.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.gw.test.domain.vo.LoginVo;
+import com.gw.test.entity.GuoWei;
+import com.gw.test.entity.User;
+import com.gw.test.mapper.GuoWeiMapper;
+import com.gw.test.service.IGuoWeiService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gw.test.utils.JWTUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author gw
+ * @since 2024-09-04
+ */
+@RequiredArgsConstructor
+@Service
+public class GuoWeiServiceImpl extends ServiceImpl implements IGuoWeiService {
+ private final JWTUtil JWTUtil;
+
+ private final PasswordEncoder passwordEncoder;
+
+ @Override
+ public UserDetails loadUserByUsername(String s) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq("username", s);
+ List list = list(wrapper);
+ if (list.isEmpty()) return null;
+ GuoWei guoWei = list.get(0);
+ return new User(guoWei, null);
+ }
+
+ @Override
+ public LoginVo login(String username, String password) {
+ User user = (User) loadUserByUsername(username);
+ if (user == null) return null;
+
+ if (!passwordEncoder.matches(password, user.getPassword())) return null;
+
+
+ UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
+ SecurityContextHolder.getContext().setAuthentication(authentication);
+
+ LoginVo re = new LoginVo();
+
+ re.setId(user.getEntity().getId());
+ re.setUsername(user.getUsername());
+ re.setToken(JWTUtil.generateToken(user));
+
+ return re;
+ }
+
+ @Override
+ public boolean register(GuoWei guoWei) {
+ Long count = lambdaQuery()
+ .eq(GuoWei::getUsername, guoWei.getUsername())
+ .count();
+
+ if (count > 0) return false;
+
+ guoWei.setPassword(passwordEncoder.encode(guoWei.getPassword()));
+ return save(guoWei);
+ }
+}
diff --git a/src/main/resources/mapper/GuoWeiMapper.xml b/src/main/resources/mapper/GuoWeiMapper.xml
new file mode 100644
index 0000000..70847df
--- /dev/null
+++ b/src/main/resources/mapper/GuoWeiMapper.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+