ComController.class.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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. // $wx=M()->query("SELECT * FROM sp_user where id='".$data['id']."'");
  95. $wx= $Model->where(array('id'=> $data['id']))->select();
  96. $res = $Model->save($data);
  97. if($res!== false){
  98. //日志代码开始
  99. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---修改sp_'.$this->dbname.'表---ID:'.$data['id']."数据\r\n";
  100. $data_log1 ='修改前数据:'.json_encode($wx)."\r\n";
  101. $data_log2 ='修改的数据:'.json_encode($data)."\r\n";
  102. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  103. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  104. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  105. file_put_contents($filename_log, $data_log2, FILE_APPEND|LOCK_EX);
  106. //日志代码结束
  107. $this->mtReturn(200,'编辑成功'. $data['id']);
  108. } else{
  109. $this->mtReturn(300,'编辑失败'. $res);
  110. }
  111. }
  112. }
  113. if (method_exists($this, '_befor_edit')) {
  114. $this->_befor_edit();
  115. }
  116. $this->display();
  117. }
  118. public function add(){
  119. $Data=I('post.');
  120. if(IS_POST){
  121. $Model = D($this->dbname);
  122. if (!$Model->create()){
  123. $this->mtReturn(300,$Model->getError());
  124. }
  125. else{
  126. if (method_exists($this, '_befor_insert')) {
  127. $Data=$this->_befor_insert($Data);
  128. }
  129. $Res = $Model->add($Data);
  130. if (method_exists($this, '_after_add')) {
  131. $this->_after_add($Data);
  132. }
  133. $Id = $Model->getLastInsID();
  134. if($Res){
  135. //日志开始
  136. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  137. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---新增sp_'.$this->dbname.'表\r\n';
  138. $data_log1 ='新增数据:'.json_encode($Data)."\r\n";
  139. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  140. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  141. //日志结束
  142. $this->mtReturn(200,'新增成功'.$Id);
  143. } else{
  144. $this->mtReturn(300,'新增失败');
  145. }
  146. }
  147. }
  148. if (method_exists($this, '_befor_add')) {
  149. $this->_befor_add();
  150. }
  151. $this->display();
  152. }
  153. public function del(){
  154. $Model=M($this->dbname);
  155. $Data=I();
  156. if (session('power')==2){
  157. $this->mtReturn(300,'本账号没有该权限,如需开通请联系管理员',1);
  158. }else {
  159. if (method_exists($this, '_befor_del')) {
  160. $this->_befor_del($Data);
  161. }
  162. $wx= $Model->where(array('id'=> $Data['id']))->select();
  163. $res=$Model->where('id='.$Data['id'])->delete();
  164. if($res){
  165. //日志开始
  166. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  167. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---删除sp_'.$this->dbname.'表---ID:'.$Data['id']."\r\n";
  168. $data_log1 ='删除前数据:'.json_encode($wx)."\r\n";
  169. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  170. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  171. //日志开始结束
  172. $this->mtReturn(200,'删除成功'.$Data['id']);
  173. }else{
  174. $this->mtReturn(300,'删除失败');
  175. }
  176. }
  177. }
  178. public function deldata(){
  179. $Model=M($this->dbname,$this->regx_db);
  180. $Data=I();
  181. if (session('power')==2){
  182. $this->mtReturn(300,'本账号没有该权限,如需开通请联系管理员',1);
  183. }else {
  184. $res=$Model->where('id='.$Data['id'])->delete();
  185. if($res)
  186. $this->mtReturn(200,'删除成功'.$Data['id']);
  187. else
  188. $this->mtReturn(300,'删除失败');
  189. }
  190. }
  191. public function exportExcel($expTitle,$expCellName,$expTableData){//表名,表头(一维数组),二维数组 数据
  192. import("Org.Util_it.PHPExcel");
  193. import("Org.Util_it.PHPExcel.Writer.Excel2007");
  194. import("Org.Util_it.PHPExcel.IOFactory.php");
  195. //对数据进行检验
  196. if(!is_array($expTableData)){
  197. $this->mtReturn(300,'数据不是数组');
  198. }
  199. //检查文件名
  200. if(empty($expTitle)){
  201. $this->mtReturn(300,'文件名未设置');
  202. }
  203. $date = date("Y_m_d",time());
  204. $expTitle .= $date.".xlsx";
  205. //创建PHPExcel对象,注意,不能少了\
  206. $objPHPExcel = new \PHPExcel();
  207. $objProps = $objPHPExcel->getProperties();
  208. //设置表头
  209. $key = ord("A");
  210. foreach($expCellName as $v){
  211. $colum = chr($key);
  212. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
  213. $key += 1;
  214. }
  215. $column = 2;
  216. $objActSheet = $objPHPExcel->getActiveSheet();
  217. //设置为文本格式
  218. foreach($expTableData as $key => $rows){ //行写入
  219. $span = ord("A");
  220. foreach($rows as $keyName=> $value){// 列写入
  221. $j = chr($span);
  222. $objActSheet->setCellValueExplicit($j.$column, $value);
  223. $span++;
  224. }
  225. $column++;
  226. }
  227. //$fileName = iconv("utf-8", "gb2312", $fileName);
  228. //重命名表
  229. // $objPHPExcel->getActiveSheet()->setTitle('test');
  230. //设置活动单指数到第一个表,所以Excel打开这是第一个表
  231. $objPHPExcel->setActiveSheetIndex(0);
  232. ob_end_clean();//清除缓冲区,避免乱码
  233. header('Content-Type: application/vnd.ms-excel');
  234. header("Content-Disposition: attachment;filename=\"$expTitle\"");
  235. header('Cache-Control: max-age=0');
  236. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  237. $objWriter->save('php://output'); //文件通过浏览器下载
  238. exit;
  239. }
  240. public function downfile(){//下载文件 file
  241. $data=I();
  242. $path_parts = pathinfo($data['file']);
  243. $DirName=$path_parts['dirname'];//有路径显示路径,无路径显示.
  244. $file_name = $path_parts['basename'];//文件名,有后缀
  245. $Extension=$path_parts['extension'];//后缀名
  246. $file_path=explode('-',$file_name)[3];
  247. $Y=substr($file_path,0,4);
  248. $M=substr($file_path,4,2);
  249. $D=substr($file_path,-2);
  250. $filename='/var/spool/asterisk/monitor/'.$Y.'/'.$M.'/'.$D.'/'.$file_name;
  251. if (!file_exists($filename)) {
  252. $this->mtReturn(300,'无文件,下载失败');
  253. }
  254. header('Content-type: application/x-'.$Extension);
  255. //下载显示的名字
  256. header('Content-Disposition: attachment; filename='.$file_name);
  257. $tr=readfile($filename);
  258. if($tr===false)
  259. $this->mtReturn(300,'下载错误');
  260. //echo json_encode($path_parts);
  261. }
  262. public function downother(){//下载文件 fileurl 路径 name 文件名
  263. $data=I();
  264. //$data['fileurl']='/var/www/html/spcrm/admin/knowfile/201705081713331721.html';
  265. $path_parts = pathinfo($data['fileurl']);
  266. $file_name = $path_parts['basename'];
  267. if (!file_exists($data['fileurl'])) {
  268. $this->mtReturn(300,'无文件,下载失败');
  269. }
  270. header('Content-type: application/x-'.$path_parts['extension']);
  271. //下载显示的名字
  272. header('Content-Disposition: attachment; filename='.$data['name']);
  273. $tr=readfile($data['fileurl']);
  274. if($tr===false)
  275. $this->mtReturn(300,'下载错误');
  276. //echo json_encode($path_parts);
  277. }
  278. public function play(){
  279. header ( " Cache-Control: no-cache, must-revalidate " );
  280. $Data=I();
  281. $Path_Parts = pathinfo($Data['file']);
  282. $File_Name = $Path_Parts['basename'];
  283. if(isset($Data['action']))
  284. {
  285. $File_Path=explode('-',$File_Name)[3];
  286. $Y=substr($File_Path,0,4);
  287. $M=substr($File_Path,4,2);
  288. $D=substr($File_Path,-2);
  289. $Filename='/var/spool/asterisk/monitor/'.$Y.'/'.$M.'/'.$D.'/'.$File_Name;
  290. if (!file_exists($Filename))
  291. {
  292. $this->mtReturn(300,'无文件,播放失败');
  293. }
  294. $Fp = fopen($Filename, 'rb');
  295. if (!$Fp)
  296. {
  297. $this->mtReturn(300,'文件无法打开');
  298. }
  299. /* header("Pragma: public");
  300. header("Expires: 0");
  301. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  302. header("Cache-Control: public");
  303. header("Content-Description: wav file");
  304. header("Content-Type: audio/wav");
  305. header("Content-Disposition: attachment; filename= ".$File_Name);
  306. header("Content-Transfer-Encoding: binary");
  307. header("Content-length: " . filesize($Filename));
  308. fpassthru($Fp);
  309. fclose($Fp);*/
  310. $path=$Filename;
  311. $filesize=filesize($Filename);
  312. header("Content-type:audio/mpeg");
  313. header("Content-length:$filesize");
  314. readfile($Filename);
  315. }
  316. else{
  317. $this->assign('filename',$File_Name);
  318. $this->display('Public/play');
  319. }
  320. }
  321. /**
  322. * [permdata description] 数据权限
  323. * @param [type] $status [description] 数据格式类型 默认是0
  324. * @return [type] [description] status=0 返回thinkphp数组形式array(in,'x,cc,c') status=1 返回字符串格1,2,1
  325. */
  326. protected function permdata($status=0) {
  327. $ModelUser=M('v_user');
  328. $Uid=session('zt_uid');
  329. $PermData=3;
  330. if($Uid!=1)
  331. {
  332. $ListData=$ModelUser->where(array('id' => $Uid))->Field("dataperm,agentid,depnameid")->select();
  333. $PermData =$ListData[0]['dataperm'];
  334. }
  335. if($PermData==1)
  336. {
  337. $Data =$ListData[0]['agentid'];
  338. }
  339. else if($PermData==2)
  340. {
  341. $ListId=$this->groupdata($ListData[0]['depnameid']).$ListData[0]['depnameid'];
  342. $DepData=explode(',',$ListId);
  343. $Map['depnameid']=array('in',$DepData);
  344. $List = M('v_user')->where($Map)->field("agentid")->select();
  345. $Ids=array();
  346. foreach ($List as $g) {
  347. $Ids = array_merge($Ids, explode(',', trim($g['agentid'], ',')));
  348. $IDBuff.=$g['agentid'].',';
  349. }
  350. $Data =array('in',array_unique($Ids));
  351. if($status==1)
  352. {
  353. $IDBuff = substr($IDBuff,0,strlen($var)-1);
  354. $Data=$IDBuff;
  355. }
  356. }
  357. else{
  358. $Data='';
  359. }
  360. return $Data;
  361. }
  362. protected function groupdata($DepPid){
  363. $ModelGroup=M('auth_group');
  364. $ListPid=$ModelGroup->where(array('pid' => $DepPid,'type'=> 0))->Field('id')->select();
  365. if(!empty($ListPid)){//如果有子类
  366. $i=0;
  367. foreach($ListPid as $g){
  368. $Arrt.=$g['id'].',';
  369. $Arrt.=$this->groupdata($g['id']);
  370. }
  371. return $Arrt;
  372. }
  373. }
  374. public function logcs($msg)
  375. {
  376. $msg = $msg."\n";
  377. $logFile = '/var/www/html/jdxf/log/cstest.log';
  378. file_put_contents($logFile, "[".date('Y-m-d H:i:s') . "]---" . $msg, FILE_APPEND | LOCK_EX);
  379. }
  380. }