From 735024b7ce604655bc6edec4c89b5570132420d2 Mon Sep 17 00:00:00 2001 From: nagocoler Date: Sun, 5 Jan 2025 00:42:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=BC=96=E8=BE=91=E6=8A=BD=E5=B1=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/AccountAdminController.java | 42 +++++++- .../java/com/example/entity/dto/Account.java | 4 + .../example/entity/vo/response/AccountVO.java | 2 + .../service/impl/AccountServiceImpl.java | 2 +- my-project-frontend/src/net/api/user.js | 6 ++ .../src/views/admin/UserAdmin.vue | 99 ++++++++++++++++++- 6 files changed, 148 insertions(+), 7 deletions(-) diff --git a/my-project-backend/src/main/java/com/example/controller/admin/AccountAdminController.java b/my-project-backend/src/main/java/com/example/controller/admin/AccountAdminController.java index 0b6bc9f..3080671 100644 --- a/my-project-backend/src/main/java/com/example/controller/admin/AccountAdminController.java +++ b/my-project-backend/src/main/java/com/example/controller/admin/AccountAdminController.java @@ -3,12 +3,16 @@ package com.example.controller.admin; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.example.entity.RestBean; +import com.example.entity.dto.Account; +import com.example.entity.dto.AccountDetails; +import com.example.entity.dto.AccountPrivacy; import com.example.entity.vo.response.AccountVO; +import com.example.service.AccountDetailsService; +import com.example.service.AccountPrivacyService; import com.example.service.AccountService; import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.BeanUtils; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -19,6 +23,12 @@ public class AccountAdminController { @Resource AccountService service; + @Resource + AccountDetailsService detailsService; + + @Resource + AccountPrivacyService privacyService; + @GetMapping("/list") public RestBean accountList(int page, int size) { JSONObject object = new JSONObject(); @@ -31,4 +41,30 @@ public class AccountAdminController { object.put("list", list); return RestBean.success(object); } + + @GetMapping("/detail") + public RestBean accountDetail(int id) { + JSONObject object = new JSONObject(); + object.put("detail", detailsService.findAccountDetailsById(id)); + object.put("privacy", privacyService.accountPrivacy(id)); + return RestBean.success(object); + } + + @PostMapping("/save") + public RestBean saveAccount(@RequestBody JSONObject object) { + int id = object.getInteger("id"); + Account account = service.findAccountById(id); + Account save = object.toJavaObject(Account.class); + BeanUtils.copyProperties(save, account, "password", "registerTime"); + service.saveOrUpdate(account); + AccountDetails details = detailsService.findAccountDetailsById(id); + AccountDetails saveDetails = object.getJSONObject("detail").toJavaObject(AccountDetails.class); + BeanUtils.copyProperties(saveDetails, details); + detailsService.saveOrUpdate(details); + AccountPrivacy privacy = privacyService.accountPrivacy(id); + AccountPrivacy savePrivacy = object.getJSONObject("privacy").toJavaObject(AccountPrivacy.class); + BeanUtils.copyProperties(savePrivacy, privacy); + privacyService.saveOrUpdate(savePrivacy); + return RestBean.success(); + } } diff --git a/my-project-backend/src/main/java/com/example/entity/dto/Account.java b/my-project-backend/src/main/java/com/example/entity/dto/Account.java index 9d3729c..89f5fdc 100644 --- a/my-project-backend/src/main/java/com/example/entity/dto/Account.java +++ b/my-project-backend/src/main/java/com/example/entity/dto/Account.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.example.entity.BaseData; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Date; @@ -14,6 +15,7 @@ import java.util.Date; */ @Data @TableName("db_account") +@NoArgsConstructor @AllArgsConstructor public class Account implements BaseData { @TableId(type = IdType.AUTO) @@ -24,4 +26,6 @@ public class Account implements BaseData { String role; String avatar; Date registerTime; + boolean mute; + boolean banned; } diff --git a/my-project-backend/src/main/java/com/example/entity/vo/response/AccountVO.java b/my-project-backend/src/main/java/com/example/entity/vo/response/AccountVO.java index e5beeda..c5f8d3c 100644 --- a/my-project-backend/src/main/java/com/example/entity/vo/response/AccountVO.java +++ b/my-project-backend/src/main/java/com/example/entity/vo/response/AccountVO.java @@ -12,4 +12,6 @@ public class AccountVO { String role; String avatar; Date registerTime; + boolean mute; + boolean banned; } diff --git a/my-project-backend/src/main/java/com/example/service/impl/AccountServiceImpl.java b/my-project-backend/src/main/java/com/example/service/impl/AccountServiceImpl.java index 1d6b5b0..3079482 100644 --- a/my-project-backend/src/main/java/com/example/service/impl/AccountServiceImpl.java +++ b/my-project-backend/src/main/java/com/example/service/impl/AccountServiceImpl.java @@ -109,7 +109,7 @@ public class AccountServiceImpl extends ServiceImpl impl if(this.existsAccountByUsername(username)) return "该用户名已被他人使用,请重新更换"; String password = passwordEncoder.encode(info.getPassword()); Account account = new Account(null, info.getUsername(), - password, email, Const.ROLE_DEFAULT, null, new Date()); + password, email, Const.ROLE_DEFAULT, null, new Date(), false, false); if(!this.save(account)) { return "内部错误,注册失败"; } else { diff --git a/my-project-frontend/src/net/api/user.js b/my-project-frontend/src/net/api/user.js index 3cf591f..cd427b4 100644 --- a/my-project-frontend/src/net/api/user.js +++ b/my-project-frontend/src/net/api/user.js @@ -80,3 +80,9 @@ export const apiNotificationDelete = (id, success) => export const apiUserList = (page, size, success) => get(`api/admin/user/list?page=${page}&size=${size}`, success) +export const apiUserDetailTotal = (id, success) => + get(`api/admin/user/detail?id=${id}`, success) + +export const apiUserSave = (data, success) => + post('/api/admin/user/save', data, success) + diff --git a/my-project-frontend/src/views/admin/UserAdmin.vue b/my-project-frontend/src/views/admin/UserAdmin.vue index 1e699fe..b815873 100644 --- a/my-project-frontend/src/views/admin/UserAdmin.vue +++ b/my-project-frontend/src/views/admin/UserAdmin.vue @@ -1,11 +1,19 @@