rayson пре 1 година
родитељ
комит
092f2e530a
17 измењених фајлова са 190 додато и 37 уклоњено
  1. 1 1
      citu-module-infra/citu-module-infra-biz/src/main/resources/application.yaml
  2. 3 3
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/interview/InterviewInviteStatusEnum.java
  3. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/AppInterviewInviteController.java
  4. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/vo/AppInterviewInvitePageReqVO.java
  5. 29 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/AppAdminInterviewInviteController.java
  6. 2 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteCancellationReqVO.java
  7. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteFeedbackReqVO.java
  8. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteNotAttendedReqVO.java
  9. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteReqPageVO.java
  10. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInvitePageReqVO.java
  11. 15 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteReqOperateVO.java
  12. 6 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteRespVO.java
  13. 4 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteSaveReqVO.java
  14. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/interview/InterviewInviteDO.java
  15. 7 4
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java
  16. 30 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java
  17. 29 5
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

+ 1 - 1
citu-module-infra/citu-module-infra-biz/src/main/resources/application.yaml

@@ -122,7 +122,7 @@ citu:
     admin-ui:
       url: http://dashboard.citu.iocoder.cn # Admin 管理后台 UI 的地址
   access-log:
-    enable: true
+    enable: false
   websocket:
     enable: true # websocket的开关
     path: /infra/ws # 路径

+ 3 - 3
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/interview/InterviewInviteStatusEnum.java

@@ -5,7 +5,7 @@ import lombok.Getter;
 
 /**
  * 面试状态 
- * 0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消
+ * 0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消
  **/
 @Getter
 @AllArgsConstructor
@@ -15,8 +15,8 @@ public enum InterviewInviteStatusEnum {
     PENDING_INTERVIEW("1", "待面试"),
     APPROACHING_INTERVIEW("2", "即将面试"),
     COMPLETED("3", "已完成"),
-    AWAITING_FEEDBACK("4", "待反馈"),
-    FEEDBACK_PROVIDED("5", "已反馈"),
+    FEEDBACK_PROVIDED("4", "已反馈"),
+    NOT_ATTENDED("5", "未能爽约"),
     REJECTED("98", "拒绝"),
     CANCELLED("99", "已取消");
 

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/AppInterviewInviteController.java

@@ -4,8 +4,8 @@ import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInviteRespVO;
-import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqCancellationVO;
 import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqConsentVO;
 import com.citu.module.menduner.system.service.interview.InterviewInviteService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -39,7 +39,7 @@ public class AppInterviewInviteController {
     @PreAuthenticated
     @GetMapping("/page")
     @Operation(summary = "获取面试日程分页")
-    public CommonResult<PageResult<AppInterviewInviteRespVO>> page(@Valid PageParam reqVO) {
+    public CommonResult<PageResult<AppInterviewInviteRespVO>> page(@Valid AppInterviewInvitePageReqVO reqVO) {
         return success(service.page(reqVO));
     }
 

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/interview/vo/AppInterviewInvitePageReqVO.java

@@ -0,0 +1,30 @@
+package com.citu.module.menduner.system.controller.app.interview.vo;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "menduner - 面试邀请分页查询 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class AppInterviewInvitePageReqVO extends PageParam {
+
+
+    @Schema(description = "类型 0 线上面试| 1 线下面试", example = "1")
+    private String type;
+
+    @Schema(description = "面试时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] time;
+
+    @Schema(description = "状态(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)", example = "2")
+    private String status;
+}

+ 29 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/AppAdminInterviewInviteController.java

@@ -3,10 +3,7 @@ package com.citu.module.menduner.system.controller.appadmin.interview;
 import com.citu.framework.common.pojo.CommonResult;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.security.core.annotations.PreAuthenticated;
-import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqCancellationVO;
-import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqPageVO;
-import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqSaveVO;
-import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteRespVO;
+import com.citu.module.menduner.system.controller.appadmin.interview.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.service.interview.InterviewInviteService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -57,10 +54,37 @@ public class AppAdminInterviewInviteController {
     @PostMapping("/cancellation")
     @Operation(summary = "取消面试")
     public CommonResult<Boolean> cancellation
-            (@RequestBody @Valid AppAdminInterviewInviteReqCancellationVO reqVO) {
+            (@RequestBody @Valid AppAdminInterviewInviteCancellationReqVO reqVO) {
         service.cancellation(reqVO);
         return success(true);
     }
 
+    @PreAuthenticated
+    @PostMapping("/completed")
+    @Operation(summary = "完成面试")
+    public CommonResult<Boolean> completed
+            (@RequestParam("id") Long id) {
+        service.completed(id);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @PostMapping("/not/attended")
+    @Operation(summary = "未能爽约面试")
+    public CommonResult<Boolean> notAttended
+            (@RequestBody @Valid AppAdminInterviewInviteNotAttendedReqVO reqVO) {
+        service.notAttended(reqVO);
+        return success(true);
+    }
+
+    @PreAuthenticated
+    @PostMapping("/feedback")
+    @Operation(summary = "面试反馈")
+    public CommonResult<Boolean> feedback
+            (@RequestBody @Valid AppAdminInterviewInviteFeedbackReqVO reqVO) {
+        service.feedback(reqVO);
+        return success(true);
+    }
+
 
 }

+ 2 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteReqCancellationVO.java → menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteCancellationReqVO.java

@@ -1,17 +1,13 @@
 package com.citu.module.menduner.system.controller.appadmin.interview.vo;
 
 
+import com.citu.module.menduner.system.controller.base.interview.InterviewInviteReqOperateVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 @Schema(description = "menduner - 面试取消 Request VO")
 @Data
-public class AppAdminInterviewInviteReqCancellationVO {
+public class AppAdminInterviewInviteCancellationReqVO extends InterviewInviteReqOperateVO {
 
-    @Schema(description = "id")
-    private Long id;
-
-    @Schema(description = "原因")
-    private String reason;
 
 }

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteFeedbackReqVO.java

@@ -0,0 +1,15 @@
+package com.citu.module.menduner.system.controller.appadmin.interview.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 面试反馈 Request VO")
+@Data
+public class AppAdminInterviewInviteFeedbackReqVO {
+
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "反馈评价")
+    private String evaluate;
+}

+ 10 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteNotAttendedReqVO.java

@@ -0,0 +1,10 @@
+package com.citu.module.menduner.system.controller.appadmin.interview.vo;
+
+import com.citu.module.menduner.system.controller.base.interview.InterviewInviteReqOperateVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 面试未能爽约 Request VO")
+@Data
+public class AppAdminInterviewInviteNotAttendedReqVO extends InterviewInviteReqOperateVO {
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/appadmin/interview/vo/AppAdminInterviewInviteReqPageVO.java

@@ -33,7 +33,7 @@ public class AppAdminInterviewInviteReqPageVO extends AppAdminPersonPageReqVO {
     @Schema(description = "受邀方联系电话|冗余")
     private String phone;
 
-    @Schema(description = "状态(0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)", example = "2")
+    @Schema(description = "状态(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)", example = "2")
     private String status;
 
 

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInvitePageReqVO.java

@@ -43,7 +43,7 @@ public class InterviewInvitePageReqVO extends PageParam {
     @Schema(description = "邀请方联系电话|冗余")
     private String invitePhone;
 
-    @Schema(description = "(0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)", example = "2")
+    @Schema(description = "(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)", example = "2")
     private String status;
 
     @Schema(description = "创建时间")

+ 15 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteReqOperateVO.java

@@ -0,0 +1,15 @@
+package com.citu.module.menduner.system.controller.base.interview;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "menduner - 面试操作 Request VO")
+@Data
+public class InterviewInviteReqOperateVO {
+
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "原因")
+    private String reason;
+}

+ 6 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteRespVO.java

@@ -61,8 +61,8 @@ public class InterviewInviteRespVO {
     @ExcelProperty("维度")
     private String latitude;
 
-    @Schema(description = "(0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @ExcelProperty("(0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)")
+    @Schema(description = "(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)")
     private String status;
 
     @Schema(description = "原因")
@@ -73,6 +73,10 @@ public class InterviewInviteRespVO {
     @ExcelProperty("备注")
     private String remark;
 
+    @Schema(description = "反馈评价")
+    @ExcelProperty("反馈评价")
+    private String evaluate;
+
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;

+ 4 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/interview/InterviewInviteSaveReqVO.java

@@ -63,7 +63,10 @@ public class InterviewInviteSaveReqVO {
     @Schema(description = "备注")
     private String remark;
 
-    @Schema(description = "状态(0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @Schema(description = "反馈评价")
+    private String evaluate;
+
+    @Schema(description = "状态(0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotEmpty(message = "{1_100_033_010}")
     private String status;
 

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/interview/InterviewInviteDO.java

@@ -76,13 +76,17 @@ public class InterviewInviteDO extends BaseDO {
      */
     private String latitude;
     /**
-     * (0待接受|1待面试|2即将面试|3已完成|4待反馈|5已反馈|98拒绝|99已取消)
+     * (0待接受|1待面试|2即将面试|3已完成|4已反馈|5未能爽约|98拒绝|99已取消)
      */
     private String status;
     /**
      * 原因
      */
     private String reason;
+    /**
+     * 反馈评价
+     */
+    private String evaluate;
     /**
      * 备注
      */

+ 7 - 4
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/interview/InterviewInviteMapper.java

@@ -1,19 +1,17 @@
 package com.citu.module.menduner.system.dal.mysql.interview;
 
 
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.mybatis.core.mapper.BaseMapperX;
 import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
 import com.citu.framework.mybatis.core.query.MPJLambdaWrapperX;
+import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteReqPageVO;
 import com.citu.module.menduner.system.controller.appadmin.interview.vo.AppAdminInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInvitePageReqVO;
 import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseDO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterpriseUserBindDO;
 import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
 import com.citu.module.menduner.system.dal.dataobject.person.PersonInfoDO;
@@ -43,7 +41,7 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
                 .orderByDesc(InterviewInviteDO::getId));
     }
 
-    default PageResult<AppInterviewInviteRespVO> page(PageParam reqVO, Long userId) {
+    default PageResult<AppInterviewInviteRespVO> page(AppInterviewInvitePageReqVO reqVO, Long userId) {
         MPJLambdaWrapperX<InterviewInviteDO> query = new MPJLambdaWrapperX<>();
         query.selectAll(InterviewInviteDO.class);
         query.selectAssociation(JobAdvertisedDO.class, AppInterviewInviteRespVO::getJob);
@@ -54,6 +52,11 @@ public interface InterviewInviteMapper extends BaseMapperX<InterviewInviteDO> {
 
         query.eq(InterviewInviteDO::getUserId, userId);
 
+        query
+                .eqIfPresent(InterviewInviteDO::getType, reqVO.getType())
+                .betweenIfPresent(InterviewInviteDO::getTime, reqVO.getTime())
+                .eqIfPresent(InterviewInviteDO::getStatus, reqVO.getStatus());
+
         return selectJoinPage(reqVO, AppInterviewInviteRespVO.class, query);
     }
 

+ 30 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteService.java

@@ -1,8 +1,8 @@
 package com.citu.module.menduner.system.service.interview;
 
 
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.appadmin.interview.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
@@ -12,7 +12,6 @@ import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteD
 
 import javax.validation.Valid;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 面试邀请 Service 接口
@@ -60,12 +59,14 @@ public interface InterviewInviteService {
     PageResult<InterviewInviteDO> getInterviewInvitePage(InterviewInvitePageReqVO pageReqVO);
 
     // ========== 求职端 ==========
+
     /**
      * 同意邀约面试
      *
      * @param reqVO 同意邀约
      */
     void consent(AppAdminInterviewInviteReqConsentVO reqVO);
+
     /**
      * 拒绝邀约面试
      *
@@ -79,9 +80,10 @@ public interface InterviewInviteService {
      * @param reqVO 分页查询
      * @return 面试日程分页
      */
-    PageResult<AppInterviewInviteRespVO> page(PageParam reqVO);
+    PageResult<AppInterviewInviteRespVO> page(AppInterviewInvitePageReqVO reqVO);
 
     // ========== 招聘端 ==========
+
     /**
      * 获取当前企业面试日期的面试数量
      */
@@ -95,17 +97,40 @@ public interface InterviewInviteService {
      */
     PageResult<AppAdminInterviewInviteRespVO> page(AppAdminInterviewInviteReqPageVO reqVO);
 
-
     /**
      * 保存面试
+     *
      * @param reqVO
      **/
     void save(AppAdminInterviewInviteReqSaveVO reqVO);
 
     /**
      * 取消面试
+     *
      * @param reqVO 面试取消
      **/
-    void cancellation(AppAdminInterviewInviteReqCancellationVO reqVO);
+    void cancellation(AppAdminInterviewInviteCancellationReqVO reqVO);
+
+    /**
+     * 完成面试
+     *
+     * @param id 面试id
+     **/
+    void completed(Long id);
+
+    /**
+     * 未能爽约面试
+     *
+     * @param reqVO
+     */
+    void notAttended(AppAdminInterviewInviteNotAttendedReqVO reqVO);
+
+    /**
+     * 面试反馈
+     *
+     * @param reqVO 面试反馈
+     **/
+    void feedback(AppAdminInterviewInviteFeedbackReqVO reqVO);
+
 
 }

+ 29 - 5
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/interview/InterviewInviteServiceImpl.java

@@ -2,18 +2,17 @@ package com.citu.module.menduner.system.service.interview;
 
 
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
-import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.security.core.LoginUser;
 import com.citu.module.menduner.common.util.LoginUserContext;
+import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.app.interview.vo.AppInterviewInviteRespVO;
 import com.citu.module.menduner.system.controller.appadmin.interview.vo.*;
 import com.citu.module.menduner.system.controller.base.CommonRespVO;
 import com.citu.module.menduner.system.controller.base.contact.EnterpriseUserContactRespVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInvitePageReqVO;
 import com.citu.module.menduner.system.controller.base.interview.InterviewInviteSaveReqVO;
-import com.citu.module.menduner.system.dal.dataobject.enterprise.EnterprisePostDO;
 import com.citu.module.menduner.system.dal.dataobject.interview.InterviewInviteDO;
 import com.citu.module.menduner.system.dal.mysql.interview.InterviewInviteMapper;
 import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
@@ -135,8 +134,8 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
     }
 
     @Override
-    public PageResult<AppInterviewInviteRespVO> page(PageParam reqVO) {
-        PageResult<AppInterviewInviteRespVO> result =  mapper.page(reqVO, LoginUserContext.getUserId());
+    public PageResult<AppInterviewInviteRespVO> page(AppInterviewInvitePageReqVO reqVO) {
+        PageResult<AppInterviewInviteRespVO> result = mapper.page(reqVO, LoginUserContext.getUserId());
         result.getList().forEach(resp -> {
             EnterpriseUserContactRespVO contactRespVO = userBindService
                     .getContact(resp.getEnterpriseId(), resp.getInviteUserId());
@@ -177,11 +176,36 @@ public class InterviewInviteServiceImpl implements InterviewInviteService {
 
     @Override
     @DSTransactional
-    public void cancellation(AppAdminInterviewInviteReqCancellationVO reqVO) {
+    public void cancellation(AppAdminInterviewInviteCancellationReqVO reqVO) {
         InterviewInviteDO interviewInvite = validateInterviewInviteExists(reqVO.getId());
         setStatus(interviewInvite, InterviewInviteStatusEnum.CANCELLED);
         interviewInvite.setReason(reqVO.getReason());
         mapper.updateById(interviewInvite);
     }
 
+    @Override
+    @DSTransactional
+    public void completed(Long id) {
+        InterviewInviteDO interviewInvite = validateInterviewInviteExists(id);
+        setStatus(interviewInvite, InterviewInviteStatusEnum.COMPLETED);
+        mapper.updateById(interviewInvite);
+    }
+
+    @Override
+    @DSTransactional
+    public void feedback(AppAdminInterviewInviteFeedbackReqVO reqVO) {
+        InterviewInviteDO interviewInvite = validateInterviewInviteExists(reqVO.getId());
+        setStatus(interviewInvite, InterviewInviteStatusEnum.FEEDBACK_PROVIDED);
+        interviewInvite.setEvaluate(reqVO.getEvaluate());
+        mapper.updateById(interviewInvite);
+    }
+
+    @Override
+    @DSTransactional
+    public void notAttended(AppAdminInterviewInviteNotAttendedReqVO reqVO) {
+        InterviewInviteDO interviewInvite = validateInterviewInviteExists(reqVO.getId());
+        setStatus(interviewInvite, InterviewInviteStatusEnum.NOT_ATTENDED);
+        interviewInvite.setReason(reqVO.getReason());
+        mapper.updateById(interviewInvite);
+    }
 }