OfferDesignController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace api\modules\v1\controllers;
  3. use api\models\Common;
  4. use common\library\Sms;
  5. use common\models\Design;
  6. use common\models\Offer;
  7. use yii\rest\ActiveController;
  8. use common\library\Apireturn;
  9. use yii\helpers\ArrayHelper;
  10. use yii\filters\auth\QueryParamAuth;
  11. use yii;
  12. class OfferDesignController extends ActiveController
  13. {
  14. public $modelClass = 'common\models';
  15. public function behaviors()
  16. {
  17. return ArrayHelper::merge(parent::behaviors(), [
  18. 'authenticator' => [
  19. 'class' => QueryParamAuth::className(),
  20. 'tokenParam' => "token",//access-token修改为token
  21. 'optional' => [//不需要认证方法名 array
  22. 'apply-offer','apply-design'
  23. ],
  24. ]
  25. ]);
  26. }
  27. /**
  28. * 申请报价
  29. * @return array
  30. */
  31. public function actionApplyOffer()
  32. {
  33. $post = Yii::$app->request->post();
  34. if(empty($post['area_id']))
  35. return Apireturn::sent(0,'请选择城市');
  36. if(!Common::is_price($post['acreage']))
  37. return Apireturn::sent(0,'请输入正确的面积');
  38. if(empty($post['nickname']))
  39. return Apireturn::sent(0,'请输入昵称');
  40. if(!Common::is_tel($post['tel']))
  41. return Apireturn::sent(0,'请输入正确的手机号');
  42. $model = new Offer();
  43. $model->area_id =$post['area_id'];
  44. $model->nickname = $post['nickname'];
  45. $model->tel = $post['tel'];
  46. $model->acreage = $post['acreage'];
  47. $model->layout = $post['shi']."室".$post['ting']."厅".$post['chu']."厨".$post['wei']."卫".$post['yang']."阳";
  48. $model->c_time = time();
  49. $model->status = Offer::STATUS_YES;
  50. if($model->save()){
  51. $url = "http://to8tozb.to8to.com/zb/zb-index-get.php?callback=jsonpCallback&modeltype=8&ptag=1_1_1_846&square={$post['acreage']}&town=&shi={$post['shi']}&ting={$post['ting']}&wei={$post['wei']}&yangtai={$post['yang']}&chu={$post['chu']}&type=detail&dangci=jianzhuang&nowstep=1&autoPop=0&xgtqbj=1&rsadata=qdUE67XgTT7GUlRxb%252FAuxY0kIQwimOPyeimw7fZ77l8XwEXvH9IxQu2%252Fk4o0Kkn0vhYp2Q08%252FLKAH0KUFGMZhr8RLiIrUVqadPAkeiahyaRq1SLHK%%&rsastatus=1&";
  52. $call = self::httpGets($url);
  53. $json = substr($call, 14, -1);
  54. $json = json_decode($json, true);
  55. if(!empty($json['demo']))
  56. {
  57. $sms = new Sms();
  58. $content = $model->layout.",您家装修预算约为".round($json['sgbz_price']/10000*2,1)."万元,因材料品牌及工程量不同,具体报价以量房实测为准。稍后装修管家将回电您,免费提供装修咨询服务。如非本人操作,请忽略。";
  59. $result = $sms->SendMessage($model->tel,$content);
  60. }
  61. return Apireturn::sent(1,'申请成功!报价结果将发送到您的手机,请保持手机畅通');
  62. }
  63. else{
  64. return Apireturn::sent(0,'申请失败');
  65. }
  66. }
  67. /**
  68. * 申请设计
  69. */
  70. public function actionApplyDesign()
  71. {
  72. $post = Yii::$app->request->post();
  73. if(empty($post['nickname']))
  74. return Apireturn::sent(0,'请输入昵称');
  75. if(!Common::is_tel($post['tel']))
  76. return Apireturn::sent(0,'请输入正确的手机号');
  77. if(empty($post['area_id']))
  78. return Apireturn::sent(0,'请选择城市');
  79. $model = new Design();
  80. $model->area_id =$post['area_id'];
  81. $model->nickname = $post['nickname'];
  82. $model->tel = $post['tel'];
  83. $model->c_time = time();
  84. $model->status = Design::STATUS_YES;
  85. if($model->save())
  86. return Apireturn::sent(1,'申请成功!客服将尽快与您取得联系,请保持手机畅通');
  87. else
  88. return Apireturn::sent(0,'申请失败');
  89. }
  90. /**
  91. * curl get 方式获取远程Url内容
  92. * @param string $url Url http://xxxx.xx.xx
  93. * @param array $param 参数数组
  94. * @param int $header 是否构造http头
  95. * @param string $ref 伪造访问来路
  96. * @param int $timeout 超时时间 秒
  97. * @return mixed
  98. */
  99. public function httpGets($url, $param = array(), $header = 1, $ref = 'http://www.baidu.com', $timeout = 3)
  100. {
  101. if ($param != null) {
  102. $query = http_build_query($param);
  103. $url = $url . '?' . $query;
  104. }
  105. $ch = curl_init();
  106. // 跳过SSL证书验证
  107. if (stripos($url, "https://") !== false) {
  108. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  109. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  110. }
  111. curl_setopt($ch, CURLOPT_URL, $url);
  112. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);#设置缓冲时间
  113. //构造http头
  114. if ($header) {
  115. $ip = rand(10, 254) . '.' . rand(10, 254) . '.' . rand(10, 254) . '.' . rand(10, 254);
  116. $header = array("CLIENT-IP:{$ip}", 'X-FORWARDED-FOR:115.239.210.27',);
  117. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//伪造ip
  118. curl_setopt($ch, CURLOPT_REFERER, $ref);//伪造访问来路
  119. }
  120. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  121. $content = curl_exec($ch);
  122. $status = curl_getinfo($ch);
  123. curl_close($ch);
  124. if (intval($status["http_code"]) == 200) {
  125. return $content;
  126. } else {
  127. return $status["http_code"];
  128. }
  129. }
  130. }