ShippingTemplateFreeRepository.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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\repositories\store\shipping;
  12. use app\common\repositories\BaseRepository;
  13. use app\common\dao\store\shipping\ShippingTemplateFreeDao as dao;
  14. class ShippingTemplateFreeRepository extends BaseRepository
  15. {
  16. /**
  17. * ShippingTemplateFreeRepository constructor.
  18. * @param dao $dao
  19. */
  20. public function __construct(dao $dao)
  21. {
  22. $this->dao = $dao;
  23. }
  24. /**
  25. * 检查商家是否存在指定的运输模板。
  26. *
  27. * 本函数用于确认一个商家是否拥有特定ID的运输模板。它首先通过ID从数据访问对象(DAO)获取模板信息,
  28. * 然后利用依赖注入获取ShippingTemplateRepository实例,通过这个实例来检查商家是否存在指定的模板ID。
  29. * 这种设计模式使得代码更加灵活,易于维护和测试。
  30. *
  31. * @param int $merId 商家ID,用于确认商家身份。
  32. * @param int $id 指定的运输模板ID,需要确认商家是否拥有这个模板。
  33. * @return bool 如果商家存在指定的运输模板,则返回true,否则返回false。
  34. */
  35. public function merExists($merId , $id)
  36. {
  37. // 通过ID从DAO获取模板信息
  38. $result = $this->dao->get($id);
  39. // 通过依赖注入创建ShippingTemplateRepository实例
  40. $make = app()->make(ShippingTemplateRepository::class);
  41. // 如果模板信息存在,则检查商家是否存在指定的模板ID
  42. if ($result)
  43. return $make->merExists($merId,$result['temp_id']);
  44. // 如果模板信息不存在,则直接返回false
  45. return false;
  46. }
  47. /**
  48. * 更新或创建运输模板免费配送信息。
  49. *
  50. * 此方法主要用于处理运输模板免费配送信息的更新与创建。它遍历传入的数据数组,
  51. * 对于每个项,如果存在运输模板免费配送ID,则更新该条信息;否则,创建新的配送信息。
  52. * 这个方法解决了同时处理更新和创建操作的需求,避免了对数据库进行不必要的读写操作。
  53. *
  54. * @param int $id 运输模板ID,用于创建新配送信息时作为关联ID。
  55. * @param array $data 包含多个配送信息项的数组,每个项可能包含运输模板免费配送ID和城市ID等信息。
  56. */
  57. public function update($id,$data)
  58. {
  59. // 遍历传入的数据数组
  60. foreach ($data as $item){
  61. // 检查当前项是否已存在运输模板免费配送ID
  62. if(isset($item['shipping_template_free_id']) && $item['shipping_template_free_id']){
  63. // 将城市ID转换为字符串格式,用作数据库中的字段值
  64. $item['city_id'] = implode('/',$item['city_id']);
  65. // 更新已存在的运输模板免费配送信息
  66. $this->dao->update($item['shipping_template_free_id'],$item);
  67. }else{
  68. // 为新创建的配送信息设置运输模板ID
  69. $item['temp_id'] = $id;
  70. // 创建新的运输模板免费配送信息
  71. $this->dao->create($item);
  72. }
  73. }
  74. }
  75. /**
  76. * 批量插入数据。
  77. *
  78. * 本方法用于一次性插入多条数据记录。它通过调用DAO层的insertAll方法来实现,
  79. * 提高了数据插入的效率,减少了数据库操作的次数。此方法适用于需要批量导入或添加数据的场景。
  80. *
  81. * @param array $data 包含多条数据记录的数组,每条记录应为一个数组。
  82. * 数组的每个元素代表一条数据,元素的键应与数据库表的字段名对应。
  83. * @return bool 插入操作的结果。成功返回true,失败返回false。
  84. */
  85. public function insertAll(array $data)
  86. {
  87. return $this->dao->insertAll($data);
  88. }
  89. }