diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java b/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java index ab3a51a..8ecbe47 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/controller/UserController.java @@ -15,6 +15,7 @@ import com.zds.boss.exception.BusinessException; import com.zds.boss.exception.ErrorCode; import com.zds.boss.exception.ThrowUtils; import com.zds.boss.model.dto.user.UserLoginRequest; +import com.zds.boss.model.dto.user.UserProfileUpdateRequest; import com.zds.boss.model.dto.user.UserQueryRequest; import com.zds.boss.model.dto.user.UserRegisterRequest; import com.zds.boss.model.dto.user.UserUpdateRequest; @@ -156,6 +157,54 @@ public class UserController { return ResultUtils.success(true); } + @PostMapping("/update/profile") + public BaseResponse updateUserProfile(@RequestBody UserProfileUpdateRequest updateRequest, HttpServletRequest request) { + ThrowUtils.throwIf(updateRequest == null, ErrorCode.PARAMS_ERROR); + + User loginUser = userService.getLoginUser(request); + boolean isAdmin = UserRoleEnum.ADMIN.getValue().equals(loginUser.getUserRole()); + + Long targetUserId = loginUser.getId(); + if (isAdmin && updateRequest.getId() != null && updateRequest.getId() > 0) { + targetUserId = updateRequest.getId(); + } + + User targetUser = userService.getById(targetUserId); + ThrowUtils.throwIf(targetUser == null, ErrorCode.NOT_FOUND_ERROR); + + User userToUpdate = new User(); + userToUpdate.setId(targetUserId); + + if (updateRequest.getPhone() != null) { + userToUpdate.setPhone(updateRequest.getPhone()); + } + if (updateRequest.getEmail() != null) { + userToUpdate.setEmail(updateRequest.getEmail()); + } + if (updateRequest.getUserProfile() != null) { + userToUpdate.setUserProfile(updateRequest.getUserProfile()); + } + + if (updateRequest.getUserPassword() != null) { + String newPassword = updateRequest.getUserPassword(); + if (newPassword.length() < 8 || newPassword.length() > 15) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "用户密码长度应为 8-15 位"); + } + if (!isAdmin) { + ThrowUtils.throwIf(updateRequest.getOldPassword() == null, ErrorCode.PARAMS_ERROR, "旧密码不能为空"); + String oldPasswordEncrypt = userService.getEncryptPassword(updateRequest.getOldPassword()); + if (!oldPasswordEncrypt.equals(targetUser.getUserPassword())) { + throw new BusinessException(ErrorCode.PARAMS_ERROR, "旧密码错误"); + } + } + userToUpdate.setUserPassword(userService.getEncryptPassword(newPassword)); + } + + boolean result = userService.updateById(userToUpdate); + ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR); + return ResultUtils.success(true); + } + /** * 分页获取用户封装列表 * diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/mapper/ApplicationMapper.java b/BOSSBackEnd/src/main/java/com/zds/boss/mapper/ApplicationMapper.java index 4745d6d..af52833 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/mapper/ApplicationMapper.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/mapper/ApplicationMapper.java @@ -1,8 +1,89 @@ package com.zds.boss.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zds.boss.model.dto.application.ApplicationQueryRequest; import com.zds.boss.model.entity.Application; +import com.zds.boss.model.vo.ApplicationVO; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; public interface ApplicationMapper extends BaseMapper { + + @Select(""" + + """) + IPage selectApplicationVOByPage(Page page, @Param("query") ApplicationQueryRequest query); } diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserProfileUpdateRequest.java b/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserProfileUpdateRequest.java new file mode 100644 index 0000000..6a9f684 --- /dev/null +++ b/BOSSBackEnd/src/main/java/com/zds/boss/model/dto/user/UserProfileUpdateRequest.java @@ -0,0 +1,24 @@ +package com.zds.boss.model.dto.user; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserProfileUpdateRequest implements Serializable { + + private Long id; + + private String oldPassword; + + private String userPassword; + + private String email; + + private String phone; + + private String userProfile; + + private static final long serialVersionUID = 1L; +} + diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/ApplicationVO.java b/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/ApplicationVO.java index b3362cb..ed7a060 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/ApplicationVO.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/model/vo/ApplicationVO.java @@ -8,6 +8,7 @@ import java.util.Date; public class ApplicationVO implements Serializable { private Long id; private Long userId; + private String userName; private Long resumeId; private Long jobId; private Long bossId; diff --git a/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/ApplicationServiceImpl.java b/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/ApplicationServiceImpl.java index ffee372..1b51a42 100644 --- a/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/ApplicationServiceImpl.java +++ b/BOSSBackEnd/src/main/java/com/zds/boss/service/impl/ApplicationServiceImpl.java @@ -190,9 +190,8 @@ public class ApplicationServiceImpl extends ServiceImpl listApplicationVOByPage(ApplicationQueryRequest query) { long current = query.getCurrent(); long size = query.getPageSize(); - Page page = this.page(new Page<>(current, size), getQueryWrapper(query)); - Page voPage = new Page<>(current, size, page.getTotal()); - voPage.setRecords(getApplicationVOList(page.getRecords())); + Page voPage = new Page<>(current, size); + this.baseMapper.selectApplicationVOByPage(voPage, query); return voPage; } } diff --git a/BOSSFrontEnd/openapi.config.ts b/BOSSFrontEnd/openapi.config.ts index e82651d..85a2b44 100644 --- a/BOSSFrontEnd/openapi.config.ts +++ b/BOSSFrontEnd/openapi.config.ts @@ -9,7 +9,7 @@ const __dirname = dirname(__filename); // 生成 API 服务代码 generateService({ requestLibPath: "import request from '@/libs/request'", - schemaPath: 'http://localhost:8082/v3/api-docs', + schemaPath: 'http://localhost:8081/v3/api-docs', serversPath: join(__dirname, 'src/api'), mock: false, }).catch((error) => { diff --git a/BOSSFrontEnd/src/api/api/resumeAddressController.ts b/BOSSFrontEnd/src/api/api/resumeAddressController.ts deleted file mode 100644 index 92cf120..0000000 --- a/BOSSFrontEnd/src/api/api/resumeAddressController.ts +++ /dev/null @@ -1,32 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import request from '@/libs/request' - -export async function uploadResumePdf(formData: FormData, options?: { [key: string]: any }) { - return request('/resume/address/upload', { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - }, - data: formData, - ...(options || {}), - }) -} - -export async function getMyResumeAddress(options?: { [key: string]: any }) { - return request('/resume/address/get', { - method: 'GET', - ...(options || {}), - }) -} - -export async function deleteMyResumeAddress(body: API.DeleteRequest, options?: { [key: string]: any }) { - return request('/resume/address/delete', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - data: body, - ...(options || {}), - }) -} diff --git a/BOSSFrontEnd/src/api/api/resumeController.ts b/BOSSFrontEnd/src/api/api/resumeController.ts index 67fe81b..4ccfc5a 100644 --- a/BOSSFrontEnd/src/api/api/resumeController.ts +++ b/BOSSFrontEnd/src/api/api/resumeController.ts @@ -71,14 +71,14 @@ export async function updateResume( }) } -/** 上传简历附件文件 POST /resume/upload */ -export async function uploadResumeFile( - formData: FormData, - options?: { [key: string]: any } -) { +/** 此处后端没有提供注释 POST /resume/upload */ +export async function uploadFile(body: {}, options?: { [key: string]: any }) { return request('/resume/upload', { method: 'POST', - data: formData, + headers: { + 'Content-Type': 'application/json', + }, + data: body, ...(options || {}), }) } diff --git a/BOSSFrontEnd/src/api/api/typings.d.ts b/BOSSFrontEnd/src/api/api/typings.d.ts index 91a1073..2b5fcfe 100644 --- a/BOSSFrontEnd/src/api/api/typings.d.ts +++ b/BOSSFrontEnd/src/api/api/typings.d.ts @@ -39,6 +39,7 @@ declare namespace API { type ApplicationVO = { id?: number userId?: number + userName?: string resumeId?: number jobId?: number bossId?: number @@ -131,12 +132,6 @@ declare namespace API { message?: string } - type BaseResponseString = { - code?: number - data?: string - message?: string - } - type BaseResponsePageApplicationVO = { code?: number data?: PageApplicationVO @@ -185,6 +180,12 @@ declare namespace API { message?: string } + type BaseResponseString = { + code?: number + data?: string + message?: string + } + type BaseResponseUser = { code?: number data?: User @@ -673,6 +674,15 @@ declare namespace API { userPassword?: string } + type UserProfileUpdateRequest = { + id?: number + oldPassword?: string + userPassword?: string + email?: string + phone?: string + userProfile?: string + } + type UserQueryRequest = { current?: number pageSize?: number diff --git a/BOSSFrontEnd/src/api/api/userController.ts b/BOSSFrontEnd/src/api/api/userController.ts index f2b40a3..acd680b 100644 --- a/BOSSFrontEnd/src/api/api/userController.ts +++ b/BOSSFrontEnd/src/api/api/userController.ts @@ -121,3 +121,18 @@ export async function updateUser(body: API.UserUpdateRequest, options?: { [key: ...(options || {}), }) } + +/** 此处后端没有提供注释 POST /user/update/profile */ +export async function updateUserProfile( + body: API.UserProfileUpdateRequest, + options?: { [key: string]: any } +) { + return request('/user/update/profile', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }) +} diff --git a/BOSSFrontEnd/src/views/BossApplications.vue b/BOSSFrontEnd/src/views/BossApplications.vue index cc23586..ebb473a 100644 --- a/BOSSFrontEnd/src/views/BossApplications.vue +++ b/BOSSFrontEnd/src/views/BossApplications.vue @@ -76,9 +76,9 @@ const columns = [ key: 'jobId', }, { - title: '申请人ID', - dataIndex: 'userId', - key: 'userId', + title: '申请人', + dataIndex: 'userName', + key: 'userName', }, { title: '投递时间', diff --git a/BOSSFrontEnd/src/views/Profile.vue b/BOSSFrontEnd/src/views/Profile.vue index 207deaf..4658300 100644 --- a/BOSSFrontEnd/src/views/Profile.vue +++ b/BOSSFrontEnd/src/views/Profile.vue @@ -10,9 +10,6 @@ :label-col="{ span: 4 }" :wrapper-col="{ span: 12 }" > - - - @@ -27,11 +24,11 @@ - + - +