| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\admin\models;
- use app\constants\OptionSetting;
- use app\models\Option;
- use yii\base\Model;
- class ShopSettingForm extends Model
- {
- public $shop_min_money;
- public $shop_agree_rules;
- public $shop_ratio_type;
- public $shop_ratio;
- //搜索
- const OPTION_KEY = 'shop';
- const SCENARIO_ADD = 'add';
- const SCENARIO_EDIT = 'edit';
- const SCENARIO_DEL = 'del';
- const SCENARIO_LIST = 'list';
- const OPTION_SETTING = [
- 'shop' => [
- 'name' => '自提点设置',
- 'list' => [
- [
- 'name' => OptionSetting::SHOP_MIN_MONEY,
- 'text' => '最少提现额度',
- 'type' => 'number',
- 'required' => true,
- 'default' => 0,
- 'unit' => '',
- 'muted' => ''
- ],
- [
- 'name' => OptionSetting::SHOP_AGREE_RULES,
- 'text' => '申请协议',
- 'type' => 'textarea',
- 'required' => true,
- 'default' => '',
- 'unit' => '',
- 'muted' => '用户自提点申请协议'
- ],
- [
- 'name' => OptionSetting::SHOP_RATIO_TYPE,
- 'text' => '佣金类型',
- 'type' => 'radio',
- 'required' => true,
- 'default' => 1,
- 'unit' => '',
- 'muted' => '核销员佣金类型'
- ],
- [
- 'name' => OptionSetting::SHOP_RATIO,
- 'text' => '佣金比例',
- 'type' => 'textarea',
- 'required' => true,
- 'default' => 0,
- 'unit' => '',
- 'muted' => '核销员佣金比例'
- ],
- ]
- ]
- ];
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['shop_agree_rules'], 'string', 'max' => 255],
- [['shop_ratio_type'], 'in', 'range' => [1, 2]],
- [['shop_min_money', 'shop_agree_rules', 'shop_ratio_type', 'shop_ratio'],'required', 'on'=> [self::SCENARIO_ADD, self::SCENARIO_EDIT]]
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'shop_min_money' => '最少提现额度',
- 'shop_agree_rules' => '申请协议',
- 'shop_ratio_type' => '分销佣金类型',
- 'shop_ratio' => '分销佣金比例',
- ];
- }
- public function scenarios()
- {
- $scenarios = parent::scenarios();
- return $scenarios;
- }
-
- public function saveShopSetting()
- {
- if ($this->validate()) {
- $t = \Yii::$app->db->beginTransaction();
- $data = self::getGroup(self::OPTION_KEY, get_store_id());
- foreach($data as &$val){
- $val['value'] = $this->attributes[$val['name']];
- }
- $result = self::setGroup(self::OPTION_KEY, $data, get_store_id());
- if (!$result) {
- $t->rollBack();
- return [
- 'code' => 1,
- 'msg' => '保存失败'
- ];
- }
- $t->commit();
- return [
- 'code' => 0,
- 'msg' => '保存成功'
- ];
- } else {
- // 验证失败:$errors 是一个包含错误信息的数组
- return [
- 'code' => 1,
- "msg" => $this->getErrorSummary(false)[0]
- ];
- }
- }
-
- public static function getShopSettingList()
- {
- $result = self::getGroup(self::OPTION_KEY, get_store_id());
- $data = [];
- foreach($result as $val){
- $data[$val['name']] = $val['value'];
- }
- return $data;
- }
- /**
- * 根据类获取数据
- * @param $group
- * @param $store_id
- * @return array
- */
- public static function getGroup ($group, $store_id = 1)
- {
- $group_setting = self::OPTION_SETTING;
- $group_arr = $group_setting[$group]['list'] ?: [];
- $data = [];
- foreach ($group_arr as $val) {
- $group_data = Option::findOne(['store_id' => $store_id, 'group' => $group, 'name' => $val['name']]);
- if ($val['type'] == 'checkbox') {
- if ($group_data) {
- $attr = $val['default'];
- $data_val = json_decode($group_data->value,true);
- foreach ($attr as $k => &$v) {
- $v = $data_val[$k] ? $data_val[$k] : $v;
- }
- }
- }
- $data[] = [
- 'name' => $group_data ? $group_data->name : $val['name'],
- 'text' => $val['text'],
- 'group' => $group_data ? $group_data->group : $group,
- 'type' => $val['type'],
- 'size' => $val['size'],
- 'title' => isset($val['title']) ? $val['title'] : '',
- 'required' => $val['required'],
- 'muted' => isset($val['muted']) ? $val['muted'] : '',
- 'value' => $group_data ? ($val['type'] == 'checkbox' ? $attr : $group_data->value ) : $val['default'],
- 'updated_at' => $group_data ? $group_data->updated_at : 0,
- 'unit' => isset($val['unit']) ? $val['unit'] : '',
- ];
- }
- return $data;
- }
- /**
- * 根据类型批量设置数据
- * @param $group
- * @param $set_data
- * @param int $store_id
- * @return bool
- */
- public static function setGroup ($group, $set_data, $store_id = 1)
- {
- foreach ($set_data as $val) {
- if ($val['name']) {
- $group_data = Option::findOne(['store_id' => $store_id, 'group' => $group, 'name' => $val['name']]);
- if (!$group_data) {
- $group_data = new self();
- $group_data->store_id = $store_id;
- $group_data->group = $group;
- }
- $group_data->name = $val['name'];
- if ($val['type'] == 'checkbox') {
- $group_data->value = json_encode($val['value']);
- }else {
- $group_data->value = "{$val['value']}";
- }
- if (!$group_data->save()) {
- return false;
- }
- }
- }
- return true;
- }
- }
|