package com.jianshui.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.common.core.domain.entity.SysDictData;
import com.jianshui.common.utils.DictUtils;
import com.jianshui.system.mapper.CompanyserviceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jianshui.system.mapper.CompanyservicePropMapper;
import com.jianshui.system.domain.CompanyserviceProp;
import com.jianshui.system.service.ICompanyservicePropService;

/**
 * 企业扩展属性，包括大象key等Service业务层处理
 *
 * @author Gong Quanlin
 * @date 2022-04-06
 */
@Service
public class CompanyservicePropServiceImpl implements ICompanyservicePropService {

    @Autowired
    private CompanyservicePropMapper companyservicePropMapper;

    @Autowired
    private CompanyserviceMapper companyserviceMapper;

    /**
     * 查询企业扩展属性，包括大象key等
     *
     * @param companyid 企业扩展属性，包括大象key等主键
     * @return 企业扩展属性，包括大象key等
     */
    @Override
    public List<CompanyserviceProp> selectCompanyservicePropByCompanyid(Long companyid) {
        return companyservicePropMapper.selectCompanyservicePropByCompanyid(companyid);
    }

    /**
     * 查询企业扩展属性，包括大象key等列表
     *
     * @param companyserviceProp 企业扩展属性，包括大象key等
     * @return 企业扩展属性，包括大象key等
     */
    @Override
    public List<CompanyserviceProp> selectCompanyservicePropList(CompanyserviceProp companyserviceProp) {
        return companyservicePropMapper.selectCompanyservicePropList(companyserviceProp);
    }

    /**
     * 新增企业扩展属性，包括大象key等
     *
     * @param companyserviceProp 企业扩展属性，包括大象key等
     * @return 结果
     */
    @Override
    public int insertCompanyserviceProp(CompanyserviceProp companyserviceProp) {
        return companyservicePropMapper.insertCompanyserviceProp(companyserviceProp);
    }

    /**
     * 修改企业扩展属性，包括大象key等
     *
     * @param companyserviceProp 企业扩展属性，包括大象key等
     * @return 结果
     */
    @Override
    public int updateCompanyserviceProp(CompanyserviceProp companyserviceProp) {
        return companyservicePropMapper.updateCompanyserviceProp(companyserviceProp);
    }

    /**
     * 批量删除企业扩展属性，包括大象key等
     *
     * @param companyids 需要删除的企业扩展属性，包括大象key等主键
     * @return 结果
     */
    @Override
    public int deleteCompanyservicePropByCompanyids(Long[] companyids) {
        return companyservicePropMapper.deleteCompanyservicePropByCompanyids(companyids);
    }

    /**
     * 删除企业扩展属性，包括大象key等信息
     *
     * @param companyid 企业扩展属性，包括大象key等主键
     * @return 结果
     */
    @Override
    public int deleteCompanyservicePropByCompanyid(Long companyid) {
        return companyservicePropMapper.deleteCompanyservicePropByCompanyid(companyid);
    }

    /**
     * 生成默认companyservice detail
     *
     * @param companyId
     * @return
     */
    @Override
    public boolean initCompanyserviceProp(Long companyId) {
        Companyservice companyservice = companyserviceMapper.selectCompanyserviceByCompanyid(companyId);
        if (companyservice == null) {
            return false;
        }
        companyservicePropMapper.deleteCompanyservicePropByCompanyid(companyId);
        List<SysDictData> dictDataList = DictUtils.getDictCache("companyservice_detail_default");
        for (SysDictData dictData : dictDataList) {
            CompanyserviceProp companyserviceProp = new CompanyserviceProp();
            companyserviceProp.setCompanyid(companyservice.getCompanyid());
            companyserviceProp.setKey(dictData.getDictLabel());
            companyserviceProp.setValue(dictData.getDictValue());
            companyserviceProp.setRemark(dictData.getRemark());
            companyservicePropMapper.insertCompanyserviceProp(companyserviceProp);
        }
        return true;
    }

    @Override
    public CompanyserviceProp selectPropByKey(Long companyId, String key) {
        return companyservicePropMapper.selectPropByKey(companyId, key);
    }
}
