From ba94ceae1315174798ae1967ef62268c6d16cd5b Mon Sep 17 00:00:00 2001 From: Codex Assistant <codex@example.com> Date: 星期一, 06 十月 2025 22:07:06 +0800 Subject: [PATCH] feat: 评审与活动相关改动 - backend(GraphQL): Activity schema 增加 updateActivityState(id, state);实现 resolver/service 仅更新 state=2 作为逻辑删除 - backend(GraphQL): region.graphqls 新增 Query leafRegions - backend(GraphQL): player.graphqls 的 projectReviewApplications 增加可选参数 regionId - backend(Service): listProjectReviewApplications 绑定 regionId 参数,修复 QueryParameterException - frontend(web): 新增 api/activity.js 的 updateActivityState 并接入 activity-list 删除逻辑 - frontend(web): review-list.vue 权限仅校验登录,移除角色限制;查询参数修正为 name/regionId - frontend(web): 删除未引用的 ActivityList.vue - frontend(web): projectReviewNew.js GraphQL 查询增加 name 参数 --- backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java | 35 +++++++++++++++++++++++++++-------- 1 files changed, 27 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java b/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java index 16a8e91..417cbce 100644 --- a/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java +++ b/backend/src/main/java/com/rongyichuang/employee/service/EmployeeService.java @@ -4,6 +4,8 @@ import com.rongyichuang.employee.dto.response.EmployeeResponse; import com.rongyichuang.employee.entity.Employee; import com.rongyichuang.employee.repository.EmployeeRepository; +import com.rongyichuang.user.service.UserService; +import com.rongyichuang.user.entity.User; import com.rongyichuang.common.exception.BusinessException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,6 +33,9 @@ @Autowired private EmployeeRepository employeeRepository; + + @Autowired + private UserService userService; private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); @@ -81,11 +86,29 @@ } /** + * 鏍规嵁鐢ㄦ埛ID鑾峰彇鍛樺伐淇℃伅 + */ + public Employee findByUserId(Long userId) { + Optional<Employee> employee = employeeRepository.findByUserId(userId); + return employee.orElse(null); + } + + /** * 淇濆瓨鍛樺伐锛堟柊澧炴垨鏇存柊锛� */ public EmployeeResponse saveEmployee(EmployeeInput input) { // 楠岃瘉杈撳叆 validateEmployeeInput(input); + + // 澶勭悊User琛ㄩ�昏緫 + User user; + if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) { + // 鏈夊瘑鐮佹椂锛屽垱寤烘垨鏇存柊鐢ㄦ埛锛堝寘鍚瘑鐮侊級 + user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), input.getPassword()); + } else { + // 鏃犲瘑鐮佹椂锛屽彧鏇存柊鐢ㄦ埛鍩烘湰淇℃伅锛堜笉鏇存柊瀵嗙爜锛� + user = userService.findOrCreateUserByPhone(input.getPhone(), input.getName(), null); + } Employee employee; if (input.getId() != null) { @@ -103,7 +126,6 @@ throw new BusinessException("PHONE_ALREADY_EXISTS", "鎵嬫満鍙峰凡瀛樺湪"); } employee = new Employee(); - employee.setUserId(1L); // 涓存椂璁剧疆锛屽疄闄呭簲璇ヤ粠褰撳墠鐧诲綍鐢ㄦ埛鑾峰彇 } // 璁剧疆鍩烘湰淇℃伅 @@ -111,11 +133,7 @@ employee.setPhone(input.getPhone()); employee.setRoleId(input.getRoleId()); employee.setDescription(input.getDescription()); - - // 澶勭悊瀵嗙爜 - if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) { - employee.setPassword(passwordEncoder.encode(input.getPassword())); - } + employee.setUserId(user.getId()); // 璁剧疆鍏宠仈鐨勭敤鎴稩D Employee savedEmployee = employeeRepository.save(employee); logger.info("鍛樺伐淇濆瓨鎴愬姛: {}", savedEmployee.getName()); @@ -154,13 +172,14 @@ throw new BusinessException("ROLE_REQUIRED", "瑙掕壊涓嶈兘涓虹┖"); } - // 鏂板鍛樺伐鏃跺瘑鐮佸繀濉� + // 瀵嗙爜楠岃瘉锛氭柊澧炴椂蹇呭~锛岀紪杈戞椂鍙�� if (input.getId() == null) { + // 鏂板鍛樺伐鏃跺瘑鐮佸繀濉� if (input.getPassword() == null || input.getPassword().trim().isEmpty()) { throw new BusinessException("PASSWORD_REQUIRED", "瀵嗙爜涓嶈兘涓虹┖"); } } - + // 濡傛灉鎻愪緵浜嗗瘑鐮侊紝楠岃瘉瀵嗙爜鏍煎紡 if (input.getPassword() != null && !input.getPassword().trim().isEmpty()) { if (!PASSWORD_PATTERN.matcher(input.getPassword()).matches()) { -- Gitblit v1.8.0