package com.liquidnet.service.goblin.controller;

import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinSqbPerfGoodsVo;
import com.liquidnet.service.goblin.service.IGoblinSqbGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * 收钱吧商品同步 Controller
 */
@Slf4j
@Api(tags = "收钱吧商品同步")
@RestController
@RequestMapping("/goblin/sqb/goods")
public class GoblinSqbGoodsController {

    @Autowired
    IGoblinSqbGoodsService goblinSqbGoodsService;

    /**
     * 查询所有商城及商品列表
     * 后端自动拉取所有商城，循环获取每个商城的商品列表，聚合返回前端
     */
    @GetMapping("/list")
    @ApiOperation("查询收钱吧所有商城及商品列表")
    public ResponseDto<List<GoblinSqbPerfGoodsVo>> list() {
        return goblinSqbGoodsService.getAllMallProducts();
    }

    /**
     * 批量同步商品到 goblin 系统
     * 已存在则更新，不存在则新增（spuType=33）
     */
    @PostMapping("/sync")
    @ApiOperation("批量同步收钱吧商品")
    public ResponseDto<String> sync(@RequestBody List<Map<String, String>> items) {
        return goblinSqbGoodsService.syncGoods(items);
    }

    /**
     * 查询演出关联商品列表（C端）
     * 先查 Redis 缓存（TTL 5min），未命中则查 MySQL 并写入缓存
     */
    @GetMapping("/performance/goods/{performancesId}")
    @ApiOperation("查询演出关联商品列表")
    public ResponseDto<List<GoblinSqbPerfGoodsVo>> getPerfGoods(@PathVariable String performancesId) {
        return goblinSqbGoodsService.getPerfGoods(performancesId);
    }
}
