| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883 |
- <?php
- //这里面是乐外卖里面常用的一些辅助函数
- //这里的函数大部分是与一些具体的逻辑相关的,不是纯工具函数
- class LewaimaiUtility {
- //判断是否来自微信的访问
- public static function IsWechat()
- {
- if (isset($_SERVER['HTTP_USER_AGENT']))
- {
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
-
- $is_wechat = false;
-
- if (strpos($user_agent, "MicroMessenger") !== false)
- {
- $is_wechat = true;
- }
-
- return $is_wechat;
- }
-
- return false;
- }
-
- //判断访问是否从朋友圈来的
- public static function IsFriendCircle()
- {
- // 判断是否从朋友圈过来的消息
- if (isset($_GET["from"]) || isset($_GET["isappinstalled"]))
- {
- return true;
- }
-
- return false;
- }
-
- //根据admin_id获取某个用户的access_token
- public static function GetAccessToken($admin_id)
- {
- $accessModel = AccessToken::model()->findByPk($admin_id);
- if($accessModel) {
- $exp_time = strtotime($accessModel->init_time) - 100;
- $time = time();
- if($exp_time >= $time) {
- return $accessModel->access_token;
- }
- }
-
- if(!$accessModel) {
- $accessModel = new AccessToken;
- }
-
- $accessModel->admin_id = $admin_id;
-
- //先获取access_token
- $connection = Yii::app()->db;
- $sql = 'select wx_type, appid, appsecret from wx_admin where id = ' . $admin_id;
- $command = $connection->createCommand($sql);
- $data = $command->query();
-
- $wx_type = 0;
- foreach($data as $key => $val)
- {
- $wx_type = $val["wx_type"];
- $appid = $val["appid"];
- $appsecret = $val["appsecret"];
- }
-
- if($wx_type == 3)
- {
- $access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
- $access_token_result = LewaimaiHttp::GET($access_token_url);
- $access_token_array = json_decode($access_token_result, true);
- if(isset($access_token_array['access_token']))
- {
- $access_token = $access_token_array["access_token"];
- $expires_in = time() + $access_token_array['expires_in'];
- $accessModel->init_time = date('Y-m-d H:i:s', $expires_in);
- $accessModel->access_token = $access_token;
- if (!$accessModel->save())
- {
- LewaimaiDebug::LogModelError($accessModel);
- return false;
- }
-
- return $accessModel->access_token;
- }
- else
- {
- Yii::log('GetAccessToken Error! admin_id:' . $admin_id);
- }
- }
-
- return false;
- }
-
- //获取乐外卖官方微信公众号的accesstoken
- public static function GetLewaimaiAccessToken()
- {
- $accessModel = AccessToken::model()->findByPk(19);
- if($accessModel) {
- $exp_time = strtotime($accessModel->init_time) - 100;
- $time = time();
- if($exp_time >= $time) {
- return $accessModel->access_token;
- }
- }
-
- if(!$accessModel) {
- $accessModel = new AccessToken;
- }
-
- $accessModel->admin_id = 19;
- $appid = LEWAIMAI_APPID;
- $appsecret = LEWAIMAI_APPSECRET;
- $access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
- $access_token_result = LewaimaiHttp::GET($access_token_url);
- $access_token_array = json_decode($access_token_result, true);
- if(isset($access_token_array['access_token']))
- {
- $access_token = $access_token_array["access_token"];
- $expires_in = time() + $access_token_array['expires_in'];
- $accessModel->init_time = date('Y-m-d H:i:s', $expires_in);
- $accessModel->access_token = $access_token;
- if (!$accessModel->save())
- {
- LewaimaiDebug::LogModelError($accessModel);
- return false;
- }
-
- return $accessModel->access_token;
- }
- else
- {
- Yii::log('GetLewaimaiAccessToken Error!');
- }
-
- return false;
- }
-
- //获取用户的基本信息
- public static function GetUserInfo($adminId, $openid)
- {
- $pingtai_access_token = LewaimaiWeixinauth::getAuthorizerAccessToken($adminId);
-
- $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $pingtai_access_token . "&openid=" . $openid . "&lang=zh_CN";
- $result = LewaimaiHttp::GET($url);
- $res_array = json_decode($result, true);
-
- if (isset($res_array["errcode"]))
- {
- return false;
- }
-
- return $res_array;
- }
-
- public static function GetWorkItime($shop)
- {
- $shop_start_time = $shop->shop_start_time;
- $shop_stop_time = $shop->shop_stop_time;
-
- $shop_start_time_2 = $shop->shop_start_time_2;
- $shop_stop_time_2 = $shop->shop_stop_time_2;
-
- $shop_start_time_3 = $shop->shop_start_time_3;
- $shop_stop_time_3 = $shop->shop_stop_time_3;
-
- $shop_time_string = "";
-
- if (!($shop_start_time == "00:00:00" && $shop_stop_time == "00:00:00"))
- {
- $shop_time_string .= substr($shop_start_time, 0, 5) . "-" . substr($shop_stop_time, 0, 5);
- }
- if (!($shop_start_time_2 == "00:00:00" && $shop_stop_time_2 == "00:00:00"))
- {
- $shop_time_string .= " " . substr($shop_start_time_2, 0, 5) . "-" . substr($shop_stop_time_2, 0, 5);
- }
- if (!($shop_start_time_3 == "00:00:00" && $shop_stop_time_3 == "00:00:00"))
- {
- $shop_time_string .= " " . substr($shop_start_time_3, 0, 5) . "-" . substr($shop_stop_time_3, 0, 5);
- }
-
- return $shop_time_string;
- }
-
- //传入参数是店铺model
- //判断是否在营业时间
- public static function IsInWorkTime($shopModel)
- {
- $beginTime1 = $shopModel->shop_start_time;
- $endTime1 = $shopModel->shop_stop_time;
-
- $beginTime2 = $shopModel->shop_start_time_2;
- $endTime2 = $shopModel->shop_stop_time_2;
-
- $beginTime3 = $shopModel->shop_start_time_3;
- $endTime3 = $shopModel->shop_stop_time_3;
-
- if ($beginTime1 === null || $endTime1 === null || $beginTime2 === null || $endTime2 === null || $beginTime3 === null || $endTime3 === null)
- {
- return true;
- }
- else
- {
- $isInTimeRange = false;
-
- $snow = strtotime(date("H:i"));
-
- $sst1 = strtotime($beginTime1);
- $set1 = strtotime($endTime1);
- if ($sst1 <= $set1)
- {
- if (($snow >= $sst1 && $snow <= $set1) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst1 || $snow <= $set1) )
- {
- $isInTimeRange = true;
- }
- }
-
- $sst2 = strtotime($beginTime2);
- $set2 = strtotime($endTime2);
- if ($sst2 <= $set2)
- {
- if (($snow >= $sst2 && $snow <= $set2) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst2 || $snow <= $set2) )
- {
- $isInTimeRange = true;
- }
- }
-
- $sst3 = strtotime($beginTime3);
- $set3 = strtotime($endTime3);
- if ($sst3 <= $set3)
- {
- if (($snow >= $sst3 && $snow <= $set3) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst3 || $snow <= $set3) )
- {
- $isInTimeRange = true;
- }
- }
-
- return $isInTimeRange;
- }
- }
-
- //传入参数是带店铺参数的数组
- //判断是否在营业时间
- public static function IsInWorkTimeArray($shopArray)
- {
- $beginTime1 = $shopArray['shop_start_time'];
- $endTime1 = $shopArray['shop_stop_time'];
-
- $beginTime2 = $shopArray['shop_start_time_2'];
- $endTime2 = $shopArray['shop_stop_time_2'];
-
- $beginTime3 = $shopArray['shop_start_time_3'];
- $endTime3 = $shopArray['shop_stop_time_3'];
-
- if ($beginTime1 === null || $endTime1 === null || $beginTime2 === null || $endTime2 === null || $beginTime3 === null || $endTime3 === null)
- {
- return true;
- }
- else
- {
- $isInTimeRange = false;
-
- $snow = strtotime(date("H:i"));
-
- $sst1 = strtotime($beginTime1);
- $set1 = strtotime($endTime1);
- if ($sst1 <= $set1)
- {
- if (($snow >= $sst1 && $snow <= $set1) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst1 || $snow <= $set1) )
- {
- $isInTimeRange = true;
- }
- }
-
- $sst2 = strtotime($beginTime2);
- $set2 = strtotime($endTime2);
- if ($sst2 <= $set2)
- {
- if (($snow >= $sst2 && $snow <= $set2) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst2 || $snow <= $set2) )
- {
- $isInTimeRange = true;
- }
- }
-
- $sst3 = strtotime($beginTime3);
- $set3 = strtotime($endTime3);
- if ($sst3 <= $set3)
- {
- if (($snow >= $sst3 && $snow <= $set3) )
- {
- $isInTimeRange = true;
- }
- }
- else
- {
- if (($snow >= $sst3 || $snow <= $set3) )
- {
- $isInTimeRange = true;
- }
- }
-
- return $isInTimeRange;
- }
- }
-
- //根据距离今天的天数,0,1,2,3,返回实际的日期
- public static function GetDeliveryDate($daynum)
- {
- $daynum = (int)$daynum;
- if($daynum<1){
- return date('Y-m-d');
- }
- return date('Y-m-d',time()+3600*24*($daynum-1));
- }
-
- //根据经纬度算距离,返回结果单位是公里,先纬度,后经度
- public static function GetDistance($lat1, $lng1, $lat2, $lng2)
- {
- $EARTH_RADIUS = 6378.137;
-
- $radLat1 = self::rad($lat1);
- $radLat2 = self::rad($lat2);
- $a = $radLat1 - $radLat2;
- $b = self::rad($lng1) - self::rad($lng2);
- $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2)));
- $s = $s * $EARTH_RADIUS;
- $s = round($s * 10000) / 10000;
-
- return $s;
- }
-
- private static function rad($d)
- {
- return $d * M_PI / 180.0;
- }
-
- //求开启状态的店铺数
- public static function GetOwnShopNum($adminId)
- {
- $sql = "admin_id = " . $adminId . " AND shopstatus = 'OPEN'";
- $shopnum = Config::model()->count($sql);
-
- return $shopnum;
- }
-
- //获取一个amidnId下的所有店铺
- public static function GetOwnShop($adminId)
- {
- $shopArray = array();
-
- $sql = "admin_id = " . $adminId . " AND shopstatus = 'OPEN' ORDER BY tag";
- $shopModels = Config::model()->findAll($sql);
- if (!$shopModels || count($shopModels) == 0)
- {
- $shopArray["shopnum"] = 0;
- $shopArray["shoplist"] = array();
-
- return $shopArray;
- }
-
- $i = 0;
- $shoplist = array();
- foreach ($shopModels as $shop)
- {
- $IsInWorkTime = LewaimaiUtility::IsInWorkTime($shop);
-
- //计算起送价格描述
- if (!$shop->delivery_fee_valid)
- {
- $deliveryName = "起送价格:";
- $deliverValue = "¥" . $shop->basicprice*1;
-
- if ($shop->reach_delivery_fee_type == 0)
- {
- $deliverValue .= "(达到起送价免外送费)";
- }
- elseif ($shop->reach_delivery_fee_type == 1)
- {
- $deliverValue .= "(外送费" . $shop->delivery_fee*1 . "元)";
- }
- else
- {
- $deliverValue .= "(外送费" . $shop->delivery_fee*1 . "元," . $shop->no_delivery_fee_value*1 . "元免外送费)";
- }
- }
- else
- {
- $deliveryName = "外送费:";
- $deliverValue = "¥" . $shop->delivery_fee*1;
-
- if ($shop->reach_delivery_fee_type == 0)
- {
- $deliverValue .= "(" . $shop->basicprice*1 . "元免外送费)";
- }
- elseif ($shop->reach_delivery_fee_type == 2)
- {
- $deliverValue .= "(" . $shop->no_delivery_fee_value*1 . "元免外送费)";
- }
- }
- $priceDes = $deliveryName . $deliverValue;
-
- //计算营业时间描述
- $shop_start_time = $shop->shop_start_time;
- $shop_stop_time = $shop->shop_stop_time;
-
- $shop_start_time_2 = $shop->shop_start_time_2;
- $shop_stop_time_2 = $shop->shop_stop_time_2;
-
- $shop_start_time_3 = $shop->shop_start_time_3;
- $shop_stop_time_3 = $shop->shop_stop_time_3;
-
- $shop_time_string = "";
-
- if (!($shop_start_time == "00:00:00" && $shop_stop_time == "00:00:00"))
- {
- $shop_time_string .= substr($shop_start_time, 0, 5) . " - " . substr($shop_stop_time, 0, 5);
- }
- if (!($shop_start_time_2 == "00:00:00" && $shop_stop_time_2 == "00:00:00"))
- {
- $shop_time_string .= ", " . substr($shop_start_time_2, 0, 5) . " - " . substr($shop_stop_time_2, 0, 5);
- }
- if (!($shop_start_time_3 == "00:00:00" && $shop_stop_time_3 == "00:00:00"))
- {
- $shop_time_string .= ", " . substr($shop_start_time_3, 0, 5) . " - " . substr($shop_stop_time_3, 0, 5);
- }
-
- $shoplist[$i] = array(
- 'id' => $shop->id,
- 'type_id' => $shop->type_id,
- 'shopname' => $shop->shopname,
- 'shopimage' => $shop -> shopimage,
- 'shopaddress' => $shop->shopaddress,
- 'area' => $shop->area,
- 'shopdes' => $shop->shopdes,
- 'worktime' => $IsInWorkTime,
- 'priceDes' => $priceDes,
- 'shop_time_string' => $shop_time_string,
- 'coordinate_x' => $shop->coordinate_x,
- 'coordinate_y' => $shop->coordinate_y,
- );
-
- $i++;
- }
-
- $shopArray["shopnum"] = $i;
- $shopArray["shoplist"] = $shoplist;
-
- return $shopArray;
- }
-
- //判断当前访问的IP是否是微信服务器的IP
- public static function IsWeixinIP()
- {
- $admin_access_token = LewaimaiUtility::GetLewaimaiAccessToken();
-
- $url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=" . $admin_access_token;
- $result = LewaimaiHttp::GET($url);
- $result_array = json_decode($result, true);
- if (isset($result_array["errcode"]))
- {
- Yii::log("get weixinip failed!");
- return false;
- }
-
- $ip_array = $result_array["ip_list"];
-
- $server_ip = $_SERVER['REMOTE_ADDR'];
- if (in_array($server_ip, $ip_array))
- {
- return true;
- }
-
- return false;
- }
-
- //根据adminId和lewaimai_customer_id,获取这个顾客相对于adminId绑定的公众号的openid
- public static function getWeixinOpenid($adminId, $lewaimai_customer_id)
- {
- $adminModel = Admin::model()->findByPk($adminId);
- if (!$adminModel)
- {
- return false;
- }
-
- $wx_tousername = $adminModel->wx_tousername;
-
- $weixincustomerModel = WeixinCustomer::model()->find("wx_tousername = '" . $wx_tousername . "' AND lewaimai_customer_id = " . $lewaimai_customer_id);
- if (!$weixincustomerModel)
- {
- return false;
- }
-
- $openid = $weixincustomerModel->openid;
-
- return $openid;
- }
-
- //根据距离和按距离收费的json获取最终收费
- public static function getRangeDeliveryFee($range, $range_delivery_fee)
- {
- $delivery_fee = false;
-
- $range_delivery_fee_array = json_decode($range_delivery_fee, true);
- foreach ($range_delivery_fee_array as $range_delivery_fee_item)
- {
- if ($range >= $range_delivery_fee_item["start"] && $range <= $range_delivery_fee_item["stop"])
- {
- $delivery_fee = $range_delivery_fee_item["value"];
-
- break;
- }
- }
-
- return $delivery_fee;
- }
-
- //根据距离和按距离收费的json获取起送价
- public static function getRangeBasicprice($range, $range_delivery_fee)
- {
- $basicprice = false;
-
- $range_delivery_fee_array = json_decode($range_delivery_fee, true);
- foreach ($range_delivery_fee_array as $range_delivery_fee_item)
- {
- if ($range >= $range_delivery_fee_item["start"] && $range <= $range_delivery_fee_item["stop"])
- {
- $basicprice = $range_delivery_fee_item["minvalue"];
-
- break;
- }
- }
-
- return $basicprice;
- }
- //清空临时文件
- public static function clearTempimages(){
- $temp_url= 'public/temp/images/admin_'.Yii::app()->user->_id.'/';
- if(!is_dir($temp_url)){
- return false;
- }else{
- $dir = opendir($temp_url);
- readdir($dir);
- readdir($dir);
- while($file = readdir($dir)){
- @unlink($temp_url.$file);
- }
- }
- }
- /**
- * li
- * 验证注册签名
- * @param $time
- * @param $post_sign
- * @return bool
- */
- public static function checkRegisterSignature($time,$post_sign)
- {
- // 判断是否过期,过期时间30分钟
- $minute_30 = 180;
- if((time() - $time) >= $minute_30)
- {
- return false;
- }
- $signature = LewaimaiUtility::makeRegisterSignature($time);
- if($signature == $post_sign)
- {
- return true; // it is ok!
- }
- else
- {
- return false;
- }
- }
- /**
- * li
- * 生成注册签名
- * @param $time
- * @return string
- */
- public static function makeRegisterSignature($time)
- {
- $arr = array();
- $arr['partnerKey'] = LEWAIMAI_API_KEY;
- $arr['timestamp'] = $time;
- $arr['sessionID'] = Yii::app()->session->sessionID;
- $signature = strtoupper(md5(http_build_query ( $arr , '' , '&' )));
- return $signature;
- }
- /**
- * 检查手机号所属运营商
- * @param $phoneArr
- * @return array
- */
- public static function checkPhoneBelongToWhichService($phoneArr)
- {
- $ChinaMobileNum = 0;
- $ChinaUnionNum = 0;
- $ChinaTelcomNum = 0;
- $OtherTelphoneNum = 0;
- $isChinaMobile = "/^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|18[2-478])\d{8}$/"; // 移动
- $isChinaUnion = "/^(?:13[0-2]|145|15[56]|176|18[56])\d{8}$/"; //联通
- $isChinaTelcom = "/^(?:133|153|177|18[019])\d{8}$/"; //电信
- $isOtherTelphone = "/^170([059])\d{7}$/"; //其他运营商
- if(empty($phoneArr) || !is_array($phoneArr))
- {
- return array('ChinaMobileNum'=>0, 'ChinaUnionNum'=>0, 'ChinaTelcomNum'=>0, 'OtherTelphoneNum'=>0);
- }
- foreach ($phoneArr as $phone)
- {
- if(preg_match($isChinaMobile, $phone))
- {
- $ChinaMobileNum++;
- }
- else if(preg_match($isChinaUnion, $phone))
- {
- $ChinaUnionNum++;
- }
- else if(preg_match($isChinaTelcom, $phone))
- {
- $ChinaTelcomNum++;
- }
- else
- {
- $OtherTelphoneNum++;
- }
- }
- return array('ChinaMobileNum'=>$ChinaMobileNum, 'ChinaUnionNum'=>$ChinaUnionNum, 'ChinaTelcomNum'=>$ChinaTelcomNum, 'OtherTelphoneNum'=>$OtherTelphoneNum);
- }
- /**
- * 生成api 请求所需的签名
- * @param $params
- */
- public static function buildSignForApiRequest($params)
- {
- $lwm_appid = LWM_APPID;
- $timestamp = time();
- $nonce = LewaimaiString::create_noncestr(5);
- $signParamArr = array();
- $signParamArr['lwm_appid'] = $lwm_appid;
- $signParamArr['timestamp'] = $timestamp;
- $signParamArr['nonce'] = $nonce;
- foreach ($params as $key=>$value)
- {
- $signParamArr[$key] = is_array($value) ? json_encode($value) : $value;
- }
- ksort($signParamArr, SORT_STRING);
- $signParamArr = http_build_query($signParamArr);
- $signature = strtoupper(md5( md5($signParamArr) . LWM_APP_SECRET));
- $result['lwm_appid'] = $lwm_appid;
- $result['timestamp'] = $timestamp;
- $result['nonce'] = $nonce;
- $result['sign'] = $signature;
- return $result;
- }
- /**
- * 获取包括主账号的员工账号
- * @param $admin_id
- * @return array|CActiveRecord|mixed|null
- */
- public static function getEmployeeListByAdminId($admin_id, $include_me=true)
- {
- $sql = "SELECT id,account FROM {{employees_account}} WHERE admin_id=:admin_id";
- $list = EmployeesAccount::model()->findAllBySql($sql, array(':admin_id'=>$admin_id));
- $list = $list ? $list : array();
- if($include_me){
- $sql = 'select id,username from {{admin}} where id=:admin_id';
- $admin = Admin::model()->findBySql($sql, array(':admin_id'=>$admin_id));
- array_unshift($list, array('id'=>'admin_id:'.$admin_id,'account'=>$admin['username']));
- }
- return $list;
- }
- public static function checkArea($admin_id)
- {
- $areaArr = Area::model()->findAll('admin_id=:admin_id AND status=1',array(':admin_id'=>$admin_id));
- return empty($areaArr)?array():$areaArr;
- }
- /**
- * 为智能机统计建立数据
- * @param $data
- * @param $dayDataArr
- * @param $guazhangArr
- * @return mixed
- */
- public static function buildDataByZnjStat($data, $dayDataArr, $guazhangArr)
- {
- if(!empty($data)){
- foreach ($data as $val) {
- if(isset($dayDataArr[$val['day']]) && !empty($dayDataArr[$val['day']][$val['zhifu_type']])){
- $dayDataArr[$val['day']][$val['zhifu_type']] += $val['yingshou_price'];
- }else{
- $dayDataArr[$val['day']][$val['zhifu_type']] = $val['yingshou_price'];
- }
- if(isset($guazhangArr[$val['day']]) && !empty($guazhangArr[$val['day']][$val['zhifu_type']])){
- //zhifu_type为1,2,3,4的挂账算自定义支付
- $dayDataArr[$val['day']][$val['zhifu_type']] -= $guazhangArr[$val['day']][$val['zhifu_type']];
- if(isset($dayDataArr[$val['day']][5])){
- $dayDataArr[$val['day']][5] += $guazhangArr[$val['day']][$val['zhifu_type']];
- }else{
- $dayDataArr[$val['day']][5] = $guazhangArr[$val['day']][$val['zhifu_type']];
- }
- }
- if(isset($dayDataArr[$val['day']]['yingshou_price'])){
- $dayDataArr[$val['day']]['yingshou_price'] += $val['yingshou_price'];
- }else{
- $dayDataArr[$val['day']]['yingshou_price'] = $val['yingshou_price'];
- }
- if(isset($dayDataArr[$val['day']]['shishou_value'])){
- $dayDataArr[$val['day']]['shishou_value'] += $val['shishou_value'];
- }else{
- $dayDataArr[$val['day']]['shishou_value'] = $val['shishou_value'];
- }
- if(isset($dayDataArr[$val['day']]['zhaoling_value'])){
- $dayDataArr[$val['day']]['zhaoling_value'] += $val['zhaoling_value'];
- }else{
- $dayDataArr[$val['day']]['zhaoling_value'] = $val['zhaoling_value'];
- }
- }
- }
- return $dayDataArr;
- }
- /**
- * 汇总订单数统计
- * @param $data
- * @param $dateArray
- * @return array
- */
- public static function buildOrderNumDataBySummary($data, $dateArray, $dataArray=array())
- {
- if(!empty($data))
- {
- foreach ($data as $val)
- {
- if(isset($dataArray[$val['day']])){
- $dataArray[$val['day']] += $val['num'];
- }else{
- $dataArray[$val['day']] = $val['num'];
- }
- }
- }
- return $dataArray;
- }
- /**
- * 为汇总营业额统计导出准备数据
- * @param $data
- * @param $data_gz
- * @param $dayDataArr
- * @param $gzDataArr
- */
- public static function buildExportDataBySummary($data, $data_gz, &$dayDataArr, &$gzDataArr)
- {
- //先计算各个支付方式下的部分挂账
- if(!empty($data_gz)){
- foreach ($data_gz as $vGz) {
- //各个支付分类下对应的挂账部分
- if(isset($gzDataArr[$vGz['day']][$vGz['zhifu_type']])){
- $gzDataArr[$vGz['day']][$vGz['zhifu_type']] += $vGz['yingshou_price'];
- }else{
- $gzDataArr[$vGz['day']][$vGz['zhifu_type']] = $vGz['yingshou_price'];
- }
- //各个自定义支付
- $zhifuNameArr[] = $vGz['zhifu_name'];
- if(isset($gzDataArr[$vGz['day']][$vGz['zhifu_name']])){
- $gzDataArr[$vGz['day']][$vGz['zhifu_name']] += $vGz['yingshou_price'];
- }else{
- $gzDataArr[$vGz['day']][$vGz['zhifu_name']] = $vGz['yingshou_price'];
- }
- }
- }
- if(!empty($data)){
- foreach ($data as $val) {
- if(isset($dayDataArr[$val['day']][$val['zhifu_type']])){
- $dayDataArr[$val['day']][$val['zhifu_type']] += $val['yingshou_price'];
- }else{
- $dayDataArr[$val['day']][$val['zhifu_type']] = $val['yingshou_price'];
- }
- //减去该种方式支付下中挂账的部分(只挂账了一部分)
- if(isset($gzDataArr[$val['day']][$val['zhifu_type']])){
- $dayDataArr[$val['day']][$val['zhifu_type']] -= $gzDataArr[$val['day']][$val['zhifu_type']];
- }
- //处理自定义支付
- if($val['zhifu_type'] == 5){
- $zhifuNameArr[] = $val['zhifu_name'];
- $dayDataArr[$val['day']][$val['zhifu_name']] = $val['yingshou_price'];
- }
- if(isset($dayDataArr[$val['day']]['yingshou_price'])){
- $dayDataArr[$val['day']]['yingshou_price'] += $val['yingshou_price'];
- }else{
- $dayDataArr[$val['day']]['yingshou_price'] = $val['yingshou_price'];
- }
- if(isset($dayDataArr[$val['day']]['shishou_value'])){
- $dayDataArr[$val['day']]['shishou_value'] += $val['shishou_value'];
- }else{
- $dayDataArr[$val['day']]['shishou_value'] = $val['shishou_value'];
- }
- if(isset($dayDataArr[$val['day']]['zhaoling_value'])){
- $dayDataArr[$val['day']]['zhaoling_value'] += $val['zhaoling_value'];
- }else{
- $dayDataArr[$val['day']]['zhaoling_value'] = $val['zhaoling_value'];
- }
- }
- }
- }
- }
|