From 664cae654867b528ea339f187ebe290cb04d6fcf Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期四, 27 八月 2026 18:41:21 +0800
Subject: [PATCH] docs: 关机前交接——运行状态、待验证项、外置配置要点
---
traffic-audit-server/src/main/java/com/trafficaudit/system/controller/UserController.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 107 insertions(+), 0 deletions(-)
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/system/controller/UserController.java b/traffic-audit-server/src/main/java/com/trafficaudit/system/controller/UserController.java
new file mode 100644
index 0000000..d44adf3
--- /dev/null
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/system/controller/UserController.java
@@ -0,0 +1,107 @@
+package com.trafficaudit.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.trafficaudit.common.Result;
+import com.trafficaudit.system.entity.User;
+import com.trafficaudit.system.mapper.UserMapper;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/** 鐢ㄦ埛绠$悊锛堝惈璐熻矗鎶ヨ〃妯″潡閰嶇疆锛歠reight/passenger/invest/energy/cityPassenger锛� */
+@RestController
+@RequestMapping("/api/user")
+public class UserController {
+
+ @Resource
+ private UserMapper userMapper;
+ @Resource
+ private PasswordEncoder passwordEncoder;
+
+ @GetMapping("/list")
+ public Result<List<Map<String, Object>>> list(@RequestParam(value = "keyword", required = false) String keyword) {
+ LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
+ if (keyword != null && !keyword.trim().isEmpty()) {
+ String k = keyword.trim();
+ qw.and(w -> w.like(User::getUsername, k).or().like(User::getRealName, k));
+ }
+ qw.orderByAsc(User::getId);
+ List<Map<String, Object>> data = new ArrayList<>();
+ for (User u : userMapper.selectList(qw)) {
+ Map<String, Object> m = new HashMap<>();
+ m.put("id", u.getId());
+ m.put("username", u.getUsername());
+ m.put("realName", u.getRealName());
+ m.put("phone", u.getPhone());
+ m.put("status", u.getStatus());
+ m.put("modules", u.getModules());
+ m.put("createdAt", u.getCreatedAt() == null ? null : u.getCreatedAt().toString());
+ data.add(m);
+ }
+ return Result.ok(data);
+ }
+
+ /** 鏂板/缂栬緫鐢ㄦ埛锛涚紪杈戞椂 password 鐣欑┖鍒欎笉淇敼瀵嗙爜锛沵odules 涓烘ā鍧� key 鏁扮粍 */
+ @PostMapping("/save")
+ public Result<Void> save(@RequestBody Map<String, Object> params) {
+ Object idObj = params.get("id");
+ Long id = idObj == null ? null : Long.valueOf(idObj.toString());
+ String username = str(params.get("username"));
+ if (username == null || username.trim().isEmpty()) return Result.error(400, "鐢ㄦ埛鍚嶄笉鑳戒负绌�");
+ username = username.trim();
+ String password = str(params.get("password"));
+ String realName = str(params.get("realName"));
+ String phone = str(params.get("phone"));
+ Integer status = params.get("status") == null ? 1 : Integer.valueOf(params.get("status").toString());
+ List<String> moduleKeys = new ArrayList<>();
+ Object modulesObj = params.get("modules");
+ if (modulesObj instanceof List) {
+ for (Object o : (List<?>) modulesObj) if (o != null) moduleKeys.add(o.toString());
+ }
+ String modules = String.join(",", moduleKeys);
+
+ LambdaQueryWrapper<User> dup = new LambdaQueryWrapper<User>().eq(User::getUsername, username);
+ if (id != null) dup.ne(User::getId, id);
+ if (userMapper.selectCount(dup) != null && userMapper.selectCount(dup) > 0) return Result.error(400, "鐢ㄦ埛鍚嶅凡瀛樺湪");
+
+ if (id == null) {
+ if (password == null || password.isEmpty()) return Result.error(400, "鏂板鐢ㄦ埛蹇呴』璁剧疆瀵嗙爜");
+ User u = new User();
+ u.setUsername(username);
+ u.setRealName(realName);
+ u.setPhone(phone);
+ u.setStatus(status);
+ u.setModules(modules);
+ u.setPassword(passwordEncoder.encode(password));
+ userMapper.insert(u);
+ } else {
+ User u = userMapper.selectById(id);
+ if (u == null) return Result.error(404, "鐢ㄦ埛涓嶅瓨鍦�");
+ u.setRealName(realName);
+ u.setPhone(phone);
+ u.setStatus(status);
+ u.setModules(modules);
+ if (password != null && !password.isEmpty()) u.setPassword(passwordEncoder.encode(password));
+ userMapper.updateById(u);
+ }
+ return Result.ok(null);
+ }
+
+ @PostMapping("/delete")
+ public Result<Void> delete(@RequestParam("id") Long id) {
+ User u = userMapper.selectById(id);
+ if (u == null) return Result.error(404, "鐢ㄦ埛涓嶅瓨鍦�");
+ if ("admin".equals(u.getUsername())) return Result.error(400, "admin 涓嶅厑璁稿垹闄�");
+ userMapper.deleteById(id);
+ return Result.ok(null);
+ }
+
+ private String str(Object o) {
+ return o == null ? null : o.toString();
+ }
+}
--
Gitblit v1.9.1