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