package shop.alien.second.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiSort;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import shop.alien.entity.result.R;
import shop.alien.entity.second.vo.*;
import shop.alien.second.service.RiskControlGoodsService;
import shop.alien.second.service.SecondGoodsService;

import java.util.List;

/**
 * 风控商品信息控制器
 */
@Slf4j
@Api(tags = {"二手平台-风控商品信息管理(管理后台)"})
@ApiSort(2)
@CrossOrigin
@RestController
@RequestMapping("/admin/riskControl")
@RequiredArgsConstructor
public class RiskControlGoodsController {

    private final RiskControlGoodsService riskControlGoodsService;

    /**
     * 二手商品服务
     */
    private final SecondGoodsService secondGoodsService;
    /**
     * 通过商品记录表ID批量查询商品信息（包含图片）
     *
     * @param dto 商品记录表ID列表DTO
     * @return 商品信息列表
     */
    @PostMapping("/goods/recordIds")
    @ApiOperation("通过商品记录表ID批量查询商品信息")
    public List<SecondGoodsRecordDetailVo> getGoodsInfoByRecordIds(@RequestBody RiskControlGoodsIdsDTO dto) {
        return riskControlGoodsService.getGoodsInfoByRecordIds(dto.getRecordIds());
    }

    /**
     * 通过商品表ID批量查询商品信息（包含图片）
     *
     * @param dto 商品表ID列表DTO
     * @return 商品信息列表
     */
    @PostMapping("/goods/goodsIds")
    @ApiOperation("通过商品表ID批量查询商品信息")
    public List<SecondGoodsVo> getGoodsInfoByGoodsIds(@RequestBody RiskControlGoodsQueryDTO dto) {
        return riskControlGoodsService.getGoodsInfoByGoodsIds(dto.getGoodsIds());
    }


    @PostMapping("/batch/unshelve")
    @ApiOperation("根据风控记录批量下架商品")
    public R<Boolean> batchUnshelveGoodsByRiskControl(@ApiParam("批量下架参数") @RequestBody BatchUnshelveGoodsDTO dto) {
        log.info("AdminSecondGoodsController.batchUnshelveGoodsByRiskControl?dto={}", dto);

        boolean result = secondGoodsService.batchShelveGoodsByRiskControlRecord(dto.getRuleType(), dto.getBusinessId());

        return R.data(result, result ? "批量下架成功" : "批量下架失败");
    }
}