package cn.cslg.pas.controller;

import cn.cslg.pas.common.JsonPage;
import cn.cslg.pas.common.core.base.Constants;
import cn.cslg.pas.common.model.dto.ProductMarketDataAddNewDTO;
import cn.cslg.pas.common.model.dto.ProductMarketDataQueryPageDTO;
import cn.cslg.pas.common.model.dto.ProductMarketDataUpdateDTO;
import cn.cslg.pas.common.utils.Response;
import cn.cslg.pas.exception.XiaoShiException;
import cn.cslg.pas.service.IProductMarketDataService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * 产品营销数据的Controller层
 *
 * @Author chenyu
 * @Date 2023/3/9
 */
@Tag(name = "产品营销数据管理模块")
@RequiredArgsConstructor
@Slf4j
@RequestMapping(Constants.API_VERSION_V2 + "/ProductMarketDatas")
@RestController
public class ProductMarketDataController {
    private final IProductMarketDataService productMarketDataService;
    @Operation(summary = "新增产品营销数据")
    @PostMapping("/addNew")
    public String addNew(@RequestBody ProductMarketDataAddNewDTO productMarketDataAddNewDTO) {
        log.info("开始处理【新增产品营销数据】的请求，请求参数为：{}", productMarketDataAddNewDTO);
        try {
            productMarketDataService.addNew(productMarketDataAddNewDTO);
        } catch (XiaoShiException e) {
            return Response.error(e.getMessage());
        }
        return Response.success("新增产品营销数据完成");
    }


    @Operation(summary = "修改产品营销数据")
    @PostMapping("/update")
    public String update(@RequestBody ProductMarketDataUpdateDTO productMarketDataUpdateDTO) {
        log.info("开始处理【修改产品营销数据】的请求，请求参数为：{}", productMarketDataUpdateDTO);
        try {
            productMarketDataService.update(productMarketDataUpdateDTO);
        } catch (XiaoShiException e) {
            return Response.error(e.getMessage());
        }
        return Response.success("修改产品营销数据完成");
    }


    @Operation(summary = "分页查询产品营销数据")
    @PostMapping("/query")
    public String update(@RequestBody ProductMarketDataQueryPageDTO productMarketDataQueryPageDTO) {
        log.info("开始处理【分页查询产品营销数据】的请求，请求参数为：{}", productMarketDataQueryPageDTO);
        JsonPage jsonPage = productMarketDataService.query(productMarketDataQueryPageDTO);
        return Response.success(jsonPage);
    }


    @Operation(summary = "删除产品营销数据")
    @GetMapping("/delete")
    public String delete(Integer id) {
        log.info("开始处理【删除产品营销数据】的请求，请求参数为：{}", id);
        try {
            productMarketDataService.delete(id);
        } catch (XiaoShiException e) {
            return Response.error(e.getMessage());
        }
        return Response.success("删除产品营销数据完成");
    }

}
