package com.xingxi.web.controller.master.product.service.impl;

import com.xingxi.common.core.text.Convert;
import com.xingxi.common.enums.EDelFlag;
import com.xingxi.common.utils.DateUtils;
import com.xingxi.common.utils.ShiroUtils;
import com.xingxi.master.product.domain.ProdTag;
import com.xingxi.master.product.mapper.ProdTagMapper;
import com.xingxi.web.controller.master.product.domain.ProdTagVo;
import com.xingxi.web.controller.master.product.mapper.ProdTagVoMapper;
import com.xingxi.web.controller.master.product.service.IProdTagVoService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * 商品标签Service业务层处理
 *
 * @author xingxi
 * @date 2025-03-06
 */
@Service
public class ProdTagVoServiceImpl implements IProdTagVoService {
    @Resource
    private ProdTagVoMapper prodTagVoMapper;
    @Resource
    private ProdTagMapper prodTagMapper;

    /**
     * 查询商品标签列表
     *
     * @param prodTagVo 商品标签
     * @return 商品标签
     */
    @Override
    public List<ProdTagVo> selectProdTagVoList(ProdTagVo prodTagVo) {
        prodTagVo.setDelFlag(EDelFlag.NO.getVal());
        return prodTagVoMapper.selectProdTagVoList(prodTagVo);
    }

    /**
     * 添加商品标签
     *
     * @param prodTagVo 商品标签Vo
     * @return 影响行数
     */
    @Override
    public int addProdTags(ProdTagVo prodTagVo) {
        List<ProdTag> prodTagVos = new ArrayList<>();
        String[] tagIds = Convert.toStrArray(prodTagVo.getTagIds());
        for (String tagId : tagIds) {
            ProdTag prodTag = new ProdTag();
            prodTag.setProdId(prodTagVo.getProdId());
            prodTag.setTagId(Long.parseLong(tagId));
            prodTag.setDelFlag(EDelFlag.NO.getVal());
            prodTag.setCreateUser(ShiroUtils.getLoginName());
            prodTag.setCreateTime(DateUtils.getNowDate());
            prodTagVos.add(prodTag);
        }
        return prodTagMapper.batchInsertProdTag(prodTagVos);
    }

    /**
     * 删除商品标签
     *
     * @param prodTagVo 商品标签Vo
     * @return 影响行数
     */
    @Override
    public int logicDeleteProdTagByCondition(ProdTagVo prodTagVo) {
        prodTagVo.setUpdateUser(ShiroUtils.getLoginName());
        prodTagVo.setUpdateTime(DateUtils.getNowDate());
        return prodTagVoMapper.logicDeleteProdTagByCondition(prodTagVo);
    }
}
