[ '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; } }