Appoint.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. <?php
  2. namespace Work\lib;
  3. use Dever;
  4. Class Appoint
  5. {
  6. public function startBranch($id,$name,$data)
  7. {
  8. // Dever::config('base')->hook = true;
  9. $group = Dever::param('group',$data);
  10. // $id = Dever::param('id',$data);
  11. if ($group) {
  12. $res = Dever::db('work/branch')->find(array('group_id'=>$group[0]));
  13. if ($res && isset($id['where_id']) && $id['where_id']){
  14. if ($res['id'] != $id['where_id']){
  15. Dever::alert('部门已存在');
  16. }
  17. } else {
  18. Dever::alert('部门已存在');
  19. }
  20. }
  21. }
  22. public function updateBranch($id,$name,$data)
  23. {
  24. // Dever::config('base')->hook = true;
  25. $group = Dever::param('group',$data);
  26. if($group) {
  27. $where['where_id'] = $id;
  28. $where['group_id'] = $group[0];
  29. Dever::db('work/branch')->update($where);
  30. }
  31. }
  32. public function updateAppoint($id,$name,$data)
  33. {
  34. Dever::config('base')->hook = true;
  35. $info_id = Dever::param('info_id',$data);
  36. $branch = Dever::param('admin_id',$data);
  37. if ($info_id ) {
  38. $info = Dever::db('work/info')->find($info_id);
  39. $admin = Dever::load('manage/auth.info');
  40. $admin_id = $info['audit_admin'];
  41. if ($info['audit_admin'] != $admin['id']) {
  42. $admin_id = $admin['id'];
  43. }
  44. if($info) {
  45. if ($branch) {
  46. $i['where_id'] = $info['id'];
  47. if ($info['group']) {
  48. $group = $info['group'].',';
  49. } else {
  50. $group = $branch[0];
  51. }
  52. if (isset($branch[1]) && $branch[1]) {
  53. $i['appoint_id'] = $branch[1];
  54. }
  55. $i['group'] = $group;
  56. $i['zdate'] = time();
  57. $i['chdate'] = time();
  58. $i['status'] = 2;
  59. if ($i) {
  60. Dever::db('work/info')->update($i);
  61. }
  62. }
  63. $w['info_id'] = $info['id'];
  64. $w['admin_id'] = $admin_id;
  65. $w['appoint_id'] = $id;
  66. Dever::db('work/info_log')->insert($w);
  67. }
  68. if ($branch) {
  69. $data = Dever::db('work/branch')->find(array('group_id'=>$branch[0]));
  70. if ($data) {
  71. $where['where_id'] = $data['id'];
  72. $where['num'] = $data['num'] +1;
  73. Dever::db('work/branch')->update($where);
  74. }
  75. $wh['where_id'] = $id;
  76. $wh['group'] = $branch[0];
  77. Dever::db('work/appoint')->update($wh);
  78. }
  79. }
  80. }
  81. #指派人
  82. private $default = array
  83. (
  84. 'value' => -1,
  85. 'name' => '不选择',
  86. );
  87. private $search_default = array
  88. (
  89. 'value' => -1,
  90. 'name' => '部门',
  91. );
  92. public function get_api()
  93. {
  94. # 联动总数,默认到部门
  95. $level_total = Dever::input('level_total', 1);
  96. # 当前联动级别
  97. $level_num = Dever::input('level_num');
  98. # 一般为id
  99. $level_id = Dever::input('level_id');
  100. # 是否是搜索列表页
  101. $level_search = Dever::input('level_search');
  102. if ($level_search) {
  103. $default = $this->search_default;
  104. if ($level_num == 1) {
  105. $default['name'] = '部门选择';
  106. } elseif ($level_num == 2) {
  107. $default['name'] = '组员选择';
  108. }
  109. } else {
  110. $default = $this->default;
  111. }
  112. // if ($level_id < 0) {
  113. // Dever::alert('error');
  114. // }
  115. if ($level_num == 1) {
  116. $data = $this->group();
  117. } elseif ($level_num == 2) {
  118. $data = $this->group_admin($level_id);
  119. }
  120. if (!$data) {
  121. Dever::alert('error');
  122. }
  123. if ($level_search || $level_num >= 1) {
  124. array_unshift($data, $default);
  125. }
  126. $result['level_total'] = $level_total;
  127. $result['list'] = $data;
  128. return $result;
  129. }
  130. public function group(){
  131. $data = Dever::load('manage/company')->getGroup();
  132. foreach ($data as $k => $v) {
  133. $data[$k]['value'] = $v['id'];
  134. }
  135. return $data;
  136. }
  137. public function group_admin($level_id){
  138. $data = Dever::load('manage/company')->getAdmin($level_id);
  139. foreach ($data as $k => $v) {
  140. foreach ($v as $k1 => $v1) {
  141. $data[$k]['value'] = $v['id'];
  142. $data[$k]['name'] = $v['username'];
  143. }
  144. }
  145. return $data;
  146. }
  147. public function show_api()
  148. {
  149. $info_id = Dever::input('id');
  150. $data['info'] = Dever::db('work/info')->find($info_id);
  151. $ztime = $data['info']['cdate'];
  152. $data['info']['cdate'] = date('Y-m-d H:i',$data['info']['cdate']);
  153. $priority = Dever::db('work/priority')->find($data['info']['priority_id']);
  154. $data['info']['priority_name'] = $priority['name'];
  155. $data['info']['color'] = $priority['color'];
  156. $admin = Dever::db('manage/admin')->find($data['info']['audit_admin']);
  157. $group = Dever::db('manage/group')->find($admin['group']);
  158. $data['info']['admin'] = $group['name'].' / '.$admin['username'];
  159. if ($data['info']['source']) {
  160. $source = Dever::db('work/q_source')->find($data['info']['source']);
  161. if ($source) {
  162. $data['info']['source_name'] = $source['name'];
  163. }
  164. }
  165. if ($data['info']['question_id']) {
  166. $question = Dever::db('work/question')->find($data['info']['question_id']);
  167. if ($question) {
  168. $product = Dever::db('work/product')->find($question['product_id']);
  169. if ($product) {
  170. $data['info']['product_name'] = $product['name'];
  171. }
  172. }
  173. }
  174. $data['info']['role_name'] = '';
  175. $user = Dever::db('work/user')->find(array('mobile'=>$data['info']['mobile']));
  176. if ($user) {
  177. $data['info']['user_name'] = $user['name'];
  178. $data['info']['mobile'] = $user['mobile'];
  179. $data['info']['idcard'] = $user['idcard'];
  180. if ($user['agent_uid'] && $user['agent_uid']>0) {
  181. $member = Dever::db('agent/member')->find($user['agent_uid']);
  182. if ($member && $member['role']) {
  183. $role = Dever::db('setting/role')->find($member['role']);
  184. if ($role) {
  185. $data['info']['role_name'] = $role['name'];
  186. }
  187. }
  188. }
  189. }
  190. $data['info']['cate_name'] = '';
  191. if ($data['info']['cate_id']) {
  192. $cate = Dever::db('work/q_cate')->find($data['info']['cate_id']);
  193. if ($cate && $question) {
  194. $data['info']['cate_name'] = $cate['name'].' / '.$question['name'];
  195. }
  196. }
  197. if ($data['info']['pic']) {
  198. $data['info']['pic'] = explode(',',$data['info']['pic']);
  199. }
  200. $data['info_log'] = Dever::db('work/info_log')->getAll(array('info_id'=>$info_id));
  201. foreach ($data['info_log'] as $k => $v) {
  202. $data['info_log'][$k]['cdate'] = date('Y-m-d H:i:s',$v['cdate']);
  203. $admin = Dever::db('manage/admin')->find($v['admin_id']);
  204. $admin_group = Dever::db('manage/group')->find($admin['group']);
  205. $data['info_log'][$k]['admin_group'] = $admin_group['name'].' / '.$admin['username'];
  206. $appoint = Dever::db('work/appoint')->find($v['appoint_id']);
  207. if (isset($appoint) && $appoint) {
  208. $data['info_log'][$k]['desc'] = $appoint['desc'];
  209. $appoint_admin = explode(',',$appoint['admin_id']);
  210. $appoint_group = Dever::db('manage/group')->find($appoint_admin[0]);
  211. $appoint_ad = Dever::db('manage/admin')->find($appoint_admin[1]);
  212. if ($appoint_admin && $appoint_ad) {
  213. $data['info_log'][$k]['appoint_admin'] = $appoint_group['name'].' / '.$appoint_ad['username'];
  214. }
  215. }
  216. $data['info_log'][$k]['image'] = '';
  217. if ($appoint['video']) {
  218. $data['info_log'][$k]['video'] = $appoint['video'];
  219. }
  220. if ($appoint['pic']) {
  221. $data['info_log'][$k]['pic'] = explode(',',$appoint['pic']);
  222. }
  223. }
  224. $data['s_zhi'] = array();
  225. $data['s_zhi']['cdate'] = date('Y-m-d H:i',time());
  226. $data['zhi'] = Dever::db('work/appoint')->getAll(array('info_id'=>$info_id));
  227. foreach ($data['zhi'] as $k => $v) {
  228. $time = $v['cdate'] - $ztime;
  229. $data['zhi'][$k]['time'] = floor($time%86400/3600).'小时'.floor($time%3600/60).'分钟'.floor($time%60).'秒';
  230. $admin = explode(',',$v['admin_id']);
  231. $group = Dever::db('manage/group')->find($admin[0]);
  232. $adm = Dever::db('manage/admin')->find($admin[1]);
  233. $data['zhi'][$k]['admin'] = $group['name'].' / '.$adm['username'];
  234. $data['zhi'][$k]['cdate'] = date('Y-m-d H:i',$v['cdate']);
  235. $info_log = Dever::db('work/info_log')->find(array('appoint_id'=>$v['id']));
  236. if ($info_log && $info_log['fdate']) {
  237. $data['zhi'][$k]['finish'] = '完成关闭';
  238. $data['zhi'][$k]['time'] ='';
  239. } else {
  240. if ($info_log && $info_log['cloce_date']) {
  241. $data['zhi'][$k]['finish'] = '取消关闭';
  242. $data['zhi'][$k]['time'] ='';
  243. } else {
  244. $data['zhi'][$k]['finish'] = '';
  245. $data['zhi'][$k]['time'] = floor($time%86400/3600).'小时'.floor($time%3600/60).'分钟'.floor($time%60).'秒';
  246. }
  247. }
  248. }
  249. $data['hui'] = Dever::url('project/database/update?project=work&table=appoint&search_option_info_id='.$info_id, 'manage');
  250. return Dever::render('index', $data);
  251. }
  252. #发送邮件
  253. public function email_api()
  254. {
  255. $start=mktime(0,0,0,date('m'),date('d'),date('Y'));
  256. $end = $start+86400-1;
  257. $config = Dever::db('work/info')->config['config_status'];
  258. $data['branch'] = Dever::db('work/branch')->state(array('type'=>1));
  259. if ($data['branch']) {
  260. foreach($data['branch'] as $k => $v) {
  261. $data['info']['app'] = Dever::db('work/appoint')->getEmail(array('group'=>$v['group'],'start'=>$start,'end'=>$end));
  262. $data['info']['xu'] = Dever::db('work/info')->getCount(array('group'=>$v['group'],'start'=>$start,'end'=>$end,'status'=>1));
  263. $data['info']['yi'] = Dever::db('work/info')->getCount(array('group'=>$v['group'],'start'=>$start,'end'=>$end,'status'=>3));
  264. $data['info']['wei'] = Dever::db('work/info')->getCount(array('group'=>$v['group'],'start'=>$start,'end'=>$end,'status'=>'1,2,4'));
  265. $data['app'] = Dever::db('work/info')->getAll(array('group'=>$v['group'],'start'=>$start,'end'=>$end));
  266. foreach ($data['app'] as $k1 => $v1) {
  267. $data['app'][$k1]['cdate'] = date('Y-m-d H:i:s',$v1['cdate']);
  268. $data['app'][$k1]['zhipai'] = date('Y-m-d H:i:s',$v1['zdate']);
  269. $data['app'][$k1]['chu'] = date('Y-m-d H:i:s',$v1['chdate']);
  270. $cate = Dever::db('work/q_cate')->find($v1['cate_id']);
  271. $data['app'][$k1]['cate_name'] = $cate['name'];
  272. $priority = Dever::db('work/priority')->find($v1['priority_id']);
  273. $data['app'][$k1]['priority_name'] = $priority['name'];
  274. $data['app'][$k1]['status']= Dever::status($config,$v1['status']);
  275. }
  276. }
  277. }
  278. // print_R($data);die;
  279. return Dever::render('email', $data);
  280. }
  281. #代理商日统计
  282. public function index_api(){
  283. $title = '工单每日统计';
  284. $data = Dever::db('work/branch')->state(array('type'=>1));
  285. foreach ($data as $k => $v) {
  286. $group_id = explode(',',$v['group']);
  287. $admin[] = Dever::db('manage/admin')->find($group_id[1]);
  288. }
  289. $content = $this->email_api();
  290. foreach($admin as $key => $val){
  291. $this->send($val['email'], $val['username'], $title, $content);
  292. }
  293. }
  294. #代理商统计发送邮件
  295. public function send($email, $username, $title, $content)
  296. {
  297. $config = Dever::config('base', 'project')->email;
  298. Dever::apply('src/PHPMailer', 'email');
  299. Dever::apply('src/Exception', 'email');
  300. Dever::apply('src/SMTP', 'email');
  301. $mail = new \PHPMailer\PHPMailer\PHPMailer();
  302. $mail->isSMTP();
  303. //$mail->SMTPDebug = 2;
  304. $mail->CharSet = 'UTF-8';
  305. $mail->Host = $config['smtp'];
  306. $mail->Port = 465;
  307. $mail->SMTPSecure = 'ssl';
  308. $mail->SMTPAuth = true;
  309. $mail->Username = $config['username'];
  310. $mail->Password = $config['password'];
  311. $mail->setFrom($config['from'][0], '统计');
  312. $mail->addAddress($email, $username);
  313. $mail->Subject = "=?utf-8?B?" . base64_encode($title) . "?=";
  314. $mail->Body = $content;
  315. $mail->isHTML(true);
  316. //$mail->addAttachment($file);
  317. if (!$mail->send()) {
  318. Dever::alert("Mailer Error: " . $mail->ErrorInfo);
  319. } else {
  320. return 'ok';
  321. }
  322. }
  323. public function back_api(){
  324. $mobile = Dever::input('mobile');
  325. $data = array();
  326. if ($mobile) {
  327. if(!preg_match('/^1[3|5|6|7|8|9]\d{9}$/', $mobile)){
  328. // Dever::alert('代理商手机号不正确');
  329. return '代理商手机号不正确';
  330. }
  331. $user = Dever::db('work/user')->find(array('mobile'=>$mobile));
  332. if (!$user) {
  333. return '无系统关联关系';
  334. }
  335. if ($user){
  336. $table = array();
  337. $user['role_name'] = '';
  338. $user['type'] = '';
  339. if ($user['agent_uid'] && $user['agent_uid'] > 0) {
  340. $member = Dever::db('agent/member')->find($user['agent_uid']);
  341. if ($member['role']) {
  342. $role = Dever::db('setting/role')->find($member['role']);
  343. if ($role) {
  344. $user['role_name'] = $role['name'];
  345. }
  346. }
  347. $user['type'] = '代理商';
  348. if ($user['option_uid'] && $user['option_uid']>0) {
  349. $user['type'] = $user['type'].'<br/>期权账户';
  350. }
  351. if ($user['passport_uid'] && $user['passport_uid']>0) {
  352. $user['type'] = $user['type'].'<br/>小程序';
  353. }
  354. } else {
  355. if ($user['option_uid'] && $user['option_uid']>0) {
  356. $user['type'] = '期权账户';
  357. if ($user['passport_uid'] && $user['passport_uid']>0) {
  358. $user['type'] = $user['type'].'<br/>小程序';
  359. }
  360. } else {
  361. if ($user['passport_uid'] && $user['passport_uid']>0) {
  362. $user['type'] = '小程序';
  363. } else {
  364. return '无系统关联关系';
  365. }
  366. }
  367. }
  368. if ($user['agent_uid']) {
  369. $user['order'] = Dever::url('project/database/list?project=agent&table=order&p=1&search_option_mid='.$user['agent_uid'], 'manage');
  370. $user['agent'] = Dever::url('project/database/list?project=agent&table=member_area&mid='.$user['agent_uid'].'&page_type=1&search_auth=1&page_type=1&jump=19','manage');
  371. // ('project/database/list?project=agent&table=member&search_option_id='.$user['agent_uid'], 'manage');
  372. $user['soft'] = Dever::url('project/database/list?project=agent&table=soft_cash&search_option_mid='.$user['agent_uid'], 'manage');
  373. }
  374. if ($user['option_uid']) {
  375. $user['option'] = Dever::url('project/database/list?project=option&table=member&search_option_id='.$user['option_uid'], 'manage');
  376. }
  377. $user['work'] = Dever::url('project/database/update?project=work&table=info&menu=work', 'manage');
  378. $data['user'] = $user;
  379. $data['info'] = Dever::db('work/info')->getHAll(array('mobile'=>$mobile));
  380. $config = Dever::db('work/info')->config['config_status'];
  381. foreach($data['info'] as $k => $v) {
  382. $data['info'][$k]['cdate'] = date('Y-m-d H:i',$v['cdate']);
  383. $data['info'][$k]['fdate'] = date('Y-m-d H:i',$v['fdate']);
  384. $cate = Dever::db('work/q_cate')->find(array('id'=>$v['cate_id']));
  385. $data['info'][$k]['cate_name'] = $cate['name'];
  386. $you = Dever::db('work/priority')->find(array('id'=>$v['priority_id']));
  387. $data['info'][$k]['you'] = $you['name'];
  388. $group = Dever::db('manage/group')->find(array('id'=>$v['branch_id']));
  389. $data['info'][$k]['branch'] = $group['name'];
  390. $data['info'][$k]['status'] = Dever::status($config,$v['status']);
  391. $data['info'][$k]['url'] = Dever::url('lib/appoint.show&id='.$v['id'],'work');
  392. if ($v['status']<3) {
  393. $data['info'][$k]['zhipai'] = Dever::url('project/database/update?project=work&table=appoint&search_option_info_id='.$v['id'], 'manage');
  394. } else {
  395. $data['info'][$k]['zhipai'] = '';
  396. }
  397. }
  398. }
  399. $data['page'] = Dever::page("current");
  400. }
  401. // print_R($data);die;
  402. return Dever::render('back', $data);
  403. }
  404. }