ComController.class.php.bak.20200601 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. class ComController extends Controller {
  5. public function _initialize(){
  6. if(!session('zt_uid')){
  7. //redirect(U('Public/login'));
  8. $this->mtReturn(300,'登录超时,请刷新页面,或重新登录!');
  9. }
  10. $name=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME;
  11. if(!authcheck($name,session('zt_uid'))){
  12. $this->mtReturn(300,'很抱歉,此项操作您没有权限!请联系管理员!');
  13. }
  14. $this->dbname = $this->dbname.CONTROLLER_NAME;
  15. $permdata=$this->permdata();
  16. }
  17. protected function mtReturn($status,$info) {
  18. if($status===200){
  19. $dat['username'] =session('zt_username');
  20. $dat['content'] = $info;
  21. $dat['os']=$_SERVER['HTTP_USER_AGENT'];
  22. $dat['url'] = U();
  23. $dat['addtime'] = date("Y-m-d H:i:s",time());
  24. $dat['ip'] = get_client_ip();
  25. M("log")->add($dat);
  26. }
  27. exit(json_encode(array('statusCode'=>$status,'message'=>$info)));
  28. ;
  29. }
  30. public function index(){
  31. }
  32. public function outcsv($fname,$sql){
  33. $User = M();
  34. $query=$sql." into outfile '/var/www/html/thinkphp_crm/admin1/tilen.csv' CHARACTER SET gbk ";
  35. $User->execute($query);
  36. $filename = '/var/www/html/thinkphp_crm/admin1/tilen.csv';
  37. //文件的类型
  38. $date = date("Y_m_d",time());
  39. $fname .= $date;
  40. //header('Content-type: application/xlsx');
  41. header('Content-Type: application/vnd.ms-excel');
  42. //下载显示的名字
  43. header('Content-Disposition: attachment; filename="'.$fname.'.csv"');
  44. $tr=readfile($filename);
  45. if($tr!==false)
  46. unlink("/var/www/html/thinkphp_crm/admin1/tilen.csv");
  47. exit;
  48. }
  49. public function outtablexls($fname,$sql){
  50. $User = M();
  51. $query=$sql." into outfile '/var/www/html/thinkphp_crm/admin1/tilen.xls' CHARACTER SET gbk ";
  52. $User->execute($query);
  53. $filename = '/var/www/html/thinkphp_crm/admin1/tilen.xls';
  54. //文件的类型
  55. $date = date("Y_m_d",time());
  56. $fname .= $date;
  57. //header('Content-type: application/xlsx');
  58. header('Content-Type: application/vnd.ms-excel');
  59. //下载显示的名字
  60. header('Content-Disposition: attachment; filename="'.$fname.'.xls"');
  61. $tr=readfile($filename);
  62. if($tr!==false)
  63. unlink("/var/www/html/thinkphp_crm/admin1/tilen.xls");
  64. exit;
  65. }
  66. public function outtablexlsx($fname,$sql){
  67. $User = M();
  68. $query=$sql." into outfile '/var/www/html/thinkphp_crm/admin1/tilen.xlsx' CHARACTER SET gbk ";
  69. $User->execute($query);
  70. $filename = '/var/www/html/thinkphp_crm/admin1/tilen.xlsx';
  71. //文件的类型
  72. $date = date("Y_m_d",time());
  73. $fname .= $date;
  74. header('Content-type: application/xlsx');
  75. //header('Content-Type: application/vnd.ms-excel');
  76. //下载显示的名字
  77. header('Content-Disposition: attachment; filename="'.$fname.'.xlsx"');
  78. $tr=readfile($filename);
  79. if($tr!==false)
  80. unlink("/var/www/html/thinkphp_crm/admin1/tilen.xlsx");
  81. exit;
  82. }
  83. public function edit(){
  84. $data=I('post.');
  85. if(IS_POST){
  86. $Model = D($this->dbname);
  87. if (!$Model->create()){
  88. $this->mtReturn(300,$Model->getError());
  89. }
  90. else{
  91. if (method_exists($this, '_befor_save')) {
  92. $data=$this->_befor_save($data);
  93. }
  94. $res = $Model->save($data);
  95. if($res!== false)
  96. $this->mtReturn(200,'编辑成功'. $data['id']);
  97. else
  98. $this->mtReturn(300,'编辑失败'. $res);
  99. }
  100. }
  101. if (method_exists($this, '_befor_edit')) {
  102. $this->_befor_edit();
  103. }
  104. $this->display();
  105. }
  106. public function add(){
  107. $Data=I('post.');
  108. if(IS_POST){
  109. $Model = D($this->dbname);
  110. if (!$Model->create()){
  111. $this->mtReturn(300,$Model->getError());
  112. }
  113. else{
  114. if (method_exists($this, '_befor_insert')) {
  115. $Data=$this->_befor_insert($Data);
  116. }
  117. $Res = $Model->add($Data);
  118. if (method_exists($this, '_after_add')) {
  119. $this->_after_add($Data);
  120. }
  121. $Id = $Model->getLastInsID();
  122. if($Res)
  123. $this->mtReturn(200,'新增成功'.$Id);
  124. else
  125. $this->mtReturn(300,'新增失败');
  126. }
  127. }
  128. if (method_exists($this, '_befor_add')) {
  129. $this->_befor_add();
  130. }
  131. $this->display();
  132. }
  133. public function del(){
  134. $Model=M($this->dbname);
  135. $Data=I();
  136. if (method_exists($this, '_befor_del')) {
  137. $this->_befor_del($Data);
  138. }
  139. $res=$Model->where('id='.$Data['id'])->delete();
  140. if($res)
  141. $this->mtReturn(200,'删除成功'.$Data['id']);
  142. else
  143. $this->mtReturn(300,'删除失败');
  144. }
  145. public function deldata(){
  146. $Model=M($this->dbname,$this->regx_db);
  147. $Data=I();
  148. $res=$Model->where('id='.$Data['id'])->delete();
  149. if($res)
  150. $this->mtReturn(200,'删除成功'.$Data['id']);
  151. else
  152. $this->mtReturn(300,'删除失败');
  153. }
  154. public function exportExcel($expTitle,$expCellName,$expTableData){//表名,表头(一维数组),二维数组 数据
  155. import("Org.Util_it.PHPExcel");
  156. import("Org.Util_it.PHPExcel.Writer.Excel2007");
  157. import("Org.Util_it.PHPExcel.IOFactory.php");
  158. //对数据进行检验
  159. if(!is_array($expTableData)){
  160. $this->mtReturn(300,'数据不是数组');
  161. }
  162. //检查文件名
  163. if(empty($expTitle)){
  164. $this->mtReturn(300,'文件名未设置');
  165. }
  166. $date = date("Y_m_d",time());
  167. $expTitle .= $date.".xlsx";
  168. //创建PHPExcel对象,注意,不能少了\
  169. $objPHPExcel = new \PHPExcel();
  170. $objProps = $objPHPExcel->getProperties();
  171. //设置表头
  172. $key = ord("A");
  173. foreach($expCellName as $v){
  174. $colum = chr($key);
  175. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
  176. $key += 1;
  177. }
  178. $column = 2;
  179. $objActSheet = $objPHPExcel->getActiveSheet();
  180. //设置为文本格式
  181. foreach($expTableData as $key => $rows){ //行写入
  182. $span = ord("A");
  183. foreach($rows as $keyName=> $value){// 列写入
  184. $j = chr($span);
  185. $objActSheet->setCellValueExplicit($j.$column, $value);
  186. $span++;
  187. }
  188. $column++;
  189. }
  190. //$fileName = iconv("utf-8", "gb2312", $fileName);
  191. //重命名表
  192. // $objPHPExcel->getActiveSheet()->setTitle('test');
  193. //设置活动单指数到第一个表,所以Excel打开这是第一个表
  194. $objPHPExcel->setActiveSheetIndex(0);
  195. ob_end_clean();//清除缓冲区,避免乱码
  196. header('Content-Type: application/vnd.ms-excel');
  197. header("Content-Disposition: attachment;filename=\"$expTitle\"");
  198. header('Cache-Control: max-age=0');
  199. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  200. $objWriter->save('php://output'); //文件通过浏览器下载
  201. exit;
  202. }
  203. public function downfile(){//下载文件 file
  204. $data=I();
  205. $path_parts = pathinfo($data['file']);
  206. $DirName=$path_parts['dirname'];//有路径显示路径,无路径显示.
  207. $file_name = $path_parts['basename'];//文件名,有后缀
  208. $Extension=$path_parts['extension'];//后缀名
  209. $file_path=explode('-',$file_name)[3];
  210. $Y=substr($file_path,0,4);
  211. $M=substr($file_path,4,2);
  212. $D=substr($file_path,-2);
  213. $filename='/var/spool/asterisk/monitor/'.$Y.'/'.$M.'/'.$D.'/'.$file_name;
  214. if (!file_exists($filename)) {
  215. $this->mtReturn(300,'无文件,下载失败');
  216. }
  217. header('Content-type: application/x-'.$Extension);
  218. //下载显示的名字
  219. header('Content-Disposition: attachment; filename='.$file_name);
  220. $tr=readfile($filename);
  221. if($tr===false)
  222. $this->mtReturn(300,'下载错误');
  223. //echo json_encode($path_parts);
  224. }
  225. public function downother(){//下载文件 fileurl 路径 name 文件名
  226. $data=I();
  227. //$data['fileurl']='/var/www/html/spcrm/admin/knowfile/201705081713331721.html';
  228. $path_parts = pathinfo($data['fileurl']);
  229. $file_name = $path_parts['basename'];
  230. if (!file_exists($data['fileurl'])) {
  231. $this->mtReturn(300,'无文件,下载失败');
  232. }
  233. header('Content-type: application/x-'.$path_parts['extension']);
  234. //下载显示的名字
  235. header('Content-Disposition: attachment; filename='.$data['name']);
  236. $tr=readfile($data['fileurl']);
  237. if($tr===false)
  238. $this->mtReturn(300,'下载错误');
  239. //echo json_encode($path_parts);
  240. }
  241. public function play(){
  242. header ( " Cache-Control: no-cache, must-revalidate " );
  243. $Data=I();
  244. $Path_Parts = pathinfo($Data['file']);
  245. $File_Name = $Path_Parts['basename'];
  246. if(isset($Data['action']))
  247. {
  248. $File_Path=explode('-',$File_Name)[3];
  249. $Y=substr($File_Path,0,4);
  250. $M=substr($File_Path,4,2);
  251. $D=substr($File_Path,-2);
  252. $Filename='/var/spool/asterisk/monitor/'.$Y.'/'.$M.'/'.$D.'/'.$File_Name;
  253. if (!file_exists($Filename))
  254. {
  255. $this->mtReturn(300,'无文件,播放失败');
  256. }
  257. $Fp = fopen($Filename, 'rb');
  258. if (!$Fp)
  259. {
  260. $this->mtReturn(300,'文件无法打开');
  261. }
  262. /* header("Pragma: public");
  263. header("Expires: 0");
  264. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  265. header("Cache-Control: public");
  266. header("Content-Description: wav file");
  267. header("Content-Type: audio/wav");
  268. header("Content-Disposition: attachment; filename= ".$File_Name);
  269. header("Content-Transfer-Encoding: binary");
  270. header("Content-length: " . filesize($Filename));
  271. fpassthru($Fp);
  272. fclose($Fp);*/
  273. $path=$Filename;
  274. $filesize=filesize($Filename);
  275. header("Content-type:audio/mpeg");
  276. header("Content-length:$filesize");
  277. readfile($Filename);
  278. }
  279. else{
  280. $this->assign('filename',$File_Name);
  281. $this->display('Public/play');
  282. }
  283. }
  284. /**
  285. * [permdata description] 数据权限
  286. * @param [type] $status [description] 数据格式类型 默认是0
  287. * @return [type] [description] status=0 返回thinkphp数组形式array(in,'x,cc,c') status=1 返回字符串格1,2,1
  288. */
  289. protected function permdata($status=0) {
  290. $ModelUser=M('v_user');
  291. $Uid=session('zt_uid');
  292. $PermData=3;
  293. if($Uid!=1)
  294. {
  295. $ListData=$ModelUser->where(array('id' => $Uid))->Field("dataperm,agentid,depnameid")->select();
  296. $PermData =$ListData[0]['dataperm'];
  297. }
  298. if($PermData==1)
  299. {
  300. $Data =$ListData[0]['agentid'];
  301. }
  302. else if($PermData==2)
  303. {
  304. $ListId=$this->groupdata($ListData[0]['depnameid']).$ListData[0]['depnameid'];
  305. $DepData=explode(',',$ListId);
  306. $Map['depnameid']=array('in',$DepData);
  307. $List = M('v_user')->where($Map)->field("agentid")->select();
  308. $Ids=array();
  309. foreach ($List as $g) {
  310. $Ids = array_merge($Ids, explode(',', trim($g['agentid'], ',')));
  311. $IDBuff.=$g['agentid'].',';
  312. }
  313. $Data =array('in',array_unique($Ids));
  314. if($status==1)
  315. {
  316. $IDBuff = substr($IDBuff,0,strlen($var)-1);
  317. $Data=$IDBuff;
  318. }
  319. }
  320. else{
  321. $Data='';
  322. }
  323. return $Data;
  324. }
  325. protected function groupdata($DepPid){
  326. $ModelGroup=M('auth_group');
  327. $ListPid=$ModelGroup->where(array('pid' => $DepPid,'type'=> 0))->Field('id')->select();
  328. if(!empty($ListPid)){//如果有子类
  329. $i=0;
  330. foreach($ListPid as $g){
  331. $Arrt.=$g['id'].',';
  332. $Arrt.=$this->groupdata($g['id']);
  333. }
  334. return $Arrt;
  335. }
  336. }
  337. public function logcs($msg)
  338. {
  339. $msg = $msg."\n";
  340. $logFile = '/var/www/html/jdxf/log/cstest.log';
  341. file_put_contents($logFile, "[".date('Y-m-d H:i:s') . "]---" . $msg, FILE_APPEND | LOCK_EX);
  342. }
  343. }