InventoryShoppingLogic.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace app\admin\logic;
  3. use app\model\AccountModel;
  4. use app\model\CommonModel;
  5. use app\model\GoodModel;
  6. use app\model\InventoryShoppingModel;
  7. use think\Exception;
  8. use think\exception\ValidateException;
  9. use think\facade\Db;
  10. use think\response\Json;
  11. class InventoryShoppingLogic extends BaseLogic
  12. {
  13. //获取商城商品库存列表
  14. public static function list(array $data = []): Json
  15. {
  16. $db = new InventoryShoppingModel();
  17. if ($data['good_name'] != '') $db = $db->whereLike('good_name', '%' . $data['good_name'] . '%');
  18. if (($data['inventory_start'] != '') && ($data['inventory_end'] != '')) {
  19. $db = $db->whereBetween('inventory', [$data['inventory_start'], $data['inventory_end']]);
  20. }
  21. $count = $db->count('id');
  22. $list = $db->field(true)
  23. ->page($data['page'], $data['size'])
  24. ->order(['id' => 'desc'])
  25. ->select()
  26. ->toArray();
  27. return json_show(CommonModel::$success, '获取商城商品库存列表成功', ['count' => $count, 'list' => $list]);
  28. }
  29. //添加商城商品库存
  30. public static function add(array $data = []): Json
  31. {
  32. Db::startTrans();
  33. try {
  34. $rs = InventoryShoppingModel::field('id')
  35. ->where('good_id', $data['good_id'])
  36. ->findOrEmpty()
  37. ->isEmpty();
  38. if (!$rs) throw new Exception('该账号下的商城商品库存已存在,不能重复添加');
  39. $good = GoodModel::field('id,good_code,good_name')
  40. ->where(['id' => $data['good_id'], 'is_del' => CommonModel::$del_normal])
  41. ->findOrEmpty();
  42. if ($good->isEmpty()) throw new Exception('该商品不存在');
  43. $date = date('Y-m-d H:i:s');
  44. $inventory_shopping_id = Db::name('inventory_shopping')
  45. ->insertGetId(array_merge($data, [
  46. 'good_code' => $good->good_code,
  47. 'good_name' => $good->good_name,
  48. 'addtime' => $date,
  49. 'updatetime' => $date,
  50. ]));
  51. Db::name('inventory_shopping_log')->insert([
  52. 'inventory_shopping_id' => $inventory_shopping_id,
  53. 'before_inventory' => 0,
  54. 'after_inventory' => $data['inventory'],
  55. 'good_id' => $data['good_id'],
  56. 'good_code' => $good->good_code,
  57. 'good_name' => $good->good_name,
  58. 'source' => CommonModel::$source_admin,
  59. 'createrid' => self::$uid,
  60. 'creater' => self::$uname,
  61. 'addtime' => $date,
  62. ]);
  63. Db::commit();
  64. return json_show(CommonModel::$success, '添加商城商品库存成功');
  65. } catch (Exception $exception) {
  66. Db::rollback();
  67. return json_show(CommonModel::$error_param, '添加商城商品库存失败,' . $exception->getMessage());
  68. }
  69. }
  70. //获取商城商品库存详情
  71. public static function read(int $id = 0): Json
  72. {
  73. $res = InventoryShoppingModel::field(true)
  74. ->where('id', $id)
  75. ->findOrEmpty()
  76. ->toArray();
  77. if (empty($res)) throw new ValidateException('该商城商品库存为空');
  78. return json_show(CommonModel::$success, '获取商城商品库存详情成功', $res);
  79. }
  80. //编辑商城商品库存
  81. public static function edit(array $data = []): Json
  82. {
  83. Db::startTrans();
  84. try {
  85. $rs = InventoryShoppingModel::field(true)
  86. ->lock(true)
  87. ->where(['id' => $data['id']])
  88. ->findOrEmpty();
  89. if ($rs->isEmpty()) throw new Exception('该商城商品库存不存在');
  90. $date = date('Y-m-d H:i:s');
  91. if ($rs->inventory != $data['inventory']) {
  92. Db::name('inventory_shopping_log')->insert([
  93. 'inventory_shopping_id' => $data['id'],
  94. 'before_inventory' => $rs->inventory,
  95. 'after_inventory' => $data['inventory'],
  96. 'good_id' => $rs->good_id,
  97. 'good_code' => $rs->good_code,
  98. 'good_name' => $rs->good_name,
  99. 'source' => CommonModel::$source_admin,
  100. 'createrid' => self::$uid,
  101. 'creater' => self::$uname,
  102. 'addtime' => $date,
  103. ]);
  104. }
  105. InventoryShoppingModel::where('id', $data['id'])->save(array_merge($data, ['updatetime' => $date]));
  106. Db::commit();
  107. return json_show(CommonModel::$success, '编辑商城商品库存成功');
  108. } catch (Exception $exception) {
  109. Db::rollback();
  110. return json_show(CommonModel::$error_param, '编辑商城商品库存失败,' . $exception->getMessage());
  111. }
  112. }
  113. //商城商品库存变动记录
  114. public static function log(array $data = []): Json
  115. {
  116. $count = Db::name('inventory_shopping_log')
  117. ->where('inventory_shopping_id', $data['id'])
  118. ->count('id');
  119. $res = Db::name('inventory_shopping_log')
  120. ->field(true)
  121. ->where('inventory_shopping_id', $data['id'])
  122. ->order('id', 'desc')
  123. ->page($data['page'], $data['size'])
  124. ->select()
  125. ->toArray();
  126. return json_show(CommonModel::$success, '获取商城商品库存变动记录', ['count' => $count, 'list' => $res]);
  127. }
  128. }