Manage.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <?php
  2. namespace Work\Lib;
  3. use Dever;
  4. Class Manage
  5. {
  6. public function getCoor_api()
  7. {
  8. $id = Dever::input('id');
  9. $info = false;
  10. if ($id) {
  11. $info = Dever::db('work/branch')->one($id);
  12. }
  13. $group = Dever::input('group');
  14. $temp = explode(',', $group);
  15. $group_id = $temp[0];
  16. $admin_id = false;
  17. if (isset($temp[1])) {
  18. $admin_id = $temp[1];
  19. } else {
  20. return 'no';
  21. }
  22. $admin = Dever::load('manage/company')->getAdmin($group_id, $admin_id);
  23. $config = array();
  24. $config['struct']['coor'] = array
  25. (
  26. 'type' => 'varchar-2000',
  27. 'name' => '协调人',
  28. 'default' => '',
  29. 'desc' => '请先选择协调人',
  30. 'match' => 'option',
  31. 'update' => 'checkbox',
  32. 'value' => $info ? $info['coor'] : false,
  33. 'option' => $admin,
  34. );
  35. $data = array();
  36. $result = Dever::load('manage/database')->update_struct($config, false, array(), -1, '', true);
  37. return implode('', $result);
  38. }
  39. public function setInfoStatus_api ()
  40. {
  41. $id = Dever::input('id');
  42. $status = Dever::input('status');
  43. $type = Dever::input('type');
  44. if ($id) {
  45. $data = Dever::db('work/info')->find($id);
  46. $where['where_id'] = $id;
  47. if ($type == 1) {
  48. $where['status'] = 4;
  49. } else {
  50. $where['status'] = 3;
  51. }
  52. $where['fdate'] = time();
  53. $where['chdate'] = time();
  54. Dever::db('work/info')->update($where);
  55. $log = Dever::db('work/info_log')->find(array('info_id'=>$id));
  56. $w['where_id'] = $log['id'];
  57. $w['fdate'] = time();
  58. if($type == 1){
  59. $w['cloce_date'] = time();
  60. }
  61. Dever::db('work/info_log')->update($w);
  62. return 'ok';
  63. }
  64. }
  65. public function updateInfo($id,$name,$data)
  66. {
  67. $mobile = Dever::param('mobile',$data);
  68. $name = Dever::param('name',$data);
  69. $user = Dever::db('work/user')->find(array('mobile'=>$mobile));
  70. if ($user) {
  71. if ($name && $user['name'] != $name) {
  72. Dever::db('work/user')->update(array('where_id'=>$user['id'],'name'=>$name));
  73. }
  74. } else {
  75. $member = Dever::db('agent/member')->find(array('mobile'=>$mobile));
  76. if ($member) {
  77. $insert['agent_uid'] = $member['id'];
  78. }
  79. $option = Dever::db('option/member')->find(array('mobile'=>$mobile));
  80. if ($option) {
  81. $insert['option_uid'] = $option['id'];
  82. }
  83. $passport = Dever::db('passport/user')->find(array('mobile'=>$mobile));
  84. if ($passport) {
  85. $insert['passport_uid'] = $passport['uid'];
  86. }
  87. if ($name) {
  88. $insert['name'] = $name;
  89. }
  90. $insert['mobile'] = $mobile;
  91. if ($insert) {
  92. Dever::db('work/user')->insert($insert);
  93. }
  94. }
  95. $info = Dever::db('work/info')->find($id);
  96. if ($info && !$info['work_num']) {
  97. $w['where_id'] = $id;
  98. $w['work_num'] = $this->getWorkId();
  99. Dever::db('work/info')->update($w);
  100. }
  101. }
  102. public function getWorkId()
  103. {
  104. $where['work_num'] = Dever::order('W');
  105. $state = Dever::db('work/info')->one($where);
  106. if (!$state) {
  107. return $where['work_num'];
  108. } else {
  109. return $this->getWorkId();
  110. }
  111. }
  112. public function getUser($id)
  113. {
  114. $info = Dever::db('work/info')->find($id);
  115. $data= Dever::db('work/user')->find(array('mobile'=>$info['mobile']));
  116. if ($data) {
  117. $html['user'] = $data['name'].'<br/>'.$data['mobile'];
  118. if (isset($info['fdate']) && $info['fdate']) {
  119. $fdate = date('Y-m-d H:i:s',$info['fdate']);
  120. } else {
  121. $fdate = '';
  122. }
  123. $html['time'] = date('Y-m-d H:i:s',$info['cdate']).'<br/>'.$fdate;
  124. $cate_id = explode(',',$info['cate_id']);
  125. $cate_name = '';
  126. $question_name = '';
  127. if (isset($cate_id[0]) && $cate_id[0]) {
  128. $cate = Dever::db('work/q_cate')->find($cate_id[0]);
  129. $cate_name = $cate['name'];
  130. }
  131. if (isset($cate_id[1]) && $cate_id[1]) {
  132. $question = Dever::db('work/question')->find($cate_id[1]);
  133. $question_name = $question['name'];
  134. }
  135. $html['cate_name'] = $cate_name.'<br/>'.$question_name;
  136. return $html;
  137. } else {
  138. return '';
  139. }
  140. }
  141. public function xietiao_api($id)
  142. {
  143. $data = Dever::db('work/branch')->find($id);
  144. $data['group'] = explode(',',$data['group']);
  145. $group = Dever::db('manage/group')->find($data['group'][0]);
  146. $admin = Dever::load('manage/company')->getAdmin($group['id'], $data['group'][1]);
  147. $gad = Dever::db('manage/admin')->find($data['group'][1]);
  148. $res = array();
  149. foreach ($admin as $k => $v) {
  150. $res[$k] = $v['username'].'<br/>'.$v['email'];
  151. }
  152. $total = Dever::db('work/info')->getquestTotal(array('group'=>$data['group'][0]));
  153. $html = array();
  154. $html['group'] = $group['name'].'<br/>'.$gad['username'];
  155. $html['name'] = implode('<br/>',$res);
  156. $html['num'] = $total;
  157. return $html;
  158. }
  159. #获取客户信息
  160. public function search_api()
  161. {
  162. $value = Dever::input('value');
  163. if(!preg_match('/^1[3|5|6|7|8|9]\d{9}$/', $value)){
  164. return '代理商手机号不正确';
  165. }
  166. if ($value) {
  167. $name = '';
  168. $role_name = '';
  169. $user = Dever::db('work/user')->find(array('mobile'=>$value));
  170. if(!$user) {
  171. $member = Dever::db('agent/member')->find(array('mobile'=>$value));
  172. if ($member) {
  173. $name = $member['name'];
  174. $type = "代理商";
  175. $role = Dever::db('setting/role')->find($member['role']);
  176. if ($role ) {
  177. $role_name = $role['name'];
  178. }
  179. $option = Dever::db('option/member')->find(array('mobile'=>$value));
  180. if ($option) {
  181. $type = $type.'<br/>期权账户';
  182. $passport = Dever::db('passport/user')->find(array('mobile'=>$value));
  183. if ($passport) {
  184. $type = $type.'<br/>小程序';
  185. }
  186. } else {
  187. $passport = Dever::db('passport/user')->find(array('mobile'=>$value));
  188. if ($passport) {
  189. $type = $type.'<br/>小程序';
  190. }
  191. }
  192. } else {
  193. $option = Dever::db('option/member')->find(array('mobile'=>$value));
  194. if ($option) {
  195. $name = $option['name'];
  196. $type = '期权账户';
  197. $passport = Dever::db('passport/user')->find(array('mobile'=>$value));
  198. if ($passport) {
  199. $type = $type.'<br/>小程序';
  200. }
  201. } else {
  202. $passport = Dever::db('passport/user')->find(array('mobile'=>$value));
  203. if ($passport) {
  204. $name = $passport['username'];
  205. $type = '小程序';
  206. } else {
  207. $type = '无系统关联关系';
  208. }
  209. }
  210. }
  211. } else {
  212. $name = $user['name'];
  213. $type = '客服系统用户';
  214. if ($user['agent_uid'] && $user['agent_uid'] > 0) {
  215. $member = Dever::db('agent/member')->find($user['agent_uid']);
  216. $role = Dever::db('setting/role')->find($member['role']);
  217. if ($role) {
  218. $role_name = $role['name'];
  219. }
  220. $type = $type.'<br/>代理商';
  221. }
  222. if ($user['option_uid'] && $user['option_uid'] > 0) {
  223. $type = $type.'<br/>期权账户';
  224. }
  225. if ($user['passport_uid'] && $user['passport_uid'] > 0) {
  226. $type = $type.'<br/>小程序';
  227. }
  228. }
  229. $table = array();
  230. if ($name && $role_name) {
  231. $table['head'] = array('名称', '电话号码', '平台' ,'角色');
  232. $table['body'] = array($name, $value, $type, $role_name);
  233. } elseif ($name && !$role_name) {
  234. $table['head'] = array('名称', '电话号码', '平台');
  235. $table['body'] = array($name, $value, $type);
  236. } elseif (!$name && $role_name) {
  237. $table['head'] = array('电话号码', '平台' ,'角色');
  238. $table['body'] = array($value, $type, $role_name);
  239. } else if (!$name && !$role_name) {
  240. $table['head'] = array('电话号码', '平台');
  241. $table['body'] = array($value, $type );
  242. }
  243. $result[] = array
  244. (
  245. 'type' => 'table',
  246. 'content' => $table,
  247. );
  248. $html = Dever::show('', $result, false, false);
  249. return array('html' => $html, 'data' => array('name' => $name));
  250. }
  251. }
  252. public function admin($id)
  253. {
  254. $data = Dever::db('work/product')->find(array($id));
  255. $admin_id = explode(',',$data['admin_id']);
  256. $admin = Dever::db('manage/admin')->find($admin_id[1]);
  257. if ($admin) {
  258. return $admin['username'].'<br/>'.$admin['email'];
  259. }
  260. }
  261. public function branch($id)
  262. {
  263. $group = Dever::db('manage/group')->find($id);
  264. return $group['name'];
  265. }
  266. #工单列表导出
  267. public function out_info($data)
  268. {
  269. $header = array('客户名称','手机号','问题类型','问题类型描述','优先级','问题描述','处理结果','创建时间','完成时间');
  270. $body = array();
  271. $config = Dever::db('work/info')->config['config_status'];
  272. foreach ($data as $k => $v ) {
  273. $cate_name = '';
  274. $cate_id = explode(',',$v['cate_id']);
  275. if (isset($cate_id[0]) && $cate_id[0]) {
  276. $cate = Dever::db('work/q_cate')->find(array('id'=>$cate_id[0]));
  277. if ($cate) {
  278. $cate_name = $cate['name'];
  279. }
  280. }
  281. $question_name = '';
  282. if (isset($cate_id[1]) && $cate_id[1]) {
  283. $question = Dever::db('work/question')->find(array('id'=>$cate_id[1]));
  284. if ($question) {
  285. $question_name = $question['name'];
  286. }
  287. }
  288. $priority_name = '';
  289. $priority = Dever::db('work/priority')->find(array('id'=>$v['priority_id']));
  290. if ($priority) {
  291. $priority_name = $priority['name'];
  292. }
  293. $status_name = Dever::status($config,$v['status']);
  294. $cdate = date('Y-m-d H:i',$v['cdate']);
  295. $fdate = '';
  296. if ($v['fdate']){
  297. $fdate = date('Y-m-d H:i',$v['fdate']);
  298. }
  299. $d = array
  300. (
  301. $v['name'],
  302. $v['mobile'],
  303. $cate_name,
  304. $question_name,
  305. $priority_name,
  306. $v['desc'],
  307. $status_name,
  308. $cdate,
  309. $fdate,
  310. );
  311. $body[] = $d;
  312. }
  313. $file = Dever::input('excel_name');
  314. return Dever::excelExport($body, $header, $file);
  315. }
  316. public function getTotal($admin_id,$status=false)
  317. {
  318. $company = Dever::load('manage/company.get');
  319. $where = array();
  320. if ($status){
  321. $where['status'] = $status;
  322. $where['appoint_id'] = $admin_id;
  323. } else {
  324. $where['audit_admin'] = $admin_id;
  325. }
  326. if ($company) {
  327. $where['company_id'] = $company;
  328. }
  329. $data = Dever::db('work/info')->getTotal($where);
  330. return $data;
  331. }
  332. }