ReportReserve.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Exception;
  4. use think\facade\Cache;
  5. use think\facade\Db;
  6. use think\facade\Validate;
  7. //报表预约处理类
  8. class ReportReserve extends Base
  9. {
  10. //redis队列的key,在ReportReserveHandle脚本中也有定义,要同步修改(轻易不要修改)
  11. private $key = 'wanyuhengtong_report_reserve';
  12. //预约记录编码及对应名称
  13. private $code_reserve_name = [
  14. 'A' => '退货台账-业务口径',
  15. 'B' => '库存预警汇总',
  16. 'C' => '退货明细',
  17. ];
  18. //获取预约列表
  19. public function getList()
  20. {
  21. $param = $this->request->only([
  22. 'code' => '',
  23. 'start_addtime' => '',
  24. 'end_addtime' => '',
  25. 'status' => 0,
  26. 'applyname' => '',
  27. 'page' => 1,
  28. 'size' => 15
  29. ], 'post', 'trim');
  30. $where = [];
  31. if (!empty($param['code'])) $where[] = ['code', '=', $param['code']];
  32. if (!empty($param['start_addtime']) && !empty($param['end_addtime'])) $where[] = ['addtime', 'between', [$param['start_addtime'], $param['end_addtime']]];
  33. if (!empty($param['status'])) $where[] = ['status', '=', $param['status']];
  34. if (!empty($param['applyname'])) $where[] = ['applyname', 'like', '%' . $param['applyname'] . '%'];
  35. $count = Db::name('report_form_reserve')
  36. ->where($where)
  37. ->count('id');
  38. $list = Db::name('report_form_reserve')
  39. ->where($where)
  40. ->order('id')
  41. ->page($param['page'], $param['size'])
  42. ->select()
  43. ->toArray();
  44. return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
  45. }
  46. //添加预约记录
  47. public function add()
  48. {
  49. $param = $this->request->only(['code', 'start_time', 'end_time', 'token', 'remark' => ''], 'post', 'trim');
  50. $val = Validate::rule([
  51. 'token' => 'require',
  52. 'code|报表编码' => 'require|in:A,B,C',
  53. 'start_time|开始时间' => 'require|date|elt:end_time',
  54. 'end_time|结束时间' => 'require|date',
  55. ]);
  56. if (!$val->check($param)) return error_show(1004, $val->getError());
  57. $user = GetUserInfo($param['token']);
  58. Db::startTrans();
  59. try {
  60. $insert_id = Db::name('report_form_reserve')
  61. ->insertGetId([
  62. 'code' => $param['code'],
  63. 'name' => $this->code_reserve_name[$param['code']],
  64. 'start_time' => $param['start_time'],
  65. 'end_time' => $param['end_time'],
  66. 'apply_name' => isset($user['data']['nickname']) ? $user['data']['nickname'] : '',
  67. 'apply_id' => isset($user['data']['id']) ? $user['data']['id'] : '',
  68. 'status' => 1,
  69. 'remark' => $param['remark'],
  70. 'addtime' => date('Y-m-d H:i:s'),
  71. 'updatetime' => date('Y-m-d H:i:s'),
  72. ]);
  73. if (!$insert_id) throw new Exception('预约记录新增失败');
  74. //lpush 往头部插入元素
  75. $rs = Cache::store('redis')->handler()->lpush($this->key, $insert_id);
  76. if (!$rs) throw new Exception('预约记录加入redis队列失败');
  77. Db::commit();
  78. return app_show(0, '添加成功');
  79. } catch (Exception $exception) {
  80. Db::rollback();
  81. return error_show(1005, '添加失败,' . $exception->getMessage());
  82. }
  83. }
  84. }