package com.fdkankan.platform.goods.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.common.constant.TbStatus;
import com.fdkankan.platform.goods.common.SkuCache;
import com.fdkankan.platform.goods.entity.GoodsSku;
import com.fdkankan.platform.goods.mapper.IGoodsSkuMapper;
import com.fdkankan.platform.goods.service.IGoodsSkuService;
import com.fdkankan.platform.goods.vo.ResponseGoodsSku;
import com.fdkankan.platform.user.request.RequestCamera;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 商品sku表 服务实现类
 * </p>
 *
 * @author 
 * @since 2021-12-24
 */
@Service
public class GoodsSkuServiceImpl extends ServiceImpl<IGoodsSkuMapper, GoodsSku> implements IGoodsSkuService {

    @Override
    public ResponseGoodsSku getVoBySkuSn(String skuSn) {
        ResponseGoodsSku responseGoodsSku = new ResponseGoodsSku();
        GoodsSku bySkuSn = this.getBySkuSn(skuSn);
        if(bySkuSn!=null){
            BeanUtils.copyProperties(bySkuSn,responseGoodsSku);
        }
        return responseGoodsSku;
    }

    @Override
    public GoodsSku getBySkuSn(String skuSn) {
        QueryWrapper<GoodsSku> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(GoodsSku::getTbStatus, TbStatus.VALID.code());
        queryWrapper.lambda().eq(GoodsSku::getSkuSn,skuSn);
        queryWrapper.last("LIMIT 1");
        List<GoodsSku> list = this.list(queryWrapper);
        if(list == null || list.size()<=0){
            return null;
        }
        return list.get(0);
    }

    @Override
    public List<GoodsSku> getByGoodsId(long goodsId) {
        QueryWrapper<GoodsSku> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(GoodsSku::getTbStatus,TbStatus.VALID.code());
        queryWrapper.lambda().eq(GoodsSku::getGoodsId,goodsId);
        return this.list(queryWrapper);
    }

    @Override
    public ResponseGoodsSku getIncrementOrDownloadPrice(RequestCamera camera) {
        String skuStr = SkuCache.skusMap.get(String.valueOf(camera.getDateType()));
        if (StringUtils.isEmpty(skuStr)){
            skuStr = SkuCache.skusMap.get("5");
        }
        return this.getVoBySkuSn(skuStr);
    }
}
