()
.eq(Account::getUsername,username)
.or()
- .eq(Account::getEmail,username));
+ .eq(Account::getEmail,username)
+ .eq(Account::getStatus,true));
request.getSession().setAttribute("account", account);
return true;
}
diff --git a/src/main/java/top/xinsin/pojo/Account.java b/src/main/java/top/xinsin/pojo/Account.java
index d781070..118f709 100644
--- a/src/main/java/top/xinsin/pojo/Account.java
+++ b/src/main/java/top/xinsin/pojo/Account.java
@@ -1,10 +1,12 @@
package top.xinsin.pojo;
+import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
+import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@@ -22,29 +24,39 @@ import org.springframework.format.annotation.DateTimeFormat;
@TableName("account")
public class Account implements Serializable {
-private static final long serialVersionUID = 1L;
-@TableId("id")
-private Integer id;
-@TableField("username")
-private String username;
-@TableField("email")
-private String email;
-@TableField("rel_name")
-private String relName;
-@TableField("password")
-private String password;
-@TableField("status")
-private Boolean status;
-@TableField("role_id")
-private Integer roleId;
-@TableField("create_time")
-@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-private LocalDateTime createTime;
-@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-@TableField("update_time")
-private LocalDateTime updateTime;
-@TableField("del")
-private Boolean del;
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Integer id;
+
+ @TableField("username")
+ private String username;
+
+ @TableField("email")
+ private String email;
+
+ @TableField("rel_name")
+ private String relName;
+
+ @TableField("password")
+ private String password;
+
+ @TableField("status")
+ private Boolean status;
+
+ @TableField("role_id")
+ private Integer roleId;
+
+ @TableField("create_time")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @TableField("update_time")
+ private Date updateTime;
+
+ @TableField("del")
+ private Boolean del;
}
\ No newline at end of file
diff --git a/src/main/java/top/xinsin/service/AccountService.java b/src/main/java/top/xinsin/service/AccountService.java
index 7e88dd2..4724937 100644
--- a/src/main/java/top/xinsin/service/AccountService.java
+++ b/src/main/java/top/xinsin/service/AccountService.java
@@ -1,6 +1,8 @@
package top.xinsin.service;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
@@ -11,6 +13,13 @@ import org.springframework.stereotype.Service;
import top.xinsin.mapper.AccountMapper;
import top.xinsin.pojo.Account;
import com.baomidou.mybatisplus.extension.service.IService;
+import top.xinsin.util.HttpCodes;
+import top.xinsin.util.R;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
/**
*
@@ -35,12 +44,71 @@ public class AccountService implements UserDetailsService {
Account account = accountMapper.selectOne(new LambdaQueryWrapper()
.eq(Account::getUsername,username)
.or()
- .eq(Account::getEmail,username));
+ .eq(Account::getEmail,username)
+ .eq(Account::getStatus,true));
if(account == null) throw new UsernameNotFoundException("用户名或密码错误");
return User
.withUsername(account.getUsername())
.password(account.getPassword())
- .roles(String.valueOf(account.getRoleId()))
+ .roles("role=" + account.getRoleId(),"id=" + account.getId())
.build();
}
+
+ public R register(Account account) {
+ account.setCreateTime(new Date());
+ account.setStatus(true);
+ account.setPassword(encoder.encode(account.getPassword()));
+ int insert = accountMapper.insert(account);
+ return insert == 1 ? R.success("注册成功") : R.failed(HttpCodes.HTTP_CODES555,"注册失败,您的用户名或者邮箱已经被注册过了");
+ }
+ public R changeAccount(Account account) {
+ if (account.getPassword() != null){
+ account.setPassword(encoder.encode(account.getPassword()));
+ }
+ int update = accountMapper.updateById(account);
+ return update == 1 ? R.success("修改用户信息成功") : R.failed(HttpCodes.HTTP_CODES555,"修改用户信息失败,请联系服务器管理员");
+ }
+
+ public R changeStatus(Integer userId, Boolean status) {
+ Account account = new Account();
+ account.setId(userId);
+ account.setStatus(status);
+ int i = accountMapper.updateById(account);
+ if (i == 1){
+ if (status){
+ return R.success("启用该用户成功");
+ }else{
+ return R.success("禁用该用户成功");
+ }
+ }else{
+ return R.failed(HttpCodes.HTTP_CODES555,"修改用户状态失败");
+ }
+ }
+
+ public R changePassword(Integer userId, String oldPassword, String newPassword) {
+ Account account = new Account();
+ account.setPassword(encoder.encode(newPassword));
+ LambdaQueryWrapper accountLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ accountLambdaQueryWrapper
+ .eq(Account::getId,userId)
+ .eq(Account::getPassword,encoder.encode(oldPassword));
+ int update = accountMapper.update(account, accountLambdaQueryWrapper);
+ return update == 1 ? R.success("修改密码成功") : R.failed(HttpCodes.HTTP_CODES555,"修改密码失败,请联系服务器管理员");
+ }
+
+ public R getUser(Integer page, Integer num) {
+ Page accountPage = new Page<>(page,num);
+ Page accountPage1 = accountMapper.selectPage(accountPage, null);
+ JSONObject jsonObject = new JSONObject();
+ List collect = accountPage1.getRecords().stream().peek(e -> e.setPassword(null)).toList();
+ jsonObject
+ .fluentPut("info",collect)
+ .fluentPut("total",accountPage1.getTotal());
+ return R.success(jsonObject);
+ }
+
+ public R delUser(Integer id) {
+ int delete = accountMapper.deleteById(id);
+ return delete == 1 ? R.success("删除用户成功") : R.failed(HttpCodes.HTTP_CODES555,"删除用户失败,请联系服务器管理员");
+ }
}
diff --git a/src/main/java/top/xinsin/util/HttpCodes.java b/src/main/java/top/xinsin/util/HttpCodes.java
index b027c05..18dd04e 100644
--- a/src/main/java/top/xinsin/util/HttpCodes.java
+++ b/src/main/java/top/xinsin/util/HttpCodes.java
@@ -22,6 +22,11 @@ public enum HttpCodes {
* 数据错误
*/
HTTP_CODES401(401,"这是一个坏的请求,请重新写入参数"),
+ /**
+ * 555
+ * 数据更新失败
+ */
+ HTTP_CODES555(555,"数据更新失败"),
/**
* 501
* 账号密码错误
diff --git a/src/main/java/top/xinsin/util/ServletUtils.java b/src/main/java/top/xinsin/util/ServletUtils.java
deleted file mode 100644
index 717e695..0000000
--- a/src/main/java/top/xinsin/util/ServletUtils.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package top.xinsin.util;
-
-import com.alibaba.fastjson2.JSON;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.SneakyThrows;
-
-/**
- * 将数据渲染到前端
- */
-public class ServletUtils {
- @SneakyThrows
- public static void render(HttpServletRequest request, HttpServletResponse response,R> o){
- response.setHeader("Access-Control-Allow-Origin", "*");
- response.setHeader("Access-Control-Allow-Headers", "token, Accept, Origin, X-Requested-With, Content-Type, Last-Modified");
- response.setHeader("Content-type", "application/json;charset=UTF-8");
-
- response.getWriter().print(JSON.toJSONString(o));
- }
-}
diff --git a/src/main/java/top/xinsin/util/StringConstant.java b/src/main/java/top/xinsin/util/StringConstant.java
new file mode 100644
index 0000000..5d8b0dc
--- /dev/null
+++ b/src/main/java/top/xinsin/util/StringConstant.java
@@ -0,0 +1,8 @@
+package top.xinsin.util;
+
+public class StringConstant {
+ public static final String REL_NAME_REGEX = "[一-龥]{2,4}";
+ public static final String EMAIL_REGEX = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
+ public static final String USERNAME_REGEX = "[A-Za-z0-9_\\-一-龥]+";
+ public static final String ID_REGEX = "[0-9]*";
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d592f3d..84f06c1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -24,6 +24,12 @@ spring:
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
+ data:
+ redis:
+ database: 1
+ host: wzpmc.cn
+ port: 6379
+ password: MyCraftAdmin123
mvc:
static-path-pattern: /static/**
security:
diff --git a/src/test/java/top/xinsin/CodeGenerator.java b/src/test/java/top/xinsin/CodeGenerator.java
index a078d45..03f7d94 100644
--- a/src/test/java/top/xinsin/CodeGenerator.java
+++ b/src/test/java/top/xinsin/CodeGenerator.java
@@ -14,9 +14,7 @@ import java.util.function.Consumer;
public class CodeGenerator {
public static void main(String[] args) {
List tables = new ArrayList<>();
- tables.add("account");
- tables.add("roles");
- tables.add("permissions");
+ tables.add("order");
FastAutoGenerator.create("jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8","commerce_system","Jix656dzD6St4YCn")
.globalConfig(builder -> {