package com.liquidnet.service.goblin.constant;

import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;

/**
 * 商品「是否展示到商城」取值约定：0-否，1-是。
 * 落库 / 写 SQL 参数时统一通过 {@link #resolve(GoblinGoodsInfoVo)}，避免各处 magic number。
 */
public final class GoblinGoodsShowInMallHelper {

    public static final int SHOW_IN_MALL_YES = 1;
    public static final int SHOW_IN_MALL_NO = 0;

    /** 收钱吧演出关联商品，与前台 {@code spuType=33} 约定一致 */
    public static final int SQB_SPU_TYPE = 33;

    private GoblinGoodsShowInMallHelper() {
    }

    /**
     * 解析落库用的 show_in_mall：VO 已赋值则沿用；未赋值时普通商品默认展示，SQB 商品默认不展示。
     */
    public static int resolve(GoblinGoodsInfoVo vo) {
        if (vo == null) {
            return SHOW_IN_MALL_YES;
        }
        if (vo.getShowInMall() != null) {
            return vo.getShowInMall();
        }
        return vo.getSpuType() == SQB_SPU_TYPE ? SHOW_IN_MALL_NO : SHOW_IN_MALL_YES;
    }

    /** 请求参数未传时的默认值（普通商品 add/edit） */
    public static int defaultFromRequest(Integer showInMall) {
        return showInMall == null ? SHOW_IN_MALL_YES : showInMall;
    }
}
