package com.xiaopeng.operation.controller;
import com.xiaopeng.api.feignClient.maintenance.XpWorkOrderClient;
import com.xiaopeng.api.model.operation.XpFeedbackType;
import com.xiaopeng.common.core.domain.R;
import com.xiaopeng.common.core.exception.ServiceException;
import com.xiaopeng.common.log.annotation.AdminOperationLog;
import com.xiaopeng.common.log.enums.AdminBusinessType;
import com.xiaopeng.common.log.enums.AdminOperationType;
import com.xiaopeng.operation.constant.I18nKeyConstant;
import com.xiaopeng.operation.service.IXpFeedbackTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 意见反馈类型表 前端控制器
*
*
* @author mitao
* @since 2026-02-03
*/
@Slf4j
@RestController
@RequestMapping("/api/v1/feedbackType")
@Api(tags = "管理后台-意见反馈类型")
public class XpFeedbackTypeManagementController {
private final IXpFeedbackTypeService xpFeedbackTypeService;
private final XpWorkOrderClient xpWorkOrderClient;
public XpFeedbackTypeManagementController(IXpFeedbackTypeService xpFeedbackTypeService, XpWorkOrderClient xpWorkOrderClient) {
this.xpFeedbackTypeService = xpFeedbackTypeService;
this.xpWorkOrderClient = xpWorkOrderClient;
}
@GetMapping("/getList")
@ApiOperation(value = "获取意见反馈类型列表")
public R> getList() {
List list = xpFeedbackTypeService.list();
return R.ok(list);
}
@ApiOperation(value = "新增意见反馈类型")
@PostMapping(value = "/saveFeedbackType")
@AdminOperationLog(
businessType = AdminBusinessType.FEEDBACK_TYPE_MANAGEMENT,
operationType = AdminOperationType.ADD,
content = "新增意见反馈类型",
appendRequestData = true
)
public R add(@RequestBody XpFeedbackType xpFeedbackType) {
return R.ok(xpFeedbackTypeService.save(xpFeedbackType));
}
@ApiOperation(value = "编辑意见反馈类型")
@PostMapping(value = "/updateFeedbackType")
@AdminOperationLog(
businessType = AdminBusinessType.FEEDBACK_TYPE_MANAGEMENT,
operationType = AdminOperationType.EDIT,
content = "编辑意见反馈类型",
appendRequestData = true
)
public R updateFeedbackType(@RequestBody XpFeedbackType xpFeedbackType) {
return R.ok(xpFeedbackTypeService.updateById(xpFeedbackType));
}
@ApiOperation(value = "删除意见反馈类型")
@DeleteMapping(value = "/deleteFeedbackType")
@AdminOperationLog(
businessType = AdminBusinessType.FEEDBACK_TYPE_MANAGEMENT,
operationType = AdminOperationType.DELETE,
contentExpression = "'删除意见反馈类型,id=' + #p0",
appendRequestData = false
)
public R deleteFeedbackType(Long id) {
// 判断工单是否包含这个类型
R include = xpWorkOrderClient.include(id);
if(include==null || include.getData()){
throw new ServiceException("该类型被工单引用,无法删除",I18nKeyConstant.INCLUDE);
}
return R.ok(xpFeedbackTypeService.removeById(id));
}
}