package com.jianshui.system.service.impl;

import java.util.Date;
import java.util.List;

import com.jianshui.common.core.domain.model.LoginUser;
import com.jianshui.common.utils.AESUtil1;
import com.jianshui.common.utils.KeyConstants;
import com.jianshui.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.jianshui.system.mapper.CompanyserviceMapper;
import com.jianshui.common.core.domain.entity.Companyservice;
import com.jianshui.system.service.ICompanyserviceService;

/**
 * 销方信息Service业务层处理
 *
 * @author jianshui
 * @date 2021-12-21
 */
@Service
public class CompanyserviceServiceImpl implements ICompanyserviceService {
    @Autowired
    private CompanyserviceMapper companyserviceMapper;

    /**
     * 查询销方信息
     *
     * @param companyid 销方信息主键
     * @return 销方信息
     */
    @Override
    public Companyservice selectCompanyserviceByCompanyid(Long companyid) {
        return companyserviceMapper.selectCompanyserviceByCompanyid(companyid);
    }

    @Override
    public Companyservice selectCompanyserviceByIdentity(String Identity) {
        return companyserviceMapper.selectCompanyserviceByIdentity(Identity);
    }

    @Override
    public Companyservice selectCompanyserviceByTaxcode(String taxcode) {
        return companyserviceMapper.selectCompanyserviceByTaxcode(taxcode);
    }

    /**
     * 查询销方信息列表
     *
     * @param companyservice 销方信息
     * @return 销方信息
     */
    @Override
    public List<Companyservice> selectCompanyserviceList(Companyservice companyservice) {
        return companyserviceMapper.selectCompanyserviceList(companyservice);
    }

    /**
     * 新增销方信息
     *
     * @param companyservice 销方信息
     * @return 结果
     */
    @Override
    public int insertCompanyservice(Companyservice companyservice) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        companyservice.setCreateTime(new Date());
        companyservice.setCreateDept(Long.toString(loginUser.getDeptId()));
        companyservice.setCreateBy(Long.toString(loginUser.getUserId()));
        KeyConstants.password = KeyConstants.RondomPassword();
        companyservice.setSecret(AESUtil1.aesencrypt(KeyConstants.RondomKey(), KeyConstants.password));
        int res = companyserviceMapper.insertCompanyservice(companyservice);
        if (res <= 0) {
            return res;
        }
        companyservice.setIdentity(Long.toString(companyservice.getCompanyid()));
        res = companyserviceMapper.updateCompanyservice(companyservice);
        return res;
    }

    /**
     * 修改销方信息
     *
     * @param companyservice 销方信息
     * @return 结果
     */
    @Override
    public int updateCompanyservice(Companyservice companyservice) {
        return companyserviceMapper.updateCompanyservice(companyservice);
    }

    /**
     * 批量删除销方信息
     *
     * @param companyids 需要删除的销方信息主键
     * @return 结果
     */
    @Override
    public int deleteCompanyserviceByCompanyids(Long[] companyids) {
        return companyserviceMapper.deleteCompanyserviceByCompanyids(companyids);
    }

    /**
     * 删除销方信息信息
     *
     * @param companyid 销方信息主键
     * @return 结果
     */
    @Override
    public int deleteCompanyserviceByCompanyid(Long companyid) {
        return companyserviceMapper.deleteCompanyserviceByCompanyid(companyid);
    }

    /**
     * 刷新登录用户的companyservice缓存
     *
     * @return
     */
    @Override
    public void refreshLoginUserCompanyservice() {
        LoginUser user = SecurityUtils.getLoginUser();
        Long companyId = user.getCompanyId();

        // 绑定一下companyService
        Companyservice companyservice = null;
        if (companyId != null || companyId != 0) {
            companyservice = selectCompanyserviceByCompanyid(companyId);
        }

        user.setCompanyservice(companyservice);
    }
}
