1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Administrator
- * Date: 2017/12/5
- * Time: 15:07
- */
- namespace App;
- use Illuminate\Database\Eloquent\Model;
- use PHPExcel;
- use PHPExcel_Writer_Excel2007;
- class FxOrder extends Model
- {
- public $timestamps = false;
- protected $table = "fx_order";
-
- public static function olist(){
- $result = FxOrder::orderBy('id', 'desc')->get();
- return json_decode(json_encode($result),true);
- }
- # 生成外部订单号
- public static function createOuterCode(){
- $order_sn = 'fx'.rand(100, 9999). substr(time(), 5, 5). rand(10, 9999);
- return $order_sn;
- }
- /*更新城市天气信息*/
- public static function updateWeather($order_id) {
- $redisKey = 'seafood_order_city_weather';
- $appKey = self::getAppKey();
- //查询订单收件人所在的城市(过滤关键字 市)
- $city = self::where('id', $order_id)->pluck('receiverCity');
- $city = str_replace('市','',$city);
- $specialCity = array('朝阳区','嘉定区','海淀区','昌平区','密云区','大兴区','房山区','通州区','普陀区',);
- if(in_array($city, $specialCity)) {
- $city = str_replace('区','',$city);
- }
- //查询redis中是否有该键,若没有则查询
- $weather = RedisModel::get($redisKey.'_'.$city);
- if($weather) {
- $sellerMemo = self::where('id', $order_id)->pluck('sellerMemo');
- $sellerMemo = $sellerMemo.' '.$city.'天气状况:'.$weather;
- self::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]);
- } else {
- $url = 'http://apis.juhe.cn/simpleWeather/query?city='.urlencode($city).'&key='.$appKey;
- $result = file_get_contents($url);
- $result = json_decode($result, true);
- if($result['error_code'] == '0') {
- //将数据缓存到redis里
- $today = date('Y-m-d',time());
- $tomorrow = date('Y-m-d',strtotime('+1 days'));
- $weather = '';
- foreach ($result['result']['future'] as $value) {
- if($value['date'] == $today) {
- $weather .= $today.'日气温:'.$value['temperature'].'; ';
- }
- if($value['date'] == $tomorrow) {
- $weather .= $tomorrow.'日气温:'.$value['temperature'];
- }
- }
- RedisModel::set($redisKey.'_'.$city, $weather);
- $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1;
- $expire = $endTime - time();
- RedisModel::expire($redisKey.'_'.$city, $expire);
- $sellerMemo = self::where('id', $order_id)->pluck('sellerMemo');
- $sellerMemo = $sellerMemo.' '.$city.'天气状况:'.$weather;
- self::where('id', $order_id)->update(['sellerMemo'=>$sellerMemo]);
- } else if($result['error_code'] == '10012'){
- //超过100次/天上限 更换APPKey
- RedisModel::set('seafood_order_city_weather_key', '1');
- self::updateWeather($order_id);
- }
- }
- return true;
- }
- public static function getAppKey() {
- $redisKey = 'seafood_order_city_weather_key';
- $appKeyArr = ['32c8f844f8055f70f702fc28ec930e52', '85bfc19adb25998b2559d7ceba950e13'];
- $appKey = RedisModel::get($redisKey);
- if($appKey) {
- return $appKeyArr[$appKey];
- } else {
- RedisModel::set($redisKey, '0');
- $endTime = strtotime(date('Y-m-d 00:00:00',strtotime('+1 days'))) -1;
- $expire = $endTime - time();
- RedisModel::expire($redisKey, $expire);
- }
- }
- }
|