SettingService.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace addons\QiShangTong\common\service;
  3. use addons\QiShangTong\common\enums\QiShangTongEnums;
  4. use common\enums\AddonsEnum;
  5. use common\models\mall\Mall;
  6. use common\models\mall\MallAddons;
  7. use yii\helpers\Json;
  8. class SettingService
  9. {
  10. /**
  11. * 获取配置信息
  12. * @param int $mall_id
  13. * @return array
  14. */
  15. public function get(int $mall_id) :array
  16. {
  17. return \Yii::$app->services->setting->addons->get($mall_id, QiShangTongEnums::ADDONS_NAME, 'basic') ?? [];
  18. }
  19. /**
  20. * 设置配置信息
  21. * @param int $mall_id
  22. * @param array $data
  23. * @return bool
  24. */
  25. public function save(int $mall_id, array $data) :bool
  26. {
  27. return \Yii::$app->services->setting->addons->set($mall_id, QiShangTongEnums::ADDONS_NAME, ['basic' => $data]);
  28. }
  29. public static function getPrices(int $mall_id)
  30. {
  31. $price = \Yii::$app->services->setting->addons->get($mall_id, QiShangTongEnums::ADDONS_NAME, 'basic.price') ?? '[]';
  32. return Json::decode($price);
  33. }
  34. const PRICE = 'price';
  35. const COST_PRICE = 'cost_price';
  36. const ORIGINAL_PRICE = 'original_price';
  37. /**
  38. * 获取价格
  39. * @param int $mall_id
  40. * @param string $field
  41. * @param array $third_prices
  42. * @param array|null $prices
  43. * @return string
  44. */
  45. public static function getPrice(int $mall_id, string $field, array $third_prices, array $prices = null)
  46. {
  47. $prices === null && self::getPrices($mall_id);
  48. $tmp = $prices[$field]; // type, rate
  49. return bcmul(bcmul(bcmul($third_prices[$tmp['type']], $tmp['rate'][$tmp['type']], 2), 0.01, 2),
  50. MallService::rate($mall_id), 2);
  51. }
  52. public static function basicPrice(int $mall_id, string $price)
  53. {
  54. return bcmul(MallService::rate($mall_id), $price, 2);
  55. }
  56. /**
  57. * @return mixed|null
  58. */
  59. public static function getMasterMall()
  60. {
  61. foreach (Mall::getAllMallIds() as $mallId) {
  62. if (MallAddons::isInstall($mallId, AddonsEnum::ADDONS_NAME_QI_SHANG_TONG)) {
  63. $config = (new SettingService())->get($mallId);
  64. if (!empty($config['is_default'])) {
  65. return $mallId;
  66. }
  67. }
  68. }
  69. return null;
  70. }
  71. /**
  72. * 判断是否为主商城
  73. * @param int $mall_id
  74. * @return bool
  75. */
  76. public static function isMasterMall(int $mall_id)
  77. {
  78. return $mall_id == self::getMasterMall();
  79. }
  80. }