GoodsSettingService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace addons\ReservationService\common\services;
  3. use addons\ReservationService\common\models\ReservationServiceGoodsSetting;
  4. use common\traits\ErrorTrait;
  5. use yii\helpers\Json;
  6. class GoodsSettingService
  7. {
  8. use ErrorTrait;
  9. /**
  10. * 商品模式全局调用
  11. * @param array $params
  12. * @return mixed|null
  13. */
  14. public static function globalGoodsModel(array $params)
  15. {
  16. $data = ReservationServiceGoodsSetting::lists($params);
  17. if (!empty($data)) {
  18. foreach ($data as &$item) {
  19. if (!empty($item['distribution_config'])) $item['distribution_config'] = Json::decode($item['distribution_config']);
  20. }
  21. }
  22. return $data;
  23. }
  24. /**
  25. * 商品模式更新数据
  26. * @param array $params
  27. * @param array $data
  28. * @return bool
  29. */
  30. public static function setData(array $params, array $data)
  31. {
  32. $t = \Yii::$app->db->beginTransaction();
  33. try {
  34. foreach ($data as $item) {
  35. $model = ReservationServiceGoodsSetting::getOne([
  36. ['mall_id' => $params['mall_id']],
  37. ['item_id' => $params['item_id']],
  38. ['commission_type' => $item['commission_type']]
  39. ]);
  40. if (empty($model)) {
  41. $model = new ReservationServiceGoodsSetting();
  42. $model->mall_id = $params['mall_id'];
  43. $model->item_id = $params['item_id'];
  44. $model->commission_type = $item['commission_type'];
  45. }
  46. $model->is_enable = $item['is_enable'];
  47. $model->item_type = $item['item_type'];
  48. $model->commission = $item['commission'];
  49. $model->is_percent = $item['is_percent'];
  50. $model->is_enable_distribution = $item['is_enable_distribution'];
  51. $config = $item['distribution_config'] ?? [];
  52. ksort($config);
  53. $model->distribution_config = $config;
  54. if (!$model->save()) throw new \Exception($model->getErrorMessage());
  55. }
  56. $t->commit();
  57. return true;
  58. } catch (\Exception $e) {
  59. $t->rollBack();
  60. self::$static_error = $e->getMessage();
  61. return false;
  62. }
  63. }
  64. /**
  65. * @return string
  66. */
  67. public static function getErrorMessage()
  68. {
  69. return self::$static_error;
  70. }
  71. }