StoreDiscountDao.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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\StoreDiscounts;
  14. class StoreDiscountDao extends BaseDao
  15. {
  16. protected function getModel(): string
  17. {
  18. return StoreDiscounts::class;
  19. }
  20. /**
  21. * 增加商品库存
  22. * 该方法用于对指定商品的库存进行增加操作。如果商品设置了库存限制,会增加限制数量;如果商品销量大于1,会减少销量。
  23. * @param integer $id 商品ID,用于查询特定商品的信息。
  24. */
  25. public function incStock($id)
  26. {
  27. // 通过ID查询商品信息
  28. $res = $this->getModel()::getDb()->find($id);
  29. // 检查商品是否存在
  30. if ($res) {
  31. // 如果商品设置了库存限制,增加限制数量
  32. if ($res['is_limit']) $res->limit_num++;
  33. // 如果商品销量大于1,减少销量
  34. if ($res->sales > 1) $res->sales--;
  35. // 保存更新后的商品信息
  36. $res->save();
  37. }
  38. }
  39. /**
  40. * 减少指定商品的库存
  41. *
  42. * 此方法用于处理商品库存的减少操作。它首先尝试根据商品ID查询数据库中的商品记录。
  43. * 如果商品不存在,则返回false。如果商品存在,它将尝试减少商品的销售数量。
  44. * 如果该商品是有限制库存的,它还会减少商品的库存限制数量。如果库存限制数量小于或等于0,
  45. * 则表示商品库存不足,方法将返回false。否则,更新后的商品记录将被保存到数据库中,
  46. * 并返回true表示操作成功。
  47. *
  48. * @param int $id 商品ID
  49. * @return bool 操作成功返回true,否则返回false
  50. */
  51. public function decStock($id)
  52. {
  53. // 通过ID查询商品记录
  54. $res = $this->getModel()::getDb()->find($id);
  55. // 如果商品不存在,则返回false
  56. if (!$res) {
  57. return false;
  58. }
  59. // 增加商品销售数量
  60. $res->sales++;
  61. // 如果商品有限制库存
  62. if ($res['is_limit']) {
  63. // 如果当前库存限制数量大于0,则减少库存限制数量
  64. if ($res['limit_num'] > 0) {
  65. $res->limit_num--;
  66. } else {
  67. // 如果库存限制数量小于或等于0,表示库存不足,返回false
  68. return false;
  69. }
  70. }
  71. // 保存更新后的商品记录到数据库
  72. $res->save();
  73. // 返回true,表示操作成功
  74. return true;
  75. }
  76. /**
  77. * 清除特定字段值对应的数据记录
  78. *
  79. * 本函数用于根据指定的字段值和该值对应的ID,从数据库中删除相应的记录。
  80. * 这是个通用函数,可以通过传入不同的字段名和ID值来删除不同表中的数据。
  81. *
  82. * @param mixed $id 需要删除的数据记录的ID值,可以是数字、字符串等
  83. * @param string $field 指定的字段名,用于查询和删除数据
  84. */
  85. public function clear($id,$field)
  86. {
  87. // 使用模型获取数据库实例,并构造删除语句,根据字段和ID删除数据
  88. $this->getModel()::getDB()->where($field, $id)->delete();
  89. }
  90. }