Ext.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. <?php
  2. namespace app\service\controller;
  3. use think\cache\driver\Redis;
  4. use think\Request;
  5. use think\Db;
  6. use app\admin\model\Advertisement;
  7. use app\admin\model\Users;
  8. use app\admin\model\Admins;
  9. use app\admin\model\ServiceLog;
  10. use app\admin\model\ChatLog;
  11. use app\service\model\Alarm;
  12. use app\service\model\Accounts;
  13. /**
  14. * 客服系统 Event 接口
  15. */
  16. class Ext extends Common
  17. {
  18. public function __construct(Request $request = null)
  19. {
  20. parent::__construct($request);
  21. // 验证token.
  22. $this->doTokenCheck();
  23. }
  24. //获取广告数据
  25. public function getAdinfo()
  26. {
  27. $model = new Advertisement();
  28. $ret = $model->where('advertisement_status', 1)->select();
  29. return json(['code' => 1, 'data' => $ret, 'msg' => '成功']);
  30. }
  31. //更具id获取客服信息
  32. public function getKfbyid()
  33. {
  34. $id = intval(input('post.id', 0));
  35. if (empty($id)) {
  36. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  37. }
  38. $model = Users::get($id);
  39. if ($model) {
  40. return json(['code' => 1, 'data' => $model, 'msg' => '成功']);;
  41. } else {
  42. return json(['code' => 0, 'data' => [], 'msg' => '无此用户']);;
  43. }
  44. }
  45. //更具id获取 用户 信息
  46. public function getUserbyid()
  47. {
  48. $id = intval(input('post.id', 0));
  49. if (empty($id)) {
  50. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  51. }
  52. $model = Accounts::get($id);
  53. if ($model) {
  54. return json(['code' => 1, 'data' => $model, 'msg' => '成功']);;
  55. } else {
  56. return json(['code' => 0, 'data' => [], 'msg' => '无此用户']);;
  57. }
  58. }
  59. //更具token 查管理员
  60. public function getAdminbytoken()
  61. {
  62. $token = trim(input('post.token', ''));
  63. if (empty($token)) {
  64. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  65. }
  66. $model = new Admins();
  67. $model = $model->where('token', $token)->find();
  68. if ($model) {
  69. return json(['code' => 1, 'data' => $model, 'msg' => '成功']);;
  70. } else {
  71. return json(['code' => 0, 'data' => [], 'msg' => '无此用户']);;
  72. }
  73. }
  74. //更具工单ID查工单
  75. public function getServerbyid()
  76. {
  77. $id = intval(input('post.id', 0));
  78. if (empty($id)) {
  79. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  80. }
  81. $model = ServiceLog::get($id);
  82. if ($model) {
  83. return json(['code' => 1, 'data' => $model, 'msg' => '成功']);;
  84. } else {
  85. return json(['code' => 0, 'data' => [], 'msg' => '无此数据']);;
  86. }
  87. }
  88. //添加工单
  89. public function addService()
  90. {
  91. $datas = [
  92. 'user_id' => input('post.user_id', 0),
  93. 'client_id' => input('post.client_id', ''),
  94. 'user_name' => input('post.user_name', ''),
  95. 'user_avatar' => input('post.user_avatar', ''),
  96. 'user_ip' => input('post.user_ip', ''),
  97. 'kf_id' => input('post.kf_id', 0),
  98. 'start_time' => input('post.start_time', ''),
  99. 'group_id' => input('post.group_id', ''),
  100. 'website' => input('post.website', ''),
  101. 'system' => input('post.system', ''),
  102. 'browse' => input('post.browse', ''),
  103. 'intime' => input('post.intime', ''),
  104. 'status' => input('post.status', ''),
  105. 'evaluate_id' => input('post.evaluate_id', ''),
  106. 'servicelog_close_type' => input('post.servicelog_close_type', ''),
  107. ];
  108. $id = Db::name('service_log')->insertGetId($datas);
  109. if ($id) {
  110. return json(['code' => 1, 'data' => ['service_id' => $id], 'msg' => 'success']);
  111. } else {
  112. return json(['code' => 0, 'data' => [], 'msg' => 'fails!']);
  113. }
  114. }
  115. //更新工单信息
  116. public function updateServerlog()
  117. {
  118. $id = intval(input('post.id', 0));
  119. if (empty($id)) {
  120. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  121. }
  122. $model = ServiceLog::get($id);
  123. if (!$model) {
  124. return json(['code' => 0, 'data' => [], 'msg' => '无此数据']);
  125. }
  126. $datas = [
  127. 'status' => input('post.status', 1),
  128. 'evaluate_id' => input('post.evaluate_id', 1),
  129. 'evaluate_content' => input('post.evaluate_content', 1),
  130. 'servicelog_close_type' => input('post.servicelog_close_type', 0),
  131. ];
  132. $ret = $model->save($datas, ['servicelog_id' => $id]);
  133. if ($ret) {
  134. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  135. } else {
  136. return json(['code' => 0, 'data' => [], 'msg' => 'faile']);
  137. }
  138. }
  139. //统计某个工单会话条数
  140. public function getSRcount()
  141. {
  142. $id = input('post.id', 0);
  143. $model = new ChatLog();
  144. $count = $model->selectChatLog(['servicelog_id' => $id]);
  145. return json(['code' => 1, 'data' => ['count' => $count], 'msg' => 'success']);
  146. }
  147. //初始化一条报警记录数据
  148. public function addSArecord()
  149. {
  150. $id = intval(input('post.id', 0));
  151. $model = new Alarm();
  152. $model->servicelog_id = $id;
  153. $ret = $model->save();
  154. if ($ret) {
  155. return json(['code' => 1, 'data' => ['alarm_id' => $model->alarm_id], 'msg' => 'success']);
  156. } else {
  157. return json(['code' => 0, 'data' => [], 'msg' => 'failse']);
  158. }
  159. }
  160. //获取某个工单的报敬记录数据
  161. public function getSAbyid()
  162. {
  163. $sid = intval(input('post.sid', 0));
  164. $aid = intval(input('post.aid', 0));
  165. $id = $sid ? $sid : $aid;
  166. $fild = $sid ? 'servicelog_id' : 'alarm_id';
  167. $where = ["$fild" => $id];
  168. $model = new Alarm();
  169. $record = $model->where($where)->find();
  170. if ($record) {
  171. return json(['code' => 1, 'data' => ['count' => $record], 'msg' => 'success']);
  172. } else {
  173. return json(['code' => 0, 'data' => [], 'msg' => 'faile']);
  174. }
  175. }
  176. //更新报警数据
  177. public function updateSArecord()
  178. {
  179. $id = intval(input('post.sid', 0));
  180. if (empty($id)) {
  181. return json(['code' => 0, 'data' => [], 'msg' => '参数错误!']);;
  182. }
  183. $model = Alarm::get(['servicelog_id' => $id]);
  184. if (!$model) {
  185. return json(['code' => 0, 'data' => [], 'msg' => '无此数据']);
  186. }
  187. $datas = [
  188. 'alarm_userSensitive' => input('post.alarm_userSensitive', 0),
  189. 'alarm_serverSensitive' => input('post.alarm_serverSensitive', 0),
  190. 'alarm_corresponding' => input('post.alarm_corresponding', 0),
  191. 'alarm_cvtOvertime' => input('post.alarm_cvtOvertime', 0),
  192. 'alarm_respond' => input('post.alarm_respond', 0),
  193. 'alarm_lineTime' => input('post.alarm_lineTime', 0),
  194. 'alarm_count' => input('post.alarm_count', 0),
  195. ];
  196. $ret = $model->save($datas, ['servicelog_id' => $id]);
  197. if ($ret) {
  198. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  199. } else {
  200. return json(['code' => 0, 'data' => [], 'msg' => 'faile']);
  201. }
  202. }
  203. //查询统计中间表记录
  204. public function countmidtabquery()
  205. {
  206. $dtype = input('post.dtype', '');
  207. $mdate = input('post.mdate', date("Y-m-d"));
  208. $ret = DB::name('countmidtable')->where(['dtype' => $dtype, 'mdate' => $mdate])->find();
  209. if ($ret) {
  210. return json(['code' => 1, 'data' => $ret, 'msg' => 'success']);
  211. } else {
  212. return json(['code' => 0, 'data' => [], 'msg' => 'faile']);
  213. }
  214. }
  215. //更新或新增统计中间统计表
  216. public function countmidtabupdate()
  217. {
  218. $id = input('post.id', 0);
  219. $dtype = input('post.dtype', '');
  220. $mdate = input('post.mdate', date("Y-m-d"));
  221. $dcontent = input('post.dcontent', '');
  222. $datatype = input('post.datatype', '');
  223. $flag = intval(input('post.flag', 0));
  224. if ($flag == 1) {
  225. $ret = Db::table('ws_countmidtable')->update(['datatype' => $datatype, 'dcontent' => $dcontent, 'id' => $id]);
  226. } else {
  227. $ret = Db::table('ws_countmidtable')->insert(['dtype' => $dtype, 'mdate' => $mdate, 'dcontent' => $dcontent, 'datatype' => $datatype]);
  228. }
  229. if ($ret) {
  230. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  231. } else {
  232. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  233. }
  234. }
  235. //获取系统配置
  236. public function getsysconfig()
  237. {
  238. $all = Db::name("systemconfig")->select();
  239. return json(['code' => 1, 'data' => $all, 'msg' => 'success']);
  240. }
  241. //获取所有分组信息
  242. public function getgroups()
  243. {
  244. $all = Db::name("groups")->select();
  245. return json(['code' => 1, 'data' => $all, 'msg' => 'success']);
  246. }
  247. //获取所有自动回答信息
  248. public function wsreplay()
  249. {
  250. $type = intval(input('post.type', 1));
  251. $all = Db::name("reply")->where('type', $type)->select();
  252. return json(['code' => 1, 'data' => $all, 'msg' => 'success']);
  253. }
  254. //获取所有用户分组标签
  255. public function accountlab()
  256. {
  257. $all = Db::name("accountslabel")->select();
  258. return json(['code' => 1, 'data' => $all, 'msg' => 'success']);
  259. }
  260. //更新客服在线状态
  261. public function upKfStatus()
  262. {
  263. $flag = intval(input('post.flag', -1));
  264. $kfuid = trim(input('post.uid', ''));
  265. if ($flag == 0) {
  266. $ret = Db::name('kfonline')->where('uid', $kfuid)->delete();
  267. if ($ret) {
  268. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  269. } else {
  270. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  271. }
  272. }
  273. if ($flag == 1) {
  274. $status = intval(input('post.status'));
  275. $ip = trim(input('post.ip', ''));
  276. $ret = Db::name('kfonline')->insert(['uid' => $kfuid, 'status' => $status, 'ip' => $ip, 'uptime' => date('Y-m-d H:i:s')]);
  277. if ($ret) {
  278. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  279. } else {
  280. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  281. }
  282. }
  283. if ($flag == 2) {
  284. $status = intval(input('post.status'));
  285. $ret = Db::name('kfonline')->where('uid', $kfuid)->update(['status' => $status]);
  286. if ($ret) {
  287. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  288. } else {
  289. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  290. }
  291. }
  292. }
  293. public function batchupserverlog()
  294. {
  295. $kfid = input('post.kfid', '');
  296. $t = strtotime("-7 day");
  297. $now = time();
  298. if ($kfid) {
  299. $ret = Db::execute("update ws_service_log set status=2,end_time=$now where start_time>=$t and kf_id=$kfid and status!=2");
  300. } else {
  301. $ret = Db::execute("update ws_service_log set status=2,end_time=$now where start_time>=$t and status!=2");
  302. }
  303. if ($ret) {
  304. return json(['code' => 1, 'data' => [], 'msg' => 'success']);
  305. } else {
  306. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  307. }
  308. }
  309. public function torobot()
  310. {
  311. $groups_id = intval(input('post.groups_id'));
  312. $robot_name = trim(input('post.robot_name'));
  313. $robotgroups_id = intval(input('post.robotgroups_id'));
  314. $ret = Db::name('robot')->field('robot_content')->where(['robot_status' => 1, 'groups_id' => $groups_id, 'robot_name' => $robot_name, 'robotgroups_id' => $robotgroups_id])->select();
  315. if ($ret) {
  316. return json(['code' => 1, 'data' => $ret, 'msg' => 'success']);
  317. } else {
  318. return json(['code' => 0, 'data' => [], 'msg' => 'fail']);
  319. }
  320. }
  321. }