insert($data); return $res; } /** * @author chenniang * @DataTime: 2020-09-29 11:05 * @功能说明:编辑 */ public function dataUpdate($dis,$data){ $res = $this->where($dis)->update($data); return $res; } /** * @author chenniang * @DataTime: 2020-09-29 11:06 * @功能说明:列表 */ public function dataList($dis,$page){ $data = $this->where($dis)->order('id desc')->paginate($page)->toArray(); return $data; } /** * @author chenniang * @DataTime: 2020-09-29 11:43 * @功能说明: */ public function dataInfo($dis){ $data = $this->where($dis)->find(); if(empty($data)){ $this->dataAdd($dis); $data = $this->where($dis)->find(); } return !empty($data)?$data->toArray():[]; } /** * @author chenniang * @DataTime: 2022-02-08 14:12 * @功能说明:获取运费 */ public function getSendPrice($distance,$uniacid){ $config = $this->dataInfo(['uniacid'=>$uniacid]); $y_distance = $distance - $config['start_distance']; if($y_distance<0){ return $config['start_price']; }else{ // return round($config['start_price']+$y_distance/$config['renew_distance']*$config['renew_price'],2); return 0; } } /** * @param $address_id * @param $goods_list * @param int $type * @功能说明:计算运费 * @author chenniang * @DataTime: 2022-08-08 17:35 */ public function getTotalSendPrice($address_id,$goods_list,$type=1){ $address_model = new Address(); $address = $address_model->dataInfo(['id'=>$address_id]); if(empty($address)){ return $type==1?0:['code'=>500,'msg'=>'地址信息错误']; } $frist_price = $frist_id = $addprice = 0; if(!empty($goods_list)){ foreach ($goods_list as &$goods_info){ //获取 $tmpl_data = $this->getSendTmp($goods_info['send_tmpl_id'],$address,$type); if((!empty($tmpl_data['code'])&&$tmpl_data['code']==500)||empty($tmpl_data)){ return $tmpl_data; } $tmpl = $tmpl_data['tmpl']; //找到首费最大的模版 if($tmpl['start_price']>$frist_price){ $frist_price = $tmpl['start_price']; $frist_id = $tmpl['id']; } //获取有多少个模版 if(empty($tmpl_arr[$tmpl['id']])){ $tmpl_arr[$tmpl['id']] = $tmpl; } $tmpl_unit = !empty($tmpl_arr[$tmpl['id']]['tmpl_unit'])?$tmpl_arr[$tmpl['id']]['tmpl_unit']:0; $unit = $tmpl_data['type']==1?$goods_info['goods_num']:$goods_info['total_weight']; //计算每个模版的重量或者件数 $tmpl_arr[$tmpl['id']]['tmpl_unit'] = $tmpl_unit+$unit; } foreach ($tmpl_arr as $tmpl){ if($tmpl['id']==$frist_id){ //1按件数 2按重量 $add_num = ($tmpl['tmpl_unit'] - $tmpl['start_num'])>0?$tmpl['tmpl_unit'] - $tmpl['start_num']:0; }else{ $add_num = $tmpl['tmpl_unit']; } $add_num = $tmpl['add_num']>0?ceil($add_num/$tmpl['add_num']):0; $price = $add_num*$tmpl['add_price']; $addprice += $price; // dump($addprice,$frist_price);exit; } } // dump($addprice,$frist_price);exit; return round($addprice+$frist_price,2); } /** * @author chenniang * @DataTime: 2022-08-09 13:50 * @功能说明:获取模版 */ public function getSendTmp($send_tmpl_id,$address,$type){ $tmpl_model = new FreightTemplate(); $tmpl = $tmpl_model->dataInfo(['id'=>$send_tmpl_id]); if(empty($tmpl)){ return $type==1?0:['code'=>500,'msg'=>'商品未管理模版']; } if(!empty($tmpl['config'])){ foreach ($tmpl['config'] as $value){ if(in_array($address['province'],$value['province'])){ $tmpl['tmpl'] = $value; return $tmpl; } } return $type==1?0:['code'=>500,'msg'=>'地址未在配送范围内']; }else{ return $type==1?0:['code'=>500,'msg'=>'地址未在配送范围内']; } } /** * @author chenniang * @DataTime: 2022-07-22 17:51 * @功能说明:获取商品运费信息 */ public function getGoodsSendPrice($address_id,$goods_info,$type=1,$data=1){ $tmpl_model = new FreightTemplate(); $address_model = new Address(); $tmpl = $tmpl_model->dataInfo(['id'=>$goods_info['send_tmpl_id']]); if(empty($tmpl)){ return $type==1?0:['code'=>500,'msg'=>'商品未管理模版']; } $address = $address_model->dataInfo(['id'=>$address_id]); if(empty($address)){ return $type==1?0:['code'=>500,'msg'=>'地址信息错误']; } if(!empty($tmpl['config'])){ foreach ($tmpl['config'] as $value){ if(in_array($address['province'],$value['province'])){ //1按件数 2按重量 $unit = $tmpl['type']==1?$goods_info['goods_num']:$goods_info['total_weight']; $add_num = ($unit - $value['start_num'])>0?$unit - $value['start_num']:0; $add_num = $value['add_num']>0?ceil($add_num/$value['add_num']):0; $price = round($value['start_price']+$add_num*$value['add_price'],2); if($data==1){ return $price; }else{ return ['price'=>$price,'type'=>$tmpl['type']]; } } } return $type==1?0:['code'=>500,'msg'=>'地址未在配送范围内']; }else{ return $type==1?0:['code'=>500,'msg'=>'地址未在配送范围内']; } } /** * @author chenniang * @DataTime: 2022-07-25 10:58 * @功能说明:获取天气情况,默认甘孜 */ public function getWeather($uniacid,$lat='30.04932',$lang='101.9625'){ $config = $this->dataInfo(['uniacid'=>$uniacid]); $key = $lat.'-'.$lang; $weather = getCache($key,$this->_uniacid); if(empty($weather)){ $url = 'https://apis.map.qq.com/ws/geocoder/v1/?location='.$lat.','.$lang; $url = $url.'&key='.$config['map_secret']; $location = longbingCurl($url,[]); $location = json_decode($location,true); if(!empty($location['result']['address_component'])){ $location = $location['result']['address_component']; if(!empty($location['province'])){ $province = $location['province']; $city = $location['city']; $county = $location['district']; $url = 'https://wis.qq.com/weather/common?source=pc&weather_type=observe|forecast_24h|air&province='.$province.'&city='.$city.'&county='.$county; $weather = file_get_contents($url); $weather = @json_decode($weather,true); setCache($key,$weather,7200,$this->_uniacid); } } } return $weather; } /** * @author chenniang * @DataTime: 2022-07-25 11:16 * @功能说明:获取天气情况,默认甘孜 */ public function getPlaceWeather($province='四川',$city='甘孜'){ $key = $province.'-'.$city; $weather = getCache($key,$this->_uniacid); if(empty($weather)){ $url = 'https://wis.qq.com/weather/common?source=pc&province='.$province.'&city='.$city.'&weather_type=observe|forecast_24h'; $weather = file_get_contents($url); $weather = @json_decode($weather,true); setCache($key,$weather,7200,$this->_uniacid); } return $weather; } /** * @param $str_phone * @param $uniacid * @功能说明:发送短信验证码 * @author chenniang * @DataTime: 2022-03-14 10:43 */ public function sendSms($str_phone,$uniacid){ $dis = [ 'uniacid' => $uniacid ]; $config = $this->dataInfo($dis); $keyId = $config['short_id']; $keySecret = $config['short_secret']; $SignName = $config['short_sign']; $TemplateCode = $config['short_code']; if(empty($keyId)||empty($keySecret)||empty($TemplateCode)){ return false; } $code = mt_rand(100000,999999); setCache($str_phone,$code,600,$uniacid); AlibabaCloud::accessKeyClient($keyId, $keySecret)->regionId('cn-hangzhou') // replace regionId as you need ->asDefaultClient(); try { $result = AlibabaCloud::rpc() ->product('Dysmsapi') // ->scheme('https') // https | http ->version('2017-05-25') ->action('SendSms') ->method('POST') ->host('dysmsapi.aliyuncs.com') ->options([ 'query' => [ 'RegionId' => "default", 'PhoneNumbers' => $str_phone, //必填项 签名(需要在阿里云短信服务后台申请) 'SignName' => $SignName, //必填项 短信模板code (需要在阿里云短信服务后台申请) 'TemplateCode' => $TemplateCode, //如果在短信中添加了${code} 变量则此项必填 要求为JSON格式 'TemplateParam' => "{'code':$code}", ], ]) ->request(); return !empty($result)?$result->toArray():[]; } catch(Exception $e) {} } }