Clean.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Db;
  4. /**
  5. * 管理系统系统设置类
  6. */
  7. class Clean extends Base
  8. {
  9. /**
  10. *数据清理
  11. *
  12. * @access public
  13. */
  14. public function index()
  15. {
  16. // 表单提交.
  17. if (request()->isPost()) {
  18. $param = input('post.');
  19. //聊天数据
  20. $del_time = '';
  21. if($param['chat_data'] == 'one_month'){
  22. $del_time = time()-2592000;
  23. }
  24. if($param['chat_data'] == 'three_month'){
  25. $del_time = time()-7776000;
  26. }
  27. if($param['chat_data'] == 'six_month'){
  28. $del_time = time()-15552000;
  29. }
  30. if($param['chat_data'] == 'one_year'){
  31. $del_time = time()-31104000;
  32. }
  33. //客服操作记录
  34. $delete_time = '';
  35. if($param['operational_records'] == 'half_year'){
  36. $delete_time = date('Y-m-d',time()-15552000);
  37. }
  38. if($param['operational_records'] == 'one_year'){
  39. $delete_time = date('Y-m-d',time()-31104000);
  40. }
  41. if($param['operational_records'] == 'three_year'){
  42. $delete_time = date('Y-m-d',time()-93312000);
  43. }
  44. if($del_time != ''){
  45. $servicelog = array();
  46. $servicelog_id = db('service_log')->field('servicelog_id')->where('start_time','<',$del_time)->select();
  47. for($i=0;$i<count($servicelog_id);$i++){
  48. $servicelog[] = $servicelog_id[$i]['servicelog_id'];
  49. }
  50. if($delete_time != ''){
  51. // 启动事务
  52. Db::startTrans();
  53. try {
  54. //聊天数据清理
  55. db('service_log')->where('start_time','<',$del_time)->delete();
  56. db('chat_log')->where('servicelog_id','in',$servicelog)->delete();
  57. db('alarm')->where('servicelog_id','in',$servicelog)->delete();
  58. //客服操作记录清理
  59. db('kfonlinehistory')->where('wday','<',$delete_time)->delete();
  60. db('kfstatetimes')->where('sday','<',$delete_time)->delete();
  61. db('service_data')->where('add_date','<',$delete_time)->delete();
  62. db('servicetimelog')->where('cdate','<',$delete_time)->delete();
  63. // 提交事务
  64. Db::commit();
  65. return json(['code' => 1, 'data' => '', 'msg' => '数据清理成功']);
  66. } catch (\Exception $e) {
  67. // 回滚事务
  68. Db::rollback();
  69. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  70. }
  71. }else{
  72. // 启动事务
  73. Db::startTrans();
  74. try {
  75. db('service_log')->where('start_time','<',$del_time)->delete();
  76. db('chat_log')->where('servicelog_id','in',$servicelog)->delete();
  77. db('alarm')->where('servicelog_id','in',$servicelog)->delete();
  78. // 提交事务
  79. Db::commit();
  80. return json(['code' => 1, 'data' => '', 'msg' => '聊天数据清理成功']);
  81. } catch (\Exception $e) {
  82. // 回滚事务
  83. Db::rollback();
  84. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  85. }
  86. }
  87. }else{
  88. if($delete_time != ''){
  89. // 启动事务
  90. Db::startTrans();
  91. try {
  92. db('kfonlinehistory')->where('wday','<',$delete_time)->delete();
  93. db('kfstatetimes')->where('sday','<',$delete_time)->delete();
  94. db('service_data')->where('add_date','<',$delete_time)->delete();
  95. db('servicetimelog')->where('cdate','<',$delete_time)->delete();
  96. // 提交事务
  97. Db::commit();
  98. return json(['code' => 1, 'data' => '', 'msg' => '客服操作记录清理成功']);
  99. } catch (\Exception $e) {
  100. // 回滚事务
  101. Db::rollback();
  102. return json(['code' => -3, 'data' => '', 'msg' => $e->getMessage()]);
  103. }
  104. }else{
  105. return json(['code' => -4, 'data' => '', 'msg' => '请选择时间']);
  106. }
  107. }
  108. }
  109. $this->assign([
  110. 'status' => config('kf_status'),
  111. ]);
  112. return $this->fetch();
  113. }
  114. }