php 代码如下
<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Db;
use think\Exception;
//模板信息发送
class Login extends Controller
{
//公众号信息
private $appid = 'xxx';
private $secret = 'xxxxxxxxxxxxxxxxxxxx';
//模板ID
private $template_id = "5u5d7c-AAZ0bK_bExn5ZNlIkYOAj14Q2n1OoxPnpEC4";
//推送接口地址
private $url_dev = "http://17606654072.wicp.vip/hello"; //开发环境
private $url_fh_dev = "http://17606654072.wicp.vip/hello/xsbillfh";
private $pathpage ="pages/index/index";
private $pathpage_fh = "pages/billfh/billfh";
private $url_openid = "https://www.wjmws.xxxx/anrui/";
private $url = "https://www.wjmws.xxx/anrui/hello";
private $url_fh = "https://www.wjmws.xxx/anrui/hello/xsbillfh";
private $openid = 'xxxxx';//小程序ID
private $companyname = "xxxxx-销售订单";
private $companynamefh = "xxxxx-销售发货单";
private $color = "#173177";
public function index()
{
$this->sendxsbilldd_msg();
$this->sendxsbillfh_msg();
$this->sendxsbillReport_msg();
dump("发送成功");
}
public function getdata(){
$msg = Db::table('wxxsbilldd_msg')->where('issend', '0')->limit(1)->select();
dump($msg);
}
//小程序跳转
private function sendxsbilldd_msg_with_openID(){
$data = array();
$msg = Db::table('wxxsbilldd_msg')->where('issend', '0')->limit(1)->select();
if ($msg == null) {
dump("订单无数据发送失败-openid");
return;
}
$outindex = 0;
$guid_xsbill = $msg[$outindex]['guid_xsbill'];
$data_m = Db::table('wxxsbilldd_m')->where('aguid', $guid_xsbill)->select();
$data_d = Db::table('wxxsbilldd_d')->where('guid_m', $guid_xsbill)->select();
$items_d = count($data_d); //项数
$items = (int)$data_m[0]['items'];
if ( $items !== $items_d){
dump("订单数据未同步完成-openid".$items.' '.$items_d.' '.$data_m[0]['aguid'] );
return ;
}
$acode = $data_m[0]['prdacode']; //生产订单号
$day_yw = $data_m[0]['date_yw']; //时间
$khaname_long = $data_m[0]['khaname_long']; //客户名称
$sy = round($data_m[0]['sy'], 2); //总金额
$qty = round($data_m[0]['qty'], 2); //数量
$aguid = '?id=' . $data_m[0]['aguid']; //参数ID
//模板消息拼接
$touser = $msg[$outindex]['openid'];
$data = [
"touser" => $touser,
"template_id" => $this->template_id,
"url" => $this->url_openid ,
"miniprogram"=>array(
"appid"=>$this->openid,
"pagepath"=>$this->pathpage.$aguid,
),
"data" => array(
"first" => array("value" => $this->companyname,"color" => $this->color),
"keyword1" => array("value" => $khaname_long,"color" => $this->color),
"keyword2" => array("value" => $acode,"color" => $this->color),
"keyword3" => array("value" => $items_d,"color" => $this->color),
"keyword4" => array("value" => $qty,"color" => $this->color),
"keyword5" => array("value" => $sy.'元',"color" => $this->color),
"remark" => array("value" => $day_yw,"color" => $this->color),
)
];
//模板消息发送
$access_token = $this->getWxAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $access_token; // 发送模板消息接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $msgurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
$json_template = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode($json_template));
curl_exec($ch);
curl_close($ch);
dump($data);
dump($msgurl);
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbilldd_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("订单更新完成-openid");
} catch (Exception $e) {
Db::rockback();
}
}
private function sendxsbilldd_msg(){
$data = array();
$msg = Db::table('wxxsbilldd_msg')->where('issend', '0')->limit(1)->select();
if ($msg == null) {
dump("订单无数据发送失败");
return;
}
$outindex = 0;
$guid_xsbill = $msg[$outindex]['guid_xsbill'];
$data_m = Db::table('wxxsbilldd_m')->where('aguid', $guid_xsbill)->select();
$data_d = Db::table('wxxsbilldd_d')->where('guid_m', $guid_xsbill)->select();
$items_d = count($data_d); //项数
if($data_m ==null){
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbilldd_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("订单更新完成");
} catch (Exception $e) {
Db::rockback();
}
dump($msg[$outindex]['guid_xsbill']);
return ;
}
$items = (int)$data_m[0]['items'];
if ( $items !== $items_d){
dump("订单数据未同步完成 ".$items.' '.$items_d.' '.$data_m[0]['aguid'] );
return ;
}
$acode = $data_m[0]['acode']; //生产订单号
$day_yw = $data_m[0]['date_yw']; //时间
$khaname_long = $data_m[0]['khaname_long']; //客户名称
$sy = round($data_m[0]['sy'], 2); //总金额
$qty = round($data_m[0]['qty'], 2); //数量
$aguid = '?id=' . $data_m[0]['aguid']; //参数ID
$weburl = $this->url . $aguid; //web网页链接
$this->pagepath = $aguid; //小程序使用
//模板消息拼接
$touser = $msg[$outindex]['openid'];
$data = [
"touser" => $touser,
"template_id" => $this->template_id,
"url" => $weburl,
"data" => array(
"first" => array("value" => $this->companyname,"color" => $this->color),
"keyword1" => array("value" => $khaname_long,"color" => $this->color),
"keyword2" => array("value" => $acode,"color" => $this->color),
"keyword3" => array("value" => $items_d,"color" => $this->color),
"keyword4" => array("value" => $qty,"color" => $this->color),
"keyword5" => array("value" => $sy.'元',"color" => $this->color),
"remark" => array("value" => $day_yw,"color" => $this->color),
)
];
//模板消息发送
$access_token = $this->getWxAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $access_token; // 发送模板消息接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $msgurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
$json_template = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode($json_template));
curl_exec($ch);
curl_close($ch);
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbilldd_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("订单更新完成");
} catch (Exception $e) {
Db::rockback();
}
}
private function sendxsbillfh_msg_with_openid(){
$data = array();
$msg = Db::table('wxxsbillfh_msg')->where('issend', '0')->limit(1)->select();
if ($msg == null) {
return;
}
$outindex = 0;
$guid_xsbill = $msg[$outindex]['guid_xsbill'];
$data_m = Db::table('wxxsbillfh_m')->where('aguid', $guid_xsbill)->select();
$data_d = Db::table('wxxsbillfh_d')->where('guid_m', $guid_xsbill)->select();
$items_d = count($data_d); //项数
if($data_m.length==0)
{
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbillfh_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("发货消息更新完成");
} catch (Exception $e) {
Db::rockback();
}
return ;
}
$items = (int)$data_m[0]['items'];
if ( $items !== $items_d){
return '发货单明细数据未同步完成';
}
$acode = $data_m[0]['acode']; //生产订单号
$day_yw = $data_m[0]['date_yw']; //时间
$khaname_long = $data_m[0]['khaname_long']; //客户名称
$sy = round($data_m[0]['sy'], 2); //总金额
$qty = round($data_m[0]['qty'], 2); //数量
$aguid = '?id=' . $data_m[0]['aguid']; //参数ID
//模板消息拼接
$touser = $msg[$outindex]['openid'];
$data = [
"touser" => $touser,
"template_id" => $this->template_id,
"url" => $this->url_openid,
"miniprogram"=>array(
"appid"=>$this->openid,
"pagepath"=>$this-pathpage_fh.$aguid,
),
"data" => array(
"first" => array("value" => $this->companynamefh,"color" => $this->color),
"keyword1" => array("value" => $khaname_long,"color" => $this->color),
"keyword2" => array("value" => $acode,"color" => $this->color),
"keyword3" => array("value" => $items_d,"color" => $this->color),
"keyword4" => array("value" => $qty,"color" => $this->color),
"keyword5" => array("value" => $sy.'元',"color" => $this->color),
"remark" => array("value" => $day_yw,"color" => $this->color),
)
];
//模板消息发送
$access_token = $this->getWxAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $access_token; // 发送模板消息接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $msgurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
$json_template = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode($json_template));
curl_exec($ch);
curl_close($ch);
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbillfh_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("发货消息更新完成");
} catch (Exception $e) {
Db::rockback();
}
}
private function sendxsbillfh_msg(){
$data = array();
$msg = Db::table('wxxsbillfh_msg')->where('issend', '0')->limit(1)->select();
if ($msg == null) {
return;
}
$outindex = 0;
$guid_xsbill = $msg[$outindex]['guid_xsbill'];
$data_m = Db::table('wxxsbillfh_m')->where('aguid', $guid_xsbill)->select();
$data_d = Db::table('wxxsbillfh_d')->where('guid_m', $guid_xsbill)->select();
$items_d = count($data_d); //项数
if($data_m==null){
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbillfh_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("发货消息更新完成");
} catch (Exception $e) {
Db::rockback();
}
return ;
}
$items = (int)$data_m[0]['items'];
if ( $items !== $items_d){
return '发货单明细数据未同步完成';
}
$acode = $data_m[0]['acode']; //生产订单号
$day_yw = $data_m[0]['date_yw']; //时间
$khaname_long = $data_m[0]['khaname_long']; //客户名称
$sy = round($data_m[0]['sy'], 2); //总金额
$qty = round($data_m[0]['qty'], 2); //数量
$aguid = '?id=' . $data_m[0]['aguid']; //参数ID
$remark = "上一次付款日期是".substr($data_m[0]['cwdate_lastpay'],0,10).",已复核单据欠款共:".(string)round($data_m[0]['cwmoney_debt'])."元";
$weburl = $this->url_fh . $aguid; //web网页链接
$this->pagepath = $aguid; //小程序使用
//模板消息拼接
$touser = $msg[$outindex]['openid'];
$data = [
"touser" => $touser,
"template_id" => $this->template_id,
"url" => $weburl,
"data" => array(
"first" => array("value" => $this->companynamefh,"color" => $this->color),
"keyword1" => array("value" => $khaname_long,"color" => $this->color),
"keyword2" => array("value" => $acode,"color" => $this->color),
"keyword3" => array("value" => $items_d,"color" => $this->color),
"keyword4" => array("value" => $qty,"color" => $this->color),
"keyword5" => array("value" => $sy.'元',"color" => $this->color),
"remark" => array("value" => $remark ,"color" => $this->color),
)
];
//模板消息发送
$access_token = $this->getWxAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $access_token; // 发送模板消息接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $msgurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
$json_template = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode($json_template));
curl_exec($ch);
curl_close($ch);
//更新 issend 状态
Db::startTrans();
try {
Db::table('wxxsbillfh_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("发货消息更新完成");
} catch (Exception $e) {
Db::rockback();
}
}
private function sendxsbillReport_msg(){
$data = array();
$msg = Db::table('xsreport_msg')->where('issend', '0')->limit(1)->select();
if ($msg == null) {
return;
}
$outindex = 0;
$guid_xsbill = $msg[$outindex]['guid_xsreport'];
$data_m = Db::table('wxxsreports_m')->where('aguid', $guid_xsbill)->select();
if($data_m==null){
return;
}
$day_yw = substr($data_m[0]['date_yw'],0,10); //时间
$day_dd = '昨日订单销售额:'.(string)round($data_m[0]['day_dd'], 2).'元'; //昨日销售额
$day_fh = '昨日发货销售额:'.(string)round($data_m[0]['day_fh'], 2).'元';
$month_dd = '本月订单销售额:'.(string)round($data_m[0]['month_dd'], 2).'元'; //本月
$month_fh = '本月发货销售额:'.(string)round($data_m[0]['month_fh'], 2).'元';
//模板消息拼接
$touser = $msg[$outindex]['openid'];
$data = [
"touser" => $touser,
"template_id" => 'UQhFSRXmcv8zpFP2XIlHOdnP_PukJaX6jBjRuMt-HCE',
"data" => array(
"first" => array("value" => "广州市安瑞销售日报统计","color" => $this->color),
"keyword1" => array("value" => $day_yw,"color" => $this->color),
"keyword2" => array("value" => $day_dd,"color" => $this->color),
"keyword3" => array("value" => $day_fh,"color" => $this->color),
"keyword4" => array("value" => $month_dd,"color" => $this->color),
"keyword5" => array("value" => $month_fh,"color" => $this->color),
"remark" => array("value" => "" ,"color" => $this->color),
)
];
//模板消息发送
$access_token = $this->getWxAccessToken();
$msgurl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=". $access_token; // 发送模板消息接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $msgurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 我们在POST数据哦!
curl_setopt($ch, CURLOPT_POST, 1);
// 把post的变量加上
$json_template = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode($json_template));
curl_exec($ch);
curl_close($ch);
//更新 issend 状态
Db::startTrans();
try {
Db::table('xsreport_msg')->where('aguid', $msg[$outindex]['aguid'])->update(['issend' => '1']);
Db::commit();
dump("销售日报消息更新完成");
} catch (Exception $e) {
Db::rockback();
}
}
//获取用户信息 //写入数据
public function getUserInfo(){
while (true){
$token_access = $this->getWxAccessToken();
$lturl = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token='.$token_access;
$user_openids = $this->request_get($lturl); //获取用户信息列表
$user_openids = json_decode(stripslashes($user_openids));
$arr = json_decode(json_encode($user_openids), true);
$count = count($arr);
break;
}
if($count<4) {
dump($arr);
return 506;
}
$res1 = $arr['data']['openid'];
$count = count($res1);
$index = 0;
while ( $index<$count){
$ltopenid = $res1[$index];
$token_access = $this->getWxAccessToken();
$lturl = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$token_access.'&openid='.$ltopenid.'&lang=zh_CN';
$usrinfo = $this->request_get($lturl); //获取用户基本信息
$usrinfo = json_decode(stripslashes($usrinfo));
$arrusrinfo = json_decode(json_encode($usrinfo), true);
$length = count($arrusrinfo);
if ($length!==2){
$index = $index+1;
$usrname = $arrusrinfo['nickname'];
//存入数据库
$data = null;
$data = ['openid' => $ltopenid, 'username' => $usrname,'issuper'=>'0'];
$exitdata = Db::table('wx_gzuser_info')->where('openid','=',$ltopenid)->select();
if ($exitdata == null){
Db::startTrans();
try{
Db::table('wx_gzuser_info')->insert($data);
Db::commit();
dump("更新完成");
}catch(Exception $e){
Db::rockback();
}
}
}
}
}
private function request_get($url){
$ch = curl_init();
//2.设置url 的参数
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//不需要安全检验证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//3.采集
$res = curl_exec($ch);
if ( curl_errno($ch)){
var_dump(curl_error($ch));
}
//4.关闭
curl_close($ch);
return $res;
}
//获取Access_Token
private function getWxAccessToken(){
$res = json_decode(cache('access_token_anrui'),true);//获取缓存
if($res !== null && $res["access_token"] && $res["expires_in"]>time()){
return $res['access_token'];
}else {
$lturl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secret;
//初始化
$ch = curl_init();
//2.设置url 的参数
curl_setopt($ch,CURLOPT_URL,$lturl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//不需要安全检验证书
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
//3.采集
$res = curl_exec($ch);
if ( curl_errno($ch)){
var_dump(curl_error($ch));
}
//4.关闭
curl_close($ch);
$arr = json_decode($res,true);
if($arr !== null && $arr['access_token'] ){
$arr['expires_in'] = $arr['expires_in'] +time();
//将access_token 全局缓存
cache('access_token_anrui',json_encode($arr));
return $arr['access_token'];
}else {
exit('微信获取access_token_anrui 失败');
}
var_dump($arr);
}
}
}
6595

被折叠的 条评论
为什么被折叠?



