<?php
/**
  * @method 微信
  */
class YpwWx extends YpwBase
{
	/**
	 * @method 初始化微信头像
	 */
	public function initWxHeadimg(){
		$sqlArr = [
			"INSERT INTO `wx_img_hash`(wih_url, wih_urlmd5)
			SELECT JSON_UNQUOTE(u_weixin_info->'$.headimgurl') AS headimgurl, md5(JSON_UNQUOTE(u_weixin_info->'$.headimgurl')) AS wih_urlmd5
			FROM yp_user WHERE u_weixin_bd = 'Y' AND JSON_UNQUOTE(u_weixin_info->'$.headimgurl') like 'http%'
			AND md5(JSON_UNQUOTE(u_weixin_info->'$.headimgurl')) NOT IN (SELECT wih_urlmd5 FROM wx_img_hash) group by wih_urlmd5",

			"INSERT INTO `wx_img_hash`(wih_url, wih_urlmd5)
			SELECT wu_headimg, md5(wu_headimg) AS wih_urlmd5 FROM `ypb2c`.wx_user
			WHERE wu_headimg like 'http%' AND md5(wu_headimg) NOT IN (SELECT wih_urlmd5 FROM wx_img_hash) group by wih_urlmd5",
		];
		$this->exeAnySql($sqlArr);
		$LibHttp = new LibHttp();
		$LibImage = new LibImage();
		$saveDir = mvc::$cfg['ROOT'].'/files/wxhead/';	
		@mkdir($saveDir, 0777, true);
		while(1){
			$per = 100;
			$ires = $this->Get('wx_img_hash', ['wih_id', 'wih_url'], sprintf(" and wih_md5='' order by rand() limit %d", $per));
			foreach($ires['data'] as $v){
				$imgdata = '';
				$urlmd5 = md5($v['wih_url']);
				$tdir = $saveDir.substr($urlmd5, -2).'/';
				@mkdir($tdir, 0777, true);
				$file = $tdir.$urlmd5.'.jpg';
				if(file_exists($file)){
					$imgdata = file_get_contents($file);
				}else{
					for($i=0; $i<3; $i++){
						$imgdata = $LibHttp->fetch($v['wih_url']);
						$info = @getimagesizefromstring($imgdata);
						if($info !== false) {
							break;
						}else{
							return LibFc::ReturnData(false, $v['wih_url'].'图片数据异常'.$imgdata);
						}
					}
					file_put_contents($file, $imgdata);
					if($info['mime'] != 'image/jpeg'){
						$LibImage->ToJPG($file,$file);
					}
				}
				$set = [
					'wih_md5' => md5($imgdata),
					'wih_dhash' => '',	
				];
				$hash2 = LibFc::imgDHash($imgdata, 'binary');
				if($hash2['ok'] && $hash2['hash']){
					$set['wih_dhash'] = $hash2['hash'];
				}
				$this->Set('wx_img_hash', $set, sprintf(" and wih_id=%d", $v['wih_id']));
			}
			if(count($ires['data']) < $per) break;
		}
		return LibFc::ReturnData(true);
	}
}