package com.fs.wxcid.service.impl;

import java.util.List;
import com.fs.common.utils.DateUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fs.company.domain.CompanyWxAccount;
import com.fs.company.mapper.CompanyWxAccountMapper;
import com.fs.wxcid.dto.friend.ContactItem;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import com.fs.wxcid.mapper.WxContactMapper;
import com.fs.wxcid.domain.WxContact;
import com.fs.wxcid.service.IWxContactService;

/**
 * 个微联系人Service业务层处理
 * 
 * @author fs
 * @date 2025-12-24
 */
@Service
@AllArgsConstructor
public class WxContactServiceImpl extends ServiceImpl<WxContactMapper, WxContact> implements IWxContactService {

    private final CompanyWxAccountMapper companyWxAccountMapper;

    /**
     * 查询个微联系人
     * 
     * @param id 个微联系人主键
     * @return 个微联系人
     */
    @Override
    public WxContact selectWxContactById(Long id)
    {
        return baseMapper.selectWxContactById(id);
    }

    /**
     * 查询个微联系人列表
     * 
     * @param wxContact 个微联系人
     * @return 个微联系人
     */
    @Override
    public List<WxContact> selectWxContactList(WxContact wxContact)
    {
        return baseMapper.selectWxContactList(wxContact);
    }

    /**
     * 新增个微联系人
     * 
     * @param wxContact 个微联系人
     * @return 结果
     */
    @Override
    public int insertWxContact(WxContact wxContact)
    {
        wxContact.setCreateTime(DateUtils.getNowDate());
        return baseMapper.insertWxContact(wxContact);
    }

    /**
     * 修改个微联系人
     * 
     * @param wxContact 个微联系人
     * @return 结果
     */
    @Override
    public int updateWxContact(WxContact wxContact)
    {
        wxContact.setUpdateTime(DateUtils.getNowDate());
        return baseMapper.updateWxContact(wxContact);
    }

    /**
     * 批量删除个微联系人
     * 
     * @param ids 需要删除的个微联系人主键
     * @return 结果
     */
    @Override
    public int deleteWxContactByIds(Long[] ids)
    {
        return baseMapper.deleteWxContactByIds(ids);
    }

    /**
     * 删除个微联系人信息
     * 
     * @param id 个微联系人主键
     * @return 结果
     */
    @Override
    public int deleteWxContactById(Long id)
    {
        return baseMapper.deleteWxContactById(id);
    }

    @Override
    public void add(Long customerId, String phone, Long accountId, ContactItem e) {
        CompanyWxAccount account = companyWxAccountMapper.selectById(accountId);
        WxContact wxContact = new WxContact();
        wxContact.setUserName(e.getUserName().getStr());
        wxContact.setNickName(e.getNickName().getStr());
        wxContact.setQuanPin(e.getQuanPin().getStr());
        wxContact.setSex(e.getSex());
        wxContact.setAlias(e.getAlias());
        wxContact.setPhone(phone);
        wxContact.setHeadImgUrl(e.getBigHeadImgUrl());
        wxContact.setEncryptUserName(e.getEncryptUserName());
        wxContact.setProvince(e.getProvince());
        wxContact.setCity(e.getCity());
        wxContact.setAccountId(accountId);
        wxContact.setCompanyId(account.getCompanyId());
        wxContact.setCompanyUserId(account.getCompanyUserId());
        wxContact.setCustomerId(customerId);
        save(wxContact);
    }
}
