ProductGroupSkuDao.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\dao\store\product;
  12. use app\common\dao\BaseDao;
  13. use app\common\model\store\product\ProductGroupSku;
  14. class ProductGroupSkuDao extends BaseDao
  15. {
  16. public function getModel(): string
  17. {
  18. return ProductGroupSku::class;
  19. }
  20. /**
  21. * 清除指定产品组的数据
  22. *
  23. * 本函数用于根据给定的产品组ID,从数据库中删除相关的产品组数据。
  24. * 这是数据维护的一部分,可以帮助管理产品组的信息,避免过时或不必要的数据堆积。
  25. *
  26. * @param int $id 产品组的唯一标识符
  27. * @return int 返回删除的记录数
  28. */
  29. public function clear($id)
  30. {
  31. // 通过模型获取数据库实例,并使用where子句指定删除条件,然后执行删除操作
  32. return $this->getModel()::getDB()->where('product_group_id', $id)->delete();
  33. }
  34. /**
  35. * 增加商品组SKU的库存
  36. *
  37. * 该方法用于指定商品组中的某个唯一SKU增加库存。通过传入商品组ID和唯一标识符来定位特定的SKU,
  38. * 然后将库存数量增加指定的值。这种方法适用于需要精确控制商品库存的场景,例如在订单退款或商品回收时。
  39. *
  40. * @param int $product_group_id 商品组ID,用于定位商品组。
  41. * @param string $unique SKU的唯一标识符,用于在商品组中定位特定的SKU。
  42. * @param int $inc 库存需要增加的数量。这个值可以是正数,表示增加库存;也可以是负数,表示减少库存(虽然不符合常规的库存操作逻辑)。
  43. * @return bool 更新操作的结果。如果成功更新库存,则返回true;否则返回false。
  44. */
  45. public function incStock($product_group_id, $unique, $inc)
  46. {
  47. // 使用where子句定位到特定的SKU行,然后通过inc方法增加stock列的值,并通过update方法保存更改。
  48. return ProductGroupSku::getDB()->where('product_group_id', $product_group_id)->where('unique', $unique)->inc('stock', $inc)->update();
  49. }
  50. /**
  51. * 减少商品组SKU的库存
  52. *
  53. * 此方法用于更新指定商品组ID和唯一标识的SKU的库存数量。
  54. * 它通过查询数据库,找到对应的SKU记录,然后减少库存量,并执行更新操作。
  55. *
  56. * @param int $product_group_id 商品组ID,用于定位特定商品组。
  57. * @param string $unique SKU的唯一标识,用于唯一确定一个SKU。
  58. * @param int $inc 库存量减少的值,可以是正整数,表示库存减少的数量。
  59. *
  60. * @return int 返回更新操作影响的行数,用于确认更新是否成功。
  61. */
  62. public function descStock($product_group_id, $unique, $inc)
  63. {
  64. // 通过ProductGroupSku的数据库访问对象,构造更新语句,减少库存并执行更新操作。
  65. return ProductGroupSku::getDB()->where('product_group_id', $product_group_id)->where('unique', $unique)->dec('stock', $inc)->update();
  66. }
  67. }