ProductService.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace app\shop\service;
  3. use app\common\model\plus\agent\Setting as AgentSetting;
  4. use app\common\service\product\BaseProductService;
  5. use app\shop\model\product\Category as CategoryModel;
  6. use app\shop\model\settings\Delivery as DeliveryModel;
  7. use app\shop\model\user\Grade as GradeModel;
  8. use app\shop\model\plus\point\Product as PointsProductModel;
  9. use app\shop\model\plus\assemble\Product as AssembleProductModel;
  10. use app\shop\model\plus\bargain\Product as BargainProductModel;
  11. use app\shop\model\plus\seckill\Product as SeckillProductModel;
  12. /**
  13. * 商品服务类
  14. */
  15. class ProductService extends BaseProductService
  16. {
  17. /**
  18. * 商品管理公共数据
  19. */
  20. public static function getEditData($model = null, $scene = 'edit')
  21. {
  22. // 商品分类
  23. $category = CategoryModel::getCacheTree();
  24. // 配送模板
  25. $delivery = DeliveryModel::getAll();
  26. // 会员等级列表
  27. $gradeList = GradeModel::getUsableList();
  28. // 商品sku数据
  29. $specData = static::getSpecData($model);
  30. // 商品规格是否锁定
  31. $isSpecLocked = static::checkSpecLocked($model, $scene);
  32. // 平台分销规则
  33. $basicSetting = AgentSetting::getItem('basic');
  34. return compact('category', 'delivery', 'gradeList', 'specData', 'isSpecLocked', 'basicSetting');
  35. }
  36. /**
  37. * 验证商品是否允许删除
  38. */
  39. public static function checkSpecLocked($model = null, $scene = 'edit')
  40. {
  41. if ($model == null || $scene == 'copy') return false;
  42. $service = new static;
  43. // 积分
  44. if ($service->checkPointsProduct($model['product_id'])) return true;
  45. // 拼团
  46. if ($service->checkAssembleProduct($model['product_id'])) return true;
  47. // 砍价
  48. if ($service->checkBargainProduct($model['product_id'])) return true;
  49. // 秒杀
  50. if ($service->checkSeckillProduct($model['product_id'])) return true;
  51. return false;
  52. }
  53. /**
  54. * 验证商品是否参与了积分商品
  55. */
  56. private function checkPointsProduct($productId)
  57. {
  58. return PointsProductModel::isExistProductId($productId);
  59. }
  60. /**
  61. * 验证商品是否参与了拼团商品
  62. */
  63. private function checkAssembleProduct($productId)
  64. {
  65. return AssembleProductModel::isExistProductId($productId);
  66. }
  67. /**
  68. * 验证商品是否参与了砍价商品
  69. */
  70. private function checkBargainProduct($productId)
  71. {
  72. return BargainProductModel::isExistProductId($productId);
  73. }
  74. /**
  75. * 验证商品是否参与了秒杀商品
  76. */
  77. private function checkSeckillProduct($productId)
  78. {
  79. return SeckillProductModel::isExistProductId($productId);
  80. }
  81. }