SettingController.php 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace addons\Boss\backend\controllers;
  3. use addons\Boss\common\enums\BossEnum;
  4. use addons\Boss\common\enums\LevelEnum;
  5. use addons\Boss\common\listeners\OrderPaidListener;
  6. use addons\Boss\common\models\AddonsBoss;
  7. use addons\Boss\common\models\AddonsBossLevel;
  8. use Yii;
  9. use common\controllers\AddonsController;
  10. use common\enums\StatusEnum;
  11. /**
  12. * 基础配置控制器
  13. *
  14. * Class SettingController
  15. * @package addons\Boss\backend\controllers
  16. */
  17. class SettingController extends AddonsController
  18. {
  19. /**
  20. * @var string
  21. */
  22. // public $layout = "@addons/Boss/backend/views/layouts/main";
  23. public $enableCsrfValidation = false;
  24. /**
  25. * 基础配置
  26. * @Author: lun
  27. * @DateTime: 2021/10/23 0023 10:14
  28. * @Copyright: copyright (c) 2021 广东七件事集团
  29. * @return mixed|void
  30. */
  31. public function actionIndex()
  32. {
  33. $retuest = Yii::$app->request;
  34. if ($retuest->isAjax) {
  35. if ($retuest->isPost) {
  36. $params = Yii::$app->request->post();
  37. $res = Yii::$app->services->validate->validate($params,[
  38. [['detail'], 'string'],
  39. [['is_enable','compute_type','compute_period','settlement_method','settlement_period','is_show_at_center','is_sediment','sediment_type', 'is_decr_score', 'is_prize_pool', 'prize_pool_time', 'prize_pool_period', 'performance_settlement_method', 'prize_pool_source', 'custom_compute_days'], 'integer'],
  40. [['is_enable','compute_type','compute_period','settlement_method','settlement_period'], 'required'],
  41. [['sediment_percent', 'prize_pool_amount'], 'double'],
  42. [['boss_level', 'participate_decr_score_type'], 'safe'],
  43. ]);
  44. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  45. if (!empty($params['boss_level'])) $params['boss_level'] = json_encode($params['boss_level']);
  46. if (
  47. isset($params['compute_period']) &&
  48. $params['compute_period'] == LevelEnum::PERIOD_CUSTOM_DAYS &&
  49. (empty($params['custom_compute_days']) || $params['custom_compute_days'] <= 0)
  50. ) {
  51. $this->error('请输入正确结算天数');
  52. return;
  53. }
  54. // 保存配置
  55. $config = Yii::$app->services->setting->addons->set($this->mall_id, BossEnum::ADDONS_NAME, ['basic' => $params]);
  56. $this->success('保存成功', $config);
  57. } else {
  58. // 获取配置
  59. $config = Yii::$app->services->setting->addons->get($this->mall_id, BossEnum::ADDONS_NAME, 'basic');
  60. //$is_show_decr_score = isset(\Yii::$app->params['is_show_decr_score']) ? intval(\Yii::$app->params['is_show_decr_score']): 0;
  61. $is_show_decr_score = 1;
  62. $config['is_show_decr_score'] = $is_show_decr_score;
  63. $config['participate_decr_score_type'] = json_decode($config['participate_decr_score_type'] ?? '', true) ?: [];
  64. $config['participate_decr_score_type'] = array_merge([
  65. 'perpetual' => 1,
  66. 'extra' => 0
  67. ], $config['participate_decr_score_type']);
  68. if(!isset($config['is_show_at_center'])) $config['is_show_at_center'] = 1;
  69. $config['boss_level'] = !empty($config['boss_level']) ? json_decode($config['boss_level'], true) : [];
  70. //获取股东权重数据
  71. $levels = AddonsBossLevel::lists([
  72. 'where' => [
  73. ['mall_id' => $this->mall_id],
  74. ['status' => StatusEnum::ENABLED],
  75. ],
  76. 'select' => 'id,level,name',
  77. ]);
  78. $config['levels'] = $levels;
  79. $this->success('获取成功', $config);
  80. }
  81. }
  82. return $this->render($this->action->id);
  83. }
  84. }