SmsNotificationController.class.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/4/30 0030
  6. * Time: 上午 9:53
  7. */
  8. namespace Home\Controller;
  9. use Think\Controller;
  10. include '../Common/function.php';
  11. include ('/php/aliyun-dyvms-php-sdk/api_demo/singleCallByTts1.php');
  12. include ('/php/api_sdk/JdMessageSend4.php');
  13. class SmsNotificationController extends Controller
  14. {
  15. public function voice()
  16. {
  17. print_r( $_SERVER["REMOTE_ADDR"]);
  18. $Data = I('post.');
  19. $dataid = $Data['IMEI'];
  20. $time = $Data['time'];
  21. $evt = $Data['evt'];
  22. $evt_name = $Data['evt_name'];
  23. $dwtype = $Data['dwtype'];
  24. $company = M()->query("select company,dwtype from sp_owner where owner_code=" . $dataid);
  25. if (empty($company)) {
  26. exit();
  27. }
  28. if (empty($dwtype)) {
  29. $dwtype = $company[0]['dwtype'];
  30. }
  31. switch ($dwtype) {
  32. case "1";//判断报警类型
  33. $type_name = '火警';
  34. if(empty($evt)){
  35. $status = $evt_name;
  36. }else{
  37. switch ($evt) {
  38. case '44'://判断是否设置离线语音报警
  39. $status = '离线';
  40. break;
  41. case 'H02P1':
  42. $status = '火警';
  43. break;
  44. case 'H02P2':
  45. $status = '故障';
  46. break;
  47. case 'H02P3':
  48. $status='屏蔽';
  49. break;
  50. case 'H02P4':
  51. $status='监管';
  52. break;
  53. case 'H02P5':
  54. $status='启动';
  55. break;
  56. case 'H02P6':
  57. $status='反馈';
  58. break;
  59. // case 'H02P7':
  60. // $status='延时';
  61. // break;
  62. case 'H02P8':
  63. $status = '电源故障';
  64. break;
  65. case 'U24P0':
  66. $status='复位';
  67. break;
  68. case 'U24P1':
  69. $status='消音';
  70. break;
  71. case 'U24P2':
  72. $status = '手动报警';
  73. break;
  74. // case 'U24P3':
  75. // $status='警情消除';
  76. // break;
  77. case 'U24P4':
  78. $status='自检';
  79. break;
  80. // case 'U24P5':
  81. // $status='查岗应答';
  82. // break;
  83. // case 'U21P0':
  84. // $status='正常';
  85. // break;
  86. case 'U21P1':
  87. $status = '火警';
  88. break;
  89. case 'U21P2':
  90. $status = '故障';
  91. break;
  92. case 'U21P3':
  93. $status = '主电故障';
  94. break;
  95. case 'U21P4':
  96. $status = '备电故障';
  97. break;
  98. // case 'U21P5':
  99. // $status='监控';
  100. // break;
  101. // case 'U21P6':
  102. // $status='接线';
  103. // break;
  104. default:
  105. $status='其他';
  106. // $status=$evt_name;
  107. break;
  108. }
  109. }
  110. break;
  111. case "2";// 判断报警类型
  112. $type_name = '消防水';
  113. switch ($Data['evt']) {
  114. case 'WP1':
  115. $status = '低压';
  116. break;
  117. case 'WP2':
  118. $status = '高压';
  119. break;
  120. case 'WP4':
  121. $status = '离线';
  122. break;
  123. // default:
  124. // $status='其他'.$Data['evt'];
  125. // break;
  126. }
  127. break;
  128. case "3";// 判断报警类型
  129. $type_name = '烟感';
  130. switch ($Data['evt']) {
  131. case 'y01':
  132. $status = '报警';
  133. break;
  134. // case 'yo2':
  135. // $status='报警静音';
  136. // break;
  137. case 'y04':
  138. $status = '低压';
  139. break;
  140. case 'y05':
  141. $status = '故障';
  142. break;
  143. // default:
  144. // $status='其他'.$Data['evt'];
  145. // break;
  146. }
  147. break;
  148. case "5";//判断报警类型
  149. $type_name = '液位';
  150. switch ($Data['evt']) {
  151. case 'LL0':
  152. $status = '正常';
  153. break;
  154. case 'LL1':
  155. $status = '低水位';
  156. break;
  157. case 'LL2':
  158. $status = '高水位';
  159. break;
  160. case 'LL3':
  161. $status = '故障';
  162. break;
  163. case 'LL4':
  164. $status = '离线';
  165. break;
  166. // default:
  167. // $status='其他'.$Data['Status'];
  168. // break;
  169. }
  170. break;
  171. case "6";
  172. $type_name = 'RTU';
  173. $status = $evt_name;
  174. break;
  175. case "7";
  176. $type_name = '电气火灾';
  177. switch ($Data['evt']) {
  178. case 'EF1':
  179. $status = '欠压';
  180. break;
  181. case 'EF2':
  182. $status = '过压';
  183. break;
  184. case 'EF3':
  185. $status = '过流';
  186. break;
  187. case 'EF4':
  188. $status = '漏电';
  189. break;
  190. case 'EF5':
  191. $status = '温度1超高';
  192. break;
  193. case 'EF6':
  194. $status = '温度2超高';
  195. break;
  196. case 'EF7':
  197. $status = '温度3超高';
  198. break;
  199. case 'EF8':
  200. $status = '温度4超高';
  201. break;
  202. case 'EF9':
  203. $status = '离线';
  204. break;
  205. // default:
  206. // $status='其他'.$Data['evt'];
  207. // break;
  208. }
  209. break;
  210. }
  211. // print_r(第一);
  212. $Y = date("m", strtotime($time));
  213. $R = date("d", strtotime($time));
  214. $S = date("G", strtotime($time));
  215. $F = date("i", strtotime($time));
  216. $time1 = date("Y-m-d");
  217. $time2 = date("Y-m-d H:i:s");
  218. $time3 = $Y . '月' . $R . '日' . $S . '时' . $F . '分';
  219. $time4 = date("Y-m");
  220. $time5 = date("Y");
  221. if ($status == '离线') {
  222. $dwtype = 8;
  223. }
  224. // print_r(第一);
  225. $usersql="select * from ytiot_v_usercompany where owner_code=". $company[0]['company'] ." group by username";
  226. $user = add66($usersql);
  227. // print_r($user);
  228. foreach ($user as $key1=>$value1){
  229. // 语音
  230. $sql = "select * from ytiot_yy_pzb where e_status=1 and username='" . $user[$key1]['username'] . "' and sbtype=" . $dwtype . " and jrq>='" . $time1 . "' and zed>0";
  231. $setmeal = add66($sql);
  232. // 短信
  233. $dxsql = "select a.id as cz_id,b.id as pz_id,b.cycle,b.cycle_cs from ytiot_dx_cz as a join ytiot_dx_pz as b on a.id=b.cz_id where a.e_status=1 and a.user_name='" .
  234. $user[$key1]['username'] . "' and a.end_date>='" . $time1 . "' and a.balance>0";
  235. $dxxx = add66($dxsql);
  236. // print_r('第一'.$dxsql);
  237. // print_r('第一'.$dxxx);
  238. //语音
  239. if (!empty($setmeal)){
  240. print_r(第二);
  241. switch ($setmeal[0]['pzlb']) {
  242. case 0;
  243. $time6 = $time1;
  244. break;
  245. case 1;
  246. $time6 = $time4;
  247. break;
  248. case 2;
  249. $time6 = $time5;
  250. break;
  251. }
  252. $sql1="select count(*) as tsl from ytiot_yy_sjjl where company_code='".$user[$key1]['username'].
  253. "' and sbtype=".$dwtype." and sfyy=1 and bjsj like '".$time6."%'";
  254. $varsl=add($sql1);
  255. if($setmeal[0]['lbsl']>$varsl[0]['tsl']){
  256. print_r(第三);
  257. if (!empty($setmeal[0]['bjhm'])){
  258. print_r(第四);
  259. $json=singleCallByTts($setmeal[0]['bjhm'],$type_name,$status,$time3);
  260. if($json=='OK'){
  261. print_r(第五);
  262. $sql3="select * from ytiot_yy_pzb where id=".$setmeal[0]['id'];
  263. $res2=add66($sql3);
  264. $zed=$res2[0]['zed']-1;
  265. $sql_update="update ytiot_yy_pzb set zed = ".$zed." where id =".$setmeal[0]['id'];
  266. $res3 = addDataInfo($sql_update);
  267. if($res3){
  268. print_r(第六);
  269. // print_r($status);
  270. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('".$dataid."',".$dwtype.",'".
  271. $status."','".$time."','".$time2."',1,'".$user[$key1]['username']."')";
  272. $res1 = addDataInfo($sql_inset);
  273. }
  274. }else{
  275. // print_r($status);
  276. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('".$dataid."',".$dwtype.",'".$status."','".$time."','".$time2."',0,'".$user[$key1]['username']."')";
  277. $inset=addDataInfo($sql_inset);
  278. }
  279. }else{//多个被叫号码,暂时不用
  280. $sql2="select * from ytiot_yy_bjhm where pzbid=".$setmeal[0]['id'];
  281. $phone=add66($sql2);
  282. foreach ($phone as $key => $value){
  283. $json=singleCallByTts($phone[$key]['bjhm'],$type_name,$status,$time3);
  284. if($json=='OK'){
  285. $sql3="select * from ytiot_yy_pzb where id=".$setmeal[0]['id'];
  286. $res2=add66($sql3);
  287. $zed=$res2[0]['zed']-1;
  288. $sql_update="update ytiot_yy_pzb set zed = ".$zed." where id =".$setmeal[0]['id'];
  289. $res3 = addDataInfo($sql_update);
  290. if($res3){
  291. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('".$dataid."',".$dwtype.",'".
  292. $status."','".$time."','".$time2."',1,'".$user[$key1]['username']."')";
  293. $res1 = addDataInfo($sql_inset);
  294. }
  295. }else{
  296. // print_r($status);
  297. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('".$dataid."',".$dwtype.",'".$status."','".$time."','".$time2."',0,'".$user[$key1]['username']."')";
  298. $inset=addDataInfo($sql_inset);
  299. }
  300. }
  301. }
  302. }else{
  303. // print_r($status);
  304. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('".$dataid."',".$dwtype.",'".$status."','".$time."','".$time2."',0,'".$user[$key1]['username']."')";
  305. $inset=addDataInfo($sql_inset);
  306. }
  307. }
  308. else{
  309. // print_r($status);
  310. if($user[$key1]['username']){
  311. }
  312. $sql_inset="insert into ytiot_yy_sjjl (sbbh,sbtype,bjtype,bjsj,lrsj,sfyy,company_code) values ('"
  313. .$dataid."',".$dwtype.",'".$status."','".$time."','".$time2."',0,'".$user[$key1]['username']."')";
  314. $inset=addDataInfo($sql_inset);
  315. // if($inset){
  316. // return 'OK';
  317. // }
  318. }
  319. //短信
  320. if (!empty($dxxx)){
  321. // print_r(第七);
  322. switch ($dxxx[0]['cycle']) {
  323. case 1;
  324. $time6 = $time1;
  325. break;
  326. case 2;
  327. $time6 = $time4;
  328. break;
  329. case 3;
  330. $time6 = $time5;
  331. break;
  332. }
  333. $dxsql1="select count(*) as dxfssl from ytiot_dx_sms_push_record where user_name='".$user[$key1]['username'].
  334. "' and success_tag=1 and alarm_time like '".$time6."%'";
  335. // print_r('第八'.$dxsql1);
  336. $dxvarsl=add($dxsql1);
  337. // print_r(第八);
  338. if($dxxx[0]['cycle_cs']>$dxvarsl[0]['dxfssl']){
  339. $phonesql="select b.phone,b.name from ytiot_dx_configure_renyuan as a join ytiot_dx_staffing as b on a.staffing_id=b.id where pz_id=".$dxxx[0]['pz_id']." and b.bj_type like '%".$dwtype."%'";
  340. $phone=add($phonesql);
  341. // print_r('第九'.$phonesql);
  342. if (!empty($phone)){
  343. foreach ($phone as $key66=>$value66){
  344. $fsxx=array('type'=>$type_name,'gz'=>$status,'bjsj'=>$time3);
  345. $dxjson=dxsendSms($phone[$key66]['phone'],$fsxx);
  346. print_r('第十'.$dxjson['Code']);
  347. if($dxjson=='OK'){
  348. $yesql="select balance from ytiot_dx_cz where id=".$dxxx[0]['cz_id'];
  349. print_r('第十一'.$yesql);
  350. $ye=add($yesql);
  351. $ye1=$ye[0]['balance']-1;
  352. $sql_updateye="update ytiot_dx_cz set balance = ".$ye1." where id =".$dxxx[0]['cz_id'];
  353. $ye_update = addDataInfo($sql_updateye);
  354. if($ye_update){
  355. $sql_dxjs_inset="insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('".$dataid."',".$dwtype.",'".
  356. $status."',1,'发送成功','".$user[$key1]['username']."','".$time."')";
  357. $dxjs_inset = addDataInfo($sql_dxjs_inset);
  358. }
  359. }else{
  360. // 原因:代码出现问题
  361. $dxsql_inset="insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('".$dataid."',".$dwtype.",'".
  362. $status."',0,'原因:参数不合法','".$user[$key1]['username']."','".$time."')";
  363. $dx_inset=addDataInfo($dxsql_inset);
  364. }
  365. }
  366. }else{
  367. // 原因:未添加接收人;
  368. $dxsql_inset="insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('".$dataid."',".$dwtype.",'".
  369. $status."',0,'原因:未添加接收人','".$user[$key1]['username']."','".$time."')";
  370. $dx_inset=addDataInfo($dxsql_inset);
  371. }
  372. // json_encode($phone_list);
  373. }else{
  374. // 原因:当天配置的报警已用完;
  375. $dxsql_inset="insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('".$dataid."',".$dwtype.",'".
  376. $status."',0,'原因:当天配置的报警已用完','".$user[$key1]['username']."','".$time."')";
  377. $dx_inset=addDataInfo($dxsql_inset);
  378. }
  379. }
  380. else{
  381. // 原因:1.尚未开通;2.开通时间到期;3.余额不足;
  382. $dxsql_inset="insert into ytiot_dx_sms_push_record (device_code,alarm_type,alarm_content,success_tag,sms_sending,user_name,alarm_time) values ('".$dataid."',".$dwtype.",'".
  383. $status."',0,'原因:1.尚未开通;2.开通时间到期;3.余额不足;','".$user[$key1]['username']."','".$time."')";
  384. $dx_inset=addDataInfo($dxsql_inset);
  385. }
  386. }
  387. }
  388. }