Product.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace app\api\controller\ps;
  3. use app\common\controller\Api;
  4. use app\common\library\ps\FactoryContext;
  5. use app\common\library\ps\ProcessWriter;
  6. use app\common\model\ps\Product as ProductModel;
  7. /**
  8. * 产品接口
  9. */
  10. class Product extends Api
  11. {
  12. protected $noNeedRight = '*';
  13. /**
  14. * @var ProductModel
  15. */
  16. protected $model = null;
  17. public function _initialize()
  18. {
  19. parent::_initialize();
  20. if (!FactoryContext::id()) {
  21. $this->error('账号未绑定工厂');
  22. }
  23. $this->model = new ProductModel;
  24. }
  25. /**
  26. * 列表
  27. */
  28. public function index()
  29. {
  30. $limit = $this->request->request('limit/d', 10);
  31. $keyword = $this->request->request('keyword', '', 'trim');
  32. $query = $this->model->order('id desc');
  33. if ($keyword !== '') {
  34. $query->where('name|code', 'like', '%' . $keyword . '%');
  35. }
  36. $list = $query->paginate($limit);
  37. $this->success('', ['total' => $list->total(), 'rows' => $list->items()]);
  38. }
  39. /**
  40. * 详情
  41. */
  42. public function info()
  43. {
  44. $id = $this->request->request('id/d');
  45. $row = $this->model->with('processes')->find($id);
  46. if (!$row) {
  47. $this->error(__('No Results were found'));
  48. }
  49. $this->success('', $row);
  50. }
  51. /**
  52. * 添加
  53. */
  54. public function add()
  55. {
  56. $params = $this->request->post();
  57. if (!$params) {
  58. $this->error(__('Parameter %s can not be empty', ''));
  59. }
  60. $params['creator_user_id'] = $this->auth->id;
  61. unset($params['id'], $params['factory_id'], $params['qty'], $params['sheet_qty']);
  62. $processes = isset($params['processes']) ? $params['processes'] : [];
  63. unset($params['processes']);
  64. $this->model->allowField(true)->save($params);
  65. ProcessWriter::save($this->model->id, $processes, 'product');
  66. $this->success('', ['id' => $this->model->id]);
  67. }
  68. /**
  69. * 编辑
  70. */
  71. public function edit()
  72. {
  73. $id = $this->request->post('id/d');
  74. $row = $this->model->find($id);
  75. if (!$row) {
  76. $this->error(__('No Results were found'));
  77. }
  78. $params = $this->request->post();
  79. unset($params['id'], $params['factory_id'], $params['qty'], $params['sheet_qty']);
  80. $processes = isset($params['processes']) ? $params['processes'] : null;
  81. unset($params['processes']);
  82. $row->allowField(true)->save($params);
  83. if (is_array($processes)) {
  84. ProcessWriter::save($row->id, $processes, 'product');
  85. }
  86. $this->success();
  87. }
  88. /**
  89. * 删除
  90. */
  91. public function del()
  92. {
  93. $ids = $this->request->post('id');
  94. if (!$ids) {
  95. $this->error(__('Parameter %s can not be empty', 'id'));
  96. }
  97. $list = $this->model->where('id', 'in', $ids)->select();
  98. foreach ($list as $row) {
  99. \think\Db::name('ps_product_process')->where('product_id', $row->id)->delete();
  100. $row->delete();
  101. }
  102. $this->success();
  103. }
  104. }