use Yii;
use yii\helpers\Json;
use yii\console\Controller;
use api\User;
use api\Company;
use api\TrialRequest;
use api\UserPermission;
define("ZDAPIKEY", "*******");
define("ZDUSER", "service@******.com");
define("ZDURL", "https://******.zendesk.com/api/v2");
class ZendeskController extends Controller{
public $enableCsrfValidation=false;
public static function curlWrap($url, $json, $action)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_URL, ZDURL.$url);
curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY);
switch($action){
case "POST":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
break;
case "GET":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
break;
case "PUT":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
break;
case "DELETE":
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
break;
default:
break;
}
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
curl_close($ch);
//$decoded = json_decode($output);
return $output;
}
public function actionConfirmEmail(){
//todo 用户注册后5分钟内没有完成email验证
$trialRequests=TrialRequest::find()->where(['verified' => 0,])->andWhere(['<','created_at',date('Y-m-d H:i:s',strtotime('-60 minute'))])->all();
$subject=count($trialRequests).'个用户注册后1小时内没有完成email验证';
$desc='用户信息:';
if(count($trialRequests) != 0){
foreach($trialRequests as $value){
$work_email=$value['work_email'];
$phone_number = $value['phone_number'];
$company = $value['company'];
$created_at = $value['created_at'];
$txt = sprintf("\nemail:%s\tphone:%s\tcompany:%s\tcreated_at:%s",$work_email,$phone_number,$company,$created_at);
$desc=$desc.$txt;
}
$arr['new_tick_assignee'] = "******";
$arr['new_req_name'] = "iBot";
$arr['new_req_email'] = "noreply@*****.com";
$arr['new_tick_subj'] = $subject;
$arr['new_tick_desc'] = $desc;
// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API
$create = json_encode(
array(
'ticket' => array(
'requester' => array(
'name' => $arr['new_req_name'],
'email' => $arr['new_req_email']
),
'assignee_id' => $arr['new_tick_assignee'],
'subject' => $arr['new_tick_subj'],
'description' => $arr['new_tick_desc']
)
),
JSON_FORCE_OBJECT
);
$data = self::curlWrap("/tickets.json", $create, "POST");
if($data == false)
Yii::error("发送未验证email用户信息失败", __METHOD__);
//todo add more error message
}
}
public function actionSelectPlan(){
//todo 完成email验证的用户,一天内没有选择plan试用
$sql = "select * from user_permission where company_id in (select id from zuser.company where work_email in (select work_email from zuser.trial_request where verified=1 )) and (plan_code is null or plan_code='') and created_at < date_add(now(),INTERVAL -1 day)";
$userPermissions=UserPermission::findBySql($sql)->all();
$subject=count($userPermissions).'个用户1天内没有选择plan试用';
$desc='用户信息:';
if(count($userPermissions) != 0){
foreach($userPermissions as $value){
$work_email=$value['email'];
$user_id = $value['user_id'];
$company_id = $value['company_id'];
$phone_number = '';
$username = '';
$company_name = '';
$user = User::findOne(['id' => $user_id]);
if($user != null){
$phone_number = $user->phone_number;
$username = $user->username;
}
$company = Company::findOne(['id' => $company_id]);
if($company != null){
$company_name = $company->name;
}
$txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name);
$desc=$desc.$txt;
}
// CREATE AN ARRAY WITH POST DATA AND DESIRED TICKET CONTENT/ATTRIBUTES
$arr['new_tick_assignee'] = "*****";
$arr['new_req_name'] = "iBot";
$arr['new_req_email'] = "noreply@*****.com";
$arr['new_tick_subj'] = $subject;
$arr['new_tick_desc'] = $desc;
// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API
$create = json_encode(
array(
'ticket' => array(
'requester' => array(
'name' => $arr['new_req_name'],
'email' => $arr['new_req_email']
),
'assignee_id' => $arr['new_tick_assignee'],
'subject' => $arr['new_tick_subj'],
'description' => $arr['new_tick_desc']
)
),
JSON_FORCE_OBJECT
);
$data = self::curlWrap("/tickets.json", $create, "POST");
if($data == false)
Yii::error("发送未选择试用用户信息失败",__METHOD__);
}
}
public function actionCancelPackage(){
//取消套餐
$sql = 'select * from user_permission where subscription_status=2 and trial_ended_at >= now()';
$userPermissions = UserPermission::findBySql($sql)->all();
$subject=count($userPermissions).'个用户取消套餐';
$desc='用户信息:';
if(count($userPermissions) != 0){
foreach($userPermissions as $value){
$work_email=$value['email'];
$user_id = $value['user_id'];
$company_id = $value['company_id'];
$phone_number = '';
$username = '';
$company_name = '';
$user = User::findOne(['id' => $user_id]);
if($user != null){
$phone_number = $user->phone_number;
$username = $user->username;
}
$company = Company::findOne(['id' => $company_id]);
if($company != null){
$company_name = $company->name;
}
$txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name);
$desc=$desc.$txt;
}
$arr['new_tick_assignee'] = "*****";
$arr['new_req_name'] = "iBot";
$arr['new_req_email'] = "noreply@*****.com";
$arr['new_tick_subj'] = $subject;
$arr['new_tick_desc'] = $desc;
// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API
$create = json_encode(
array(
'ticket' => array(
'requester' => array(
'name' => $arr['new_req_name'],
'email' => $arr['new_req_email']
),
'assignee_id' => $arr['new_tick_assignee'],
'subject' => $arr['new_tick_subj'],
'description' => $arr['new_tick_desc']
)
),
JSON_FORCE_OBJECT
);
$data = self::curlWrap("/tickets.json", $create, "POST");
if($data == false)
Yii::error("发送取消套餐用户信息失败",__METHOD__);
}
}
}
向zendDesk发送ticket
最新推荐文章于 2022-05-20 16:47:04 发布