package com.yami.shop.platform.controller.hb;

import com.alibaba.fastjson.JSONObject;
import com.yami.shop.common.util.hb.HBR;
import com.yami.shop.service.hb.IHBGoodsService;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * 海博-商品信息管理实现
 *
 * @author fubojin
 * @version 1.0.0
 * @since 2025-09-05
 */
@Slf4j
@RestController
@RequestMapping("/hb/goods")
@AllArgsConstructor
@CrossOrigin
public class GoodsController {

    private final IHBGoodsService goodsService;

    /**
     * 海博新增商品信息-回调
     *
     * @param HBRequest 海博商品请求参数
     * @return 商品信息响应
     */
    @PostMapping("/add")
    @ApiOperation(value = "添加商品信息", notes = "海博新增商品信息回调接口")
    public HBR addGoods(@RequestBody JSONObject HBRequest) {
        log.info("海博新增商品{}",HBRequest);
        HBR hbr = goodsService.addHBGoods(HBRequest);
        log.info("海博新增商品返回信息：{}",hbr);
        return hbr;
    }
    /**
     * 海博修改商品信息-回调
     *
     * @param HBRequest 修改海博商品请求参数
     * @return 商品响应
     */
    @PostMapping("/update")
    @ApiOperation(value = "修改商品信息", notes = "海博新增商品信息回调接口")
    public HBR updateGoods(@RequestBody JSONObject HBRequest) {
        log.info("海博变更商品{}",HBRequest);
        return goodsService.addHBGoods(HBRequest);
    }

    /**
     * 海博商品可售状态变更信息-回调
     *
     * @param HBRequest 修改海博商品可售状态变更请求参数
     * @return 商品可售状态变更响应
     */
    @PostMapping("/updateStatus")
    public HBR updateGoodsStatus(@RequestBody JSONObject HBRequest) {
        log.info("海博商品可售状态变更{}",HBRequest);
        return goodsService.updateGoodsStatus(HBRequest);
    }

    /**
     * 海博商品价格变更信息-回调
     *
     * @param HBRequest 修改海博商品价格变更请求参数
     * @return 商品价格变更响应
     */
    @PostMapping("/updateGoodsPrice")
    public HBR updateGoodsPrice(@RequestBody JSONObject HBRequest) {
        log.info("海博商品价格变更{}",HBRequest);
        return goodsService.updateGoodsPrice(HBRequest);
    }
    /**
     * 海博线上可售库存变更-回调
     *
     * @param HBRequest 海博商品库存请求参数
     * @return 商品响应
     */
    @PostMapping("/updateGoodsStock")
    public HBR updateGoodsStock(@RequestBody JSONObject HBRequest) {
        log.info("海博线上可售库存变更{}",HBRequest);
        return HBR.success(goodsService.updateGoodsStock(HBRequest));
    }

    /**
     * 海博删除商品信息-回调
     *
     * @param HBRequest 修改海博商品请求参数
     * @return 商品响应
     */
    @PostMapping("/delete")
    public HBR deleteGoods(@RequestBody JSONObject HBRequest) {
        log.info("海博删除商品{}",HBRequest);
        goodsService.deleteGoods(HBRequest);
        return HBR.success();
    }

    /**
     * 海博商品信息(商品主档信息查询接口 - 对应的是海博商品里面“线上商品管理”)
     *
     * @return 商品响应
     */
    @GetMapping("/selectGoodsInfo")
    public HBR selectGoodsInfo(String outSkuId) {
        return HBR.success(goodsService.selectHBGoodsInfo(outSkuId));
    }


    /**
     * 海博商品信息(商品主档信息查询接口 - 对应的是海博商品里面“线上商品管理”)
     *
     * @return 商品响应
     */
    @GetMapping("/selectHBGoodsSpuInfo")
    public HBR selectHBGoodsSpuInfo(String spuId) {
        return HBR.success(goodsService.selectHBGoodsSpuInfo(spuId));
    }


}
