From ae8e8fd2aac82eaa55814bedbb11ed4062a48a2c Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 01 Jun 2026 11:17:31 +0800
Subject: [PATCH] refactor(user): 将用户保存方法替换为提交方法

---
 drone-service/drone-system/src/main/java/org/sxkj/system/controller/ExternalController.java |  154 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 154 insertions(+), 0 deletions(-)

diff --git a/drone-service/drone-system/src/main/java/org/sxkj/system/controller/ExternalController.java b/drone-service/drone-system/src/main/java/org/sxkj/system/controller/ExternalController.java
index e936717..544472b 100644
--- a/drone-service/drone-system/src/main/java/org/sxkj/system/controller/ExternalController.java
+++ b/drone-service/drone-system/src/main/java/org/sxkj/system/controller/ExternalController.java
@@ -1,16 +1,170 @@
 package org.sxkj.system.controller;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.cache.utils.CacheUtil;
+import org.springblade.core.log.annotation.ApiLog;
+import org.springblade.core.log.logger.BladeLogger;
 import org.springblade.core.tenant.annotation.NonDS;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.support.Kv;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.core.tool.utils.DigestUtil;
+import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.sxkj.common.constant.WordOrderConstant;
+import org.sxkj.common.utils.HeaderUtils;
+import org.sxkj.common.utils.OrderNumUtils;
+import org.sxkj.system.cache.DictCache;
+import org.sxkj.system.entity.Dept;
+import org.sxkj.system.entity.Role;
+import org.sxkj.system.entity.User;
+import org.sxkj.system.entity.UserInfo;
+import org.sxkj.system.enums.DictEnum;
+import org.sxkj.system.param.DeptAddParam;
+import org.sxkj.system.service.IDeptService;
+import org.sxkj.system.service.IRoleService;
+import org.sxkj.system.service.IUserService;
+
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
+import static org.springblade.core.cache.constant.CacheConstant.USER_CACHE;
 
 @NonDS
+@Slf4j
 @RestController
 @AllArgsConstructor
 @RequestMapping("/external")
 @Api(value = "对外接口", tags = "对外接口")
 public class ExternalController {
 
+	private final IRoleService roleService;
+
+	private final IDeptService deptService;
+
+	private final IUserService userService;
+
+	private final BladeLogger bladeLogger;
+
+	/**
+	 * 新增或修改-对外
+	 */
+	@PostMapping("/submitDeptExternal")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "机构新增或修改", notes = "传入dept")
+	@ApiLog("组织机构信息新增或修改")
+	public R submit(@Valid @RequestBody DeptAddParam dept) {
+		log.info("机构信息修改-对外{}", JSON.toJSONString(dept));
+		// 参数校验:确保关键字段不为空
+		if (dept.getId() == null) {
+			return R.fail("参数缺失:id 不能为空");
+		}
+		// 删除操作
+		if (dept.getId() != null && dept.getIsDeleted() == 1) {
+			deptService.removeDept(String.valueOf(dept.getId()));
+			CacheUtil.clear(SYS_CACHE); // 清理缓存
+			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+			Kv kv = Kv.create().set("id", String.valueOf(dept.getId())).set("tenantId", dept.getTenantId())
+				.set("deptCategoryName", DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()));
+			return R.data(kv);
+		}
+		// 新增操作
+		Dept deptEntity = Objects.requireNonNull(BeanUtil.copy(dept, Dept.class));
+		String times = OrderNumUtils.initOrderNum2(WordOrderConstant.ORG_CODE);
+		String deptCode = WordOrderConstant.ORG_PREFIX + times;
+		deptEntity.setDeptCode(deptCode);
+		deptEntity.setAreaCode(HeaderUtils.processAreaCode(StringUtil.isNotBlank(dept.getAreaCode()) ? dept.getAreaCode() : "3608"));
+		deptEntity.setCreateTime(new Date());
+		deptEntity.setUpdateTime(new Date());
+		if (deptService.submit(deptEntity)) {
+			CacheUtil.clear(SYS_CACHE);
+			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+			List<User> userList = userService.list(new LambdaQueryWrapper<User>().eq(User::getDeptId, String.valueOf(dept.getId())));
+			if (!userList.isEmpty()) {
+				List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
+				userService.updateUserAreaCode(dept.getAreaCode(), userIds);
+			}
+			// 返回懒加载树更新节点所需字段
+			Kv kv = Kv.create().set("id", String.valueOf(dept.getId())).set("tenantId", dept.getTenantId())
+				.set("deptCategoryName", DictCache.getValue(DictEnum.ORG_CATEGORY, dept.getDeptCategory()));
+			return R.data(kv);
+		}
+
+		return R.fail("操作失败");
+	}
+
+	/**
+	 * 新增或修改-对外  后面沟通后不同步角色信息,先注释防止看不懂
+	 */
+	// @PostMapping("/submitRoleExternal")
+	// @ApiOperationSupport(order = 2)
+	// @ApiOperation(value = "角色新增或修改", notes = "传入role")
+	// @ApiLog("角色信息新增或修改")
+	// public R submit(@Valid @RequestBody Role role) {
+	// 	log.info("角色信息修改-对外{}", JSON.toJSONString(role));
+	// 	// 参数校验:确保关键字段不为空
+	// 	if (role.getId() == null) {
+	// 		return R.fail("参数缺失:id 不能为空");
+	// 	}
+	// 	CacheUtil.clear(SYS_CACHE);
+	// 	CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
+	// 	// 删除操作
+	// 	if (role.getIsDeleted() != null && role.getIsDeleted() == 1) {
+	// 		roleService.removeRole(String.valueOf(role.getId()));
+	// 		return R.status(true);
+	// 	}
+	// 	// 新增操作
+	// 	return R.status(roleService.submit(role));
+	// }
+
+
+	/**
+	 * 用户信息新增或者修改-对外
+	 */
+	@PostMapping("/submitUserExternal")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "新增或修改用户", notes = "传入User,新增或修改用户")
+	@ApiLog("用户信息新增或者修改-对外")
+	public R submitExternal(@Valid @RequestBody User user) {
+		log.info("用户信息修改-对外{}", JSON.toJSONString(user));
+		CacheUtil.clear(USER_CACHE);
+
+		boolean isRet = false;
+
+		UserInfo userInfo = userService.userInfo("000000", user.getAccount());
+		if (userInfo != null && userInfo.getUser() != null) {
+			bladeLogger.info("用户信息修改", user.toString());
+			user.setId(userInfo.getUser().getId());
+			user.setDeptId(StringUtil.isBlank(user.getDeptId()) ? userInfo.getUser().getDeptId() : user.getDeptId());
+			user.setRoleId(StringUtil.isBlank(user.getRoleId()) ? userInfo.getUser().getRoleId() : user.getRoleId());
+			user.setIsDeleted(user.getIsDeleted());
+			isRet = userService.updateUser(user);
+		} else {
+			// 将String类型的deptId转换为Long类型
+			Long deptIdLong = Long.parseLong(user.getDeptId());
+			Dept dept = deptService.getById(deptIdLong);
+			user.setAreaCode(HeaderUtils.processAreaCode(dept.getAreaCode()));
+			user.setPassword(DigestUtil.encrypt("jadk@2026"));
+			user.setDeptId(StringUtil.isBlank(user.getDeptId()) ? String.valueOf(dept.getId()) : user.getDeptId());
+			user.setRoleId(StringUtil.isBlank(user.getRoleId()) ? "2011678430358691842" : user.getRoleId());
+			isRet = userService.submit(user);
+			bladeLogger.info("用户信息新增", user.toString());
+		}
+
+		return R.status(isRet);
+	}
+
 }

--
Gitblit v1.9.3