using MiAssessment.Admin.Business.Attributes; using MiAssessment.Admin.Business.Constants; using MiAssessment.Admin.Business.Models; using MiAssessment.Admin.Business.Models.BusinessPage; using MiAssessment.Admin.Business.Models.Common; using MiAssessment.Admin.Business.Services.Interfaces; using Microsoft.AspNetCore.Mvc; namespace MiAssessment.Admin.Business.Controllers; /// /// 业务介绍页管理控制器 /// [Route("api/admin/businessPage")] public class BusinessPageController : BusinessControllerBase { private readonly IBusinessPageService _businessPageService; /// /// 构造函数 /// /// 业务介绍页服务 public BusinessPageController(IBusinessPageService businessPageService) { _businessPageService = businessPageService; } /// /// 获取业务介绍页列表 /// /// 查询参数 /// 分页业务介绍页列表 [HttpGet("getList")] [BusinessPermission(BusinessPermissions.BusinessPage.View)] public async Task GetList([FromQuery] BusinessPageQueryRequest request) { try { var result = await _businessPageService.GetPageListAsync(request); return Ok(result); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "获取业务介绍页列表失败"); } } /// /// 获取业务介绍页详情 /// /// 业务介绍页ID /// 业务介绍页详情 [HttpGet("getDetail")] [BusinessPermission(BusinessPermissions.BusinessPage.View)] public async Task GetDetail([FromQuery] long id) { if (id <= 0) { return ValidationError("业务介绍页ID无效"); } try { var result = await _businessPageService.GetPageByIdAsync(id); if (result == null) { return Error(ErrorCodes.BusinessPageNotFound, "业务介绍页不存在"); } return Ok(result); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "获取业务介绍页详情失败"); } } /// /// 创建业务介绍页 /// /// 创建请求 /// 新创建的业务介绍页ID [HttpPost("create")] [BusinessPermission(BusinessPermissions.BusinessPage.Create)] public async Task Create([FromBody] CreateBusinessPageRequest request) { if (!ModelState.IsValid) { var errorMessage = ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage) .FirstOrDefault() ?? "参数验证失败"; return ValidationError(errorMessage); } try { var id = await _businessPageService.CreatePageAsync(request); return Ok(new { Id = id }); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "创建业务介绍页失败"); } } /// /// 更新业务介绍页 /// /// 更新请求 /// 是否更新成功 [HttpPost("update")] [BusinessPermission(BusinessPermissions.BusinessPage.Update)] public async Task Update([FromBody] UpdateBusinessPageRequest request) { if (!ModelState.IsValid) { var errorMessage = ModelState.Values .SelectMany(v => v.Errors) .Select(e => e.ErrorMessage) .FirstOrDefault() ?? "参数验证失败"; return ValidationError(errorMessage); } if (request.Id <= 0) { return ValidationError("业务介绍页ID无效"); } try { var success = await _businessPageService.UpdatePageAsync(request); return success ? Ok() : Error(ErrorCodes.BusinessPageNotFound, "业务介绍页不存在"); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "更新业务介绍页失败"); } } /// /// 删除业务介绍页(软删除) /// /// 删除请求 /// 是否删除成功 [HttpPost("delete")] [BusinessPermission(BusinessPermissions.BusinessPage.Delete)] public async Task Delete([FromBody] DeleteRequest request) { if (request.Id <= 0) { return ValidationError("业务介绍页ID无效"); } try { var success = await _businessPageService.DeletePageAsync(request.Id); return success ? Ok() : Error(ErrorCodes.BusinessPageNotFound, "业务介绍页不存在"); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "删除业务介绍页失败"); } } /// /// 更新业务介绍页状态 /// /// 状态更新请求 /// 是否更新成功 [HttpPost("updateStatus")] [BusinessPermission(BusinessPermissions.BusinessPage.Update)] public async Task UpdateStatus([FromBody] UpdateStatusRequest request) { if (request.Id <= 0) { return ValidationError("业务介绍页ID无效"); } if (request.Status != 0 && request.Status != 1) { return ValidationError("状态值无效,只能为0(禁用)或1(启用)"); } try { var success = await _businessPageService.UpdatePageStatusAsync(request.Id, request.Status); return success ? Ok() : Error(ErrorCodes.BusinessPageNotFound, "业务介绍页不存在"); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "更新业务介绍页状态失败"); } } /// /// 更新业务介绍页排序 /// /// 排序更新请求 /// 是否更新成功 [HttpPost("updateSort")] [BusinessPermission(BusinessPermissions.BusinessPage.Update)] public async Task UpdateSort([FromBody] SingleSortRequest request) { if (request.Id <= 0) { return ValidationError("业务介绍页ID无效"); } try { var success = await _businessPageService.UpdatePageSortAsync(request.Id, request.Sort); return success ? Ok() : Error(ErrorCodes.BusinessPageNotFound, "业务介绍页不存在"); } catch (BusinessException ex) { return Error(ex.Code, ex.Message); } catch (Exception) { return Error(ErrorCodes.SystemError, "更新业务介绍页排序失败"); } } }