| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- package com.etotem.cfc.controller.admin;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.etotem.cfc.common.Result;
- import com.etotem.cfc.entity.User;
- import com.etotem.cfc.mapper.UserMapper;
- import com.etotem.cfc.service.UserService;
- import com.etotem.cfc.service.RealNameBackfillService;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- import com.etotem.cfc.util.SortUtil;
- /**
- * 供应商管理控制器 - 供应商管理员角色专用
- * 管理供应商用户、商品发布、服务商层级调整
- */
- @RestController
- @RequestMapping("/api/admin/supply-manage")
- public class SupplyManageController {
- @Resource
- private UserMapper userMapper;
- @Resource
- private UserService userService;
- @Resource
- private RealNameBackfillService realNameBackfillService;
- /**
- * 供应商列表(分页+搜索)
- * 查询拥有 supplier_admin 角色的用户
- */
- @PostMapping("/list")
- public Result<Map<String, Object>> list(@RequestBody Map<String, Object> params) {
- int page = params.get("page") != null ? ((Number) params.get("page")).intValue() : 1;
- int size = params.get("size") != null ? ((Number) params.get("size")).intValue() : 20;
- String keyword = (String) params.get("keyword");
- String vendorStatus = (String) params.get("vendorStatus");
- Page<User> pageParam = new Page<>(page, size);
- LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>();
- // 搜索条件:手机号、昵称、真实姓名
- if (keyword != null && !keyword.isEmpty()) {
- wrapper.and(w -> w.like(User::getPhone, keyword)
- .or().like(User::getNickname, keyword)
- .or().like(User::getRealName, keyword));
- }
- // 服务商状态筛选
- if (vendorStatus != null && !vendorStatus.isEmpty()) {
- wrapper.eq(User::getVendorStatus, vendorStatus);
- }
- wrapper.orderByDesc(User::getUpdatedAt);
- SortUtil.applySort(wrapper);
- Page<User> result = userMapper.selectPage(pageParam, wrapper);
- Map<String, Object> data = new HashMap<>();
- data.put("list", result.getRecords());
- data.put("total", result.getTotal());
- data.put("page", page);
- data.put("size", size);
- return Result.success(data);
- }
- /**
- * 获取供应商详情
- */
- @PostMapping("/detail")
- public Result<User> detail(@RequestBody Map<String, Object> params) {
- Object rawId = params.get("id");
- Long id = null;
- if (rawId instanceof Number) {
- id = ((Number) rawId).longValue();
- } else if (rawId instanceof String) {
- try { id = Long.parseLong((String) rawId); } catch (NumberFormatException ignored) {}
- }
- if (id == null) {
- return Result.error("id不能为空");
- }
- User user = userMapper.selectById(id);
- if (user == null) {
- return Result.error("供应商不存在");
- }
- user.setPassword(null);
- return Result.success(user);
- }
- /**
- * 创建供应商
- */
- @PostMapping("/create")
- public Result<User> create(@RequestBody Map<String, Object> params) {
- String phone = (String) params.get("phone");
- String nickname = (String) params.get("nickname");
- String realName = (String) params.get("realName");
- String vendorType = (String) params.get("vendorType");
- if (phone == null || phone.isEmpty()) {
- return Result.error("手机号不能为空");
- }
- // 检查手机号是否已存在
- User existing = userMapper.selectOne(new LambdaQueryWrapper<User>()
- .eq(User::getPhone, phone));
- if (existing != null) {
- return Result.error("手机号已存在");
- }
- User user = new User();
- user.setPhone(phone);
- user.setNickname(nickname != null ? nickname : "供应商" + phone.substring(7));
- user.setRealName(realName);
- user.setRole("supplier_admin");
- // B-1/B-2:roles 数组写入供应商角色(遗留角色 supplier_admin 由 AdminRoles.normalize 归一化为 supplier)
- user.setRoles(java.util.Arrays.asList("supplier_admin", "supplier"));
- user.setVendorStatus("approved"); // 默认通过审核
- String effectiveVendorType = (vendorType != null && !vendorType.isEmpty()) ? vendorType : "product_supplier";
- user.setVendorType(effectiveVendorType);
- if ("activity_provider".equals(effectiveVendorType)) {
- user.setActivityProviderStatus("approved");
- }
- user.setCreatedAt(new Date());
- user.setUpdatedAt(new Date());
- userMapper.insert(user);
- // 供应商创建:若提供了 realName 且 realName 尚未填写,同时回填 realName + nickname(nickname 仅空时补)
- if (realName != null && !realName.trim().isEmpty()) {
- realNameBackfillService.backfillRealNameAndNickname(user.getId(), realName.trim());
- }
- user.setPassword(null);
- return Result.success(user);
- }
- /**
- * 更新供应商信息
- */
- @PostMapping("/update")
- public Result<Boolean> update(@RequestBody Map<String, Object> params) {
- Long id = params.get("id") != null ? ((Number) params.get("id")).longValue() : null;
- if (id == null) {
- return Result.error("id不能为空");
- }
- User user = userMapper.selectById(id);
- if (user == null) {
- return Result.error("供应商不存在");
- }
- if (params.containsKey("nickname")) {
- user.setNickname((String) params.get("nickname"));
- }
- if (params.containsKey("realName")) {
- String realName = (String) params.get("realName");
- if (realName != null && !realName.trim().isEmpty()) {
- // 供应商更新:若 realName 尚未填写,同时回填 realName + nickname(nickname 仅空时补)
- realNameBackfillService.backfillRealNameAndNickname(id, realName.trim());
- // 同步内存:helper 可能补写了 nickname,保证外层 updateById 不覆盖
- if (user.getNickname() == null || user.getNickname().trim().isEmpty()) {
- user.setNickname(realName.trim());
- }
- }
- user.setRealName(realName);
- }
- if (params.containsKey("vendorType")) {
- user.setVendorType((String) params.get("vendorType"));
- if ("activity_provider".equals(user.getVendorType())) {
- user.setActivityProviderStatus("approved");
- } else if ("planner".equals(user.getVendorType()) || "product_supplier".equals(user.getVendorType())) {
- user.setActivityProviderStatus(null);
- }
- }
- if (params.containsKey("vendorStatus")) {
- user.setVendorStatus((String) params.get("vendorStatus"));
- }
- if (params.containsKey("activityProviderStatus")) {
- user.setActivityProviderStatus((String) params.get("activityProviderStatus"));
- }
- if (params.containsKey("vendorInfo")) {
- user.setVendorInfo((String) params.get("vendorInfo"));
- }
- user.setUpdatedAt(new Date());
- userMapper.updateById(user);
- return Result.success(true);
- }
- /**
- * 删除供应商
- */
- @PostMapping("/delete")
- public Result<Boolean> delete(@RequestBody Map<String, Object> params) {
- Long id = params.get("id") != null ? ((Number) params.get("id")).longValue() : null;
- if (id == null) {
- return Result.error("id不能为空");
- }
- User user = userMapper.selectById(id);
- if (user == null) {
- return Result.error("供应商不存在");
- }
- userMapper.deleteById(id);
- return Result.success(true);
- }
- /**
- * 添加供应商管理员角色到现有用户
- */
- @PostMapping("/add-role")
- public Result<Boolean> addRole(@RequestBody Map<String, Object> params) {
- Long userId = params.get("userId") != null ? ((Number) params.get("userId")).longValue() : null;
- if (userId == null) {
- return Result.error("userId不能为空");
- }
- boolean added = userService.addRole(userId, "supplier_admin");
- return added ? Result.success(true) : Result.error("添加角色失败");
- }
- /**
- * 移除供应商管理员角色
- */
- @PostMapping("/remove-role")
- public Result<Boolean> removeRole(@RequestBody Map<String, Object> params) {
- Long userId = params.get("userId") != null ? ((Number) params.get("userId")).longValue() : null;
- if (userId == null) {
- return Result.error("userId不能为空");
- }
- User user = userMapper.selectById(userId);
- if (user == null) {
- return Result.error("用户不存在");
- }
- // 移除 supplier_admin 角色
- if (user.getRoles() != null && user.getRoles().contains("supplier_admin")) {
- java.util.List<String> roles = user.getRoles();
- roles.remove("supplier_admin");
- user.setRoles(roles);
- user.setUpdatedAt(new Date());
- userMapper.updateById(user);
- }
- return Result.success(true);
- }
- /**
- * 调整服务商层级
- * vendorType: planner / activity_provider / product_supplier
- */
- @PostMapping("/adjust-tier")
- public Result<Boolean> adjustTier(@RequestBody Map<String, Object> params) {
- Long userId = params.get("userId") != null ? ((Number) params.get("userId")).longValue() : null;
- String vendorType = (String) params.get("vendorType");
- if (userId == null || vendorType == null || vendorType.isEmpty()) {
- return Result.error("参数不完整");
- }
- User user = userMapper.selectById(userId);
- if (user == null) {
- return Result.error("用户不存在");
- }
- user.setVendorType(vendorType);
- if ("activity_provider".equals(vendorType)) {
- user.setActivityProviderStatus("approved");
- } else if ("planner".equals(vendorType) || "product_supplier".equals(vendorType)) {
- user.setActivityProviderStatus(null);
- }
- user.setUpdatedAt(new Date());
- userMapper.updateById(user);
- return Result.success(true);
- }
- }
|