Cron.php 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. <?php
  2. namespace Work\Lib;
  3. use Dever;
  4. Class Cron
  5. {
  6. #工单日统计
  7. public function index_api(){
  8. $title = '工单每日统计';
  9. $data = Dever::db('work/branch')->state(array('type'=>1));
  10. foreach ($data as $k => $v) {
  11. $group_id = explode(',',$v['group']);
  12. $admin = Dever::db('manage/admin')->find($group_id[1]);
  13. $content = $this->email_api($v,$admin);
  14. if ($content) {
  15. $this->send($admin['email'], $admin['username'], $title, $content);
  16. }
  17. }
  18. }
  19. public function test_api(){
  20. $title = '工单每日统计';
  21. $data = Dever::db('work/branch')->state(array('type'=>1));
  22. foreach ($data as $k => $v) {
  23. $group_id = explode(',',$v['group']);
  24. $admin = Dever::db('manage/admin')->find($group_id[1]);
  25. $content = $this->email_api($v,$admin);
  26. if ($content) {
  27. $this->send('1849506057@qq.com', $admin['username'], $title, $content);
  28. }
  29. }
  30. }
  31. #发送邮件
  32. public function email_api($v,$fsadmin)
  33. {
  34. $start=mktime(0,0,0,date('m'),date('d'),date('Y'))-86400;
  35. $end = $start+86400-1;
  36. $config = Dever::db('work/info')->config['config_status'];
  37. $dbranch = $v;
  38. $question = Dever::db('work/question')->state(array('branch_id'=>$dbranch['id']));
  39. $question = array_keys($question);
  40. $data['info']['app'] = Dever::db('work/info')->getCount(array('question'=>$question,'end'=>$end));
  41. $data['info']['xu'] = Dever::db('work/info')->getCount(array('group'=>$dbranch['group_id'],'end'=>$end,'status'=>2));
  42. $admin = explode(',',$dbranch['group']);
  43. if ($dbranch['coor']) {
  44. $coor = explode(',',$dbranch['coor']);
  45. if (isset($coor) && $coor[0] && $coor[0] >0) {
  46. $people = $dbranch['coor'].','.$admin[1];
  47. } else {
  48. $people = $admin[1];
  49. }
  50. } else {
  51. $people = $admin[1];
  52. }
  53. $data['info']['yi'] = Dever::db('work/info')->getCount(array('fpeople'=>$people,'end'=>$end,'status'=>'3,4'));
  54. $data['question'] = Dever::db('work/question')->getAll(array('branch_id'=>$dbranch['id']));
  55. $question = implode(',',$question);
  56. if ($question) {
  57. $data['app'] = Dever::db('work/info')->fetchAll('select * from churen_work_info where (`group` in ('.$dbranch['group_id'].') or fpeople in ('.$people.') or question in ('.$question.')) and cdate <='.$end.' and state = 1');
  58. foreach ($data['app'] as $k1 => $v1) {
  59. $data['app'][$k1]['cdate'] = date('Y-m-d H:i:s',$v1['cdate']);
  60. $data['app'][$k1]['zhipai'] = date('Y-m-d H:i:s',$v1['zdate']);
  61. $data['app'][$k1]['chu'] = date('Y-m-d H:i:s',$v1['chdate']);
  62. $cate = Dever::db('work/q_cate')->find($v1['cate_id']);
  63. $data['app'][$k1]['cate_name'] = $cate['name'];
  64. $priority = Dever::db('work/priority')->find($v1['priority_id']);
  65. $data['app'][$k1]['priority_name'] = $priority['name'];
  66. $data['app'][$k1]['status']= Dever::status($config,$v1['status']);
  67. }
  68. }
  69. $msg = array();
  70. $msg['admin_email'] = $fsadmin['email'];
  71. $msg['admin_username'] = $fsadmin['username'];
  72. $msg['app'] = $data['info']['app'];
  73. $msg['xu'] = $data['info']['xu'];
  74. $msg['yi'] = $data['info']['yi'];
  75. $res = Dever::log($msg, 'work');
  76. return Dever::render('email', $data);
  77. }
  78. #代理商统计发送邮件
  79. public function send($email, $username, $title, $content)
  80. {
  81. $config = Dever::config('base', 'project')->email;
  82. Dever::apply('src/PHPMailer', 'email');
  83. Dever::apply('src/Exception', 'email');
  84. Dever::apply('src/SMTP', 'email');
  85. $mail = new \PHPMailer\PHPMailer\PHPMailer();
  86. $mail->isSMTP();
  87. //$mail->SMTPDebug = 2;
  88. $mail->CharSet = 'UTF-8';
  89. $mail->Host = $config['smtp'];
  90. $mail->Port = 465;
  91. $mail->SMTPSecure = 'ssl';
  92. $mail->SMTPAuth = true;
  93. $mail->Username = $config['username'];
  94. $mail->Password = $config['password'];
  95. $mail->setFrom($config['from'][0], '统计');
  96. $mail->addAddress($email, $username);
  97. $mail->Subject = "=?utf-8?B?" . base64_encode($title) . "?=";
  98. $mail->Body = $content;
  99. $mail->isHTML(true);
  100. //$mail->addAttachment($file);
  101. if (!$mail->send()) {
  102. Dever::alert("Mailer Error: " . $mail->ErrorInfo);
  103. } else {
  104. return 'ok';
  105. }
  106. }
  107. #同步info表中的product
  108. public function product_api()
  109. {
  110. $data = Dever::db('work/info')->state();
  111. if ($data) {
  112. foreach ($data as $k => $v) {
  113. if (!$v['product'] || $v['product']<=0) {
  114. $cate = explode(',',$v['cate_id']);
  115. if (isset($cate[1]) && $cate[1]) {
  116. $product = Dever::db('work/question')->find($cate[1]);
  117. if ($product) {
  118. $where['where_id'] = $v['id'];
  119. $where['product'] = $product['product_id'];
  120. Dever::db('work/info')->update($where);
  121. }
  122. }
  123. }
  124. }
  125. }
  126. }
  127. public function updateTime_api()
  128. {
  129. $data = Dever::db('work/info')->state();
  130. foreach ($data as $k => $v) {
  131. if (!$v['fpeople'] && ($v['status'] == 3 || $v['status'] == 4)) {
  132. $app = Dever::db('work/appoint')->getAdmin(array('info_id'=>$v['id'],'admin'=>$v['audit_admin']));
  133. if ($app && $app['admin']) {
  134. $update['fpeople'] = $app['admin'];
  135. } else {
  136. if ($v['branch_id']) {
  137. $branch = explode(',',$v['branch_id']);
  138. if (isset($branch[1]) && $branch[1]) {
  139. $update['fpeople'] = $branch[1];
  140. }
  141. } else {
  142. $update['fpeople'] = $v['audit_admin'];
  143. }
  144. }
  145. $update['where_id'] = $v['id'];
  146. Dever::db('work/info')->update($update);
  147. }
  148. }
  149. }
  150. public function user_api()
  151. {
  152. $num = Dever::input('num', 1);
  153. $start = Dever::input('start', date('Y-m-d', strtotime('-'.$num.' day')));
  154. $end = Dever::input('end', date('Y-m-d'));
  155. $start = Dever::maketime($start . ' 00:00:00');
  156. $end = Dever::maketime($end . ' 23:59:59');
  157. $day = intval(($end - $start)/86400);
  158. for($i=0; $i<=$day; $i++) {
  159. $where['start'] = $start + 86400*$i;
  160. $where['end'] = $start + 86400*$i + 86399;
  161. $where['priority_id'] = '';
  162. $cate = Dever::db('work/q_cate')->state();
  163. foreach ($cate as $k =>$v) {
  164. $where['cate'] = $v['id'];
  165. unset($where['priority_id']);
  166. $num = Dever::db('work/info')->getNum($where);
  167. if ($num <= 0) {
  168. continue;
  169. }
  170. $data = array();
  171. $data['cate'] = $where['cate'];
  172. $data['day'] = $where['start'];
  173. $info = Dever::db('work/info_stat')->find($data);
  174. $data['question'] = $num;
  175. $where['priority_id'] = 4;
  176. $data['super'] = Dever::db('work/info')->getNum($where);
  177. $where['priority_id'] = 3;
  178. $data['urgent'] = Dever::db('work/info')->getNum($where);
  179. $where['priority_id'] = 2;
  180. $data['yb'] = Dever::db('work/info')->getNum($where);
  181. $where['priority_id'] = 1;
  182. $data['pt'] = Dever::db('work/info')->getNum($where);
  183. // echo dever::sql();
  184. // print_r($data);
  185. if (!$info) {
  186. Dever::db('work/info_stat')->insert($data);
  187. } else {
  188. $data['where_id'] = $info['id'];
  189. Dever::db('work/info_stat')->update($data);
  190. }
  191. }
  192. }
  193. return 'ok';
  194. }
  195. #修改info表中的问题分类
  196. public function updateCate_api()
  197. {
  198. $data = Dever::db('work/info')->state();
  199. foreach ($data as $k => $v) {
  200. if (!$v['cate'] || $v['cate']<=0) {
  201. if ($v['cate_id']) {
  202. $cate_id = explode(',',$v['cate_id']);
  203. $where['where_id'] = $v['id'];
  204. $where['cate'] = $cate_id[0];
  205. Dever::db('work/info')->update($where);
  206. }
  207. }
  208. }
  209. }
  210. }