<?php
/**
  * @method 目录联系方式
  * @author zhengweihua
  * @copyright 2022/05/24
  */
class B2cSuperContact extends B2cBase
{
    /**
     * @param   $contact [Array] 联系方式数组
     * @param   $shopid [int] 店铺ID
     * @method 保存店铺联系方式
     * @author zhengweihua 
     * @copyright 2022-05-24
     */
    public function setShopContact($contactArr,$shopid)
    {
        if (!LibFc::Int($shopid)) return LibFc::ReturnData(false, '参数不正确');
        if(empty($contactArr))$contactArr = [];
        $this->B2CDb->Begin();
        //当前的数组
        $res  = $this->get('sh_super_contact',['ssc_id'],sprintf(" and ssc_shop_id = %d",$shopid));
        $sscIdArr = array_column($res['data'],'ssc_id');
        
        $postSscIdArr = $contactArr['ssc_id']?$contactArr['ssc_id']:[];
        $editArr = array_intersect($postSscIdArr,$sscIdArr);
        $delArr =  array_diff($sscIdArr,$postSscIdArr);

        if($delArr){
            $where = sprintf(" and ssc_shop_id=%d and ssc_id in (%s)",$shopid,implode(',', $delArr));
            $this->del('sh_super_contact',$where);
        }
        $arr = [];
        if($contactArr)
        {
            foreach($contactArr['ssc_type'] as $key => $type) 
            {
                if(!in_array($type,['phone','tel','qq','email','url','addr'])){
                    continue;
                }
                $row  = [
                    'ssc_type'=> $type,
                    'ssc_show'=> $contactArr['ssc_show'][$key]?$contactArr['ssc_show'][$key]:$contactArr['ssc_val'][$key],
                    'ssc_val'=> $contactArr['ssc_val'][$key],
                    'ssc_seq'=>(int)$contactArr['ssc_seq'][$key],
                    'ssc_shop_id'=>$shopid,
                    'ssc_lng' => 0,
                    'ssc_lat' => 0
                ];
                if($type == 'addr')
                {
                    $LibYpApi = new LibYpApi();
                    $lngres = $LibYpApi->Get('user/formatAddrInfo', ['addr'=>$contactArr['ssc_show'][$key],'lngFlag'=>1]);
                    if($lngres['data']['lng'] && $lngres['data']['lat'])
					{
						$row['ssc_lng'] = $lngres['data']['lng'];
						$row['ssc_lat'] = $lngres['data']['lat'];
					}
                }
                if($contactArr['ssc_id'][$key] && in_array($contactArr['ssc_id'][$key],$editArr))
                {
                    $this->set('sh_super_contact',$row,sprintf(" and ssc_id=%d",(int)$contactArr['ssc_id'][$key]));
                }
                else
                {
                    $arr[] = $row;
                }
            }
            if($arr) $this->addAny('sh_super_contact',array_keys($arr[0]),$arr);
        }
        $this->B2CDb->end();
        return LibFc::ReturnData(true,true);
 
    }
}