You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/app/common/model/dealer/Setting.php

425 lines
16 KiB

11 months ago
<?php
// +----------------------------------------------------------------------
// | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2017~2023 https://www.yiovo.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
// +----------------------------------------------------------------------
// | Author: 萤火科技 <admin@yiovo.com>
// +----------------------------------------------------------------------
declare (strict_types=1);
namespace app\common\model\dealer;
use cores\BaseModel;
use think\facade\Cache;
use app\common\library\helper;
use app\common\enum\dealer\withdraw\PayType as PayTypeEnum;
use app\common\enum\dealer\apply\ApplyType as ApplyTypeEnum;
/**
* 分销商设置模型
* Class Apply
* @package app\common\model\dealer
*/
class Setting extends BaseModel
{
// 定义表名
protected $name = 'dealer_setting';
protected $createTime = false;
/**
* 获取器: 转义数组格式
* @param $value
* @return array
*/
public function getValuesAttr($value): array
{
return helper::jsonDecode($value);
}
/**
* 修改器: 转义成json格式
* @param $value
* @return string
*/
public function setValuesAttr($value): string
{
return helper::jsonEncode($value);
}
/**
* 获取指定项设置
* @param string $key
* @param int|null $storeId
* @return array|mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function getItem(string $key, int $storeId = null)
{
$data = static::getAll($storeId);
return $data[$key] ?? [];
}
/**
* 获取分销商设置
* @param int|null $storeId
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function getAll(int $storeId = null): array
{
$model = new static;
is_null($storeId) && $storeId = $model::$storeId;
if (!$data = Cache::get("dealer_setting_{$storeId}")) {
// 获取全部设置列表
$setting = $model->where('store_id', '=', $storeId)->select();
// 格式化
$data = $setting->isEmpty() ? [] : helper::arrayColumn2Key($setting->toArray(), 'key');
// 写入缓存
Cache::tag('cache')->set("dealer_setting_{$storeId}", $data);
}
// 重组setting缓存数据 (多维)
$mixed = static::reorganize($model->defaultData(), $data, $type = 'app', true);
return static::getValues($mixed, true);
}
/**
* 获取设置项信息
* @param string $key
* @return static|array|null
*/
public static function detail(string $key)
{
return static::get(compact('key'));
}
/**
* 是否已开启分销功能
* @param int|null $storeId
* @return bool
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function isEnabled(?int $storeId = null): bool
{
return (bool)self::getBasic($storeId)['is_open'];
}
/**
* 获取基础设置
* @param int|null $storeId
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function getBasic(?int $storeId = null): array
{
return (array)static::getItem('basic', $storeId);
}
/**
* 分销中心页面名称
* @param int|null $storeId
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function getDealerTitle(int $storeId = null)
{
return static::getItem('words', $storeId)['index']['title']['value'];
}
/**
* 默认配置
* @return array
*/
public function defaultData(): array
{
return [
'basic' => [
'key' => 'basic',
'describe' => '基础设置',
'values' => [
// 是否开启分销功能
6 months ago
'is_open' => 1, // 参数值:1开启 0关闭
11 months ago
// 分销层级
6 months ago
'level' => 1, // 参数值:1一级 2二级 3三级
11 months ago
// 分销商内购
'self_buy' => 0 // 参数值:1开启 0关闭
],
],
'condition' => [
'key' => 'condition',
'describe' => '分销商条件',
'values' => [
// 成为分销商条件
6 months ago
'become' => 20,//ApplyTypeEnum::AUDIT, // 参数值:10填写申请信息(需后台审核) 20填写申请信息(无需审核)
11 months ago
// 购买指定商品成为分销商 0关闭 1开启
'becomeBuyGoods' => 0,
// 购买指定商品的id集
'becomeBuyGoodsIds' => [],
// 成为下线条件
'downline' => 10, // 参数值:10首次点击分享链接
]
],
'commission' => [
'key' => 'commission',
'describe' => '佣金设置',
'values' => [
// 一级佣金
'first_money' => 0,
// 二级佣金
'second_money' => 0,
// 三级佣金
'third_money' => 0,
]
],
'settlement' => [
'key' => 'settlement',
'describe' => '结算',
'values' => [
// 提现方式
'pay_type' => [PayTypeEnum::ALIPAY, PayTypeEnum::BANK_CARD], // 参数值:10微信支付 20支付宝支付 30银行卡支付
// 最低提现额度
'min_money' => 10.00,
// 佣金结算天数
'settle_days' => 10,
]
],
'words' => [
'key' => 'words',
'describe' => '自定义文字',
'values' => [
'index' => [
'title' => [
'default' => '分销中心',
'value' => '分销中心'
],
'words' => [
'not_dealer' => [
'default' => '您还不是分销商,请先提交申请',
'value' => '您还不是分销商,请先提交申请'
],
'apply_now' => [
'default' => '立即加入',
'value' => '立即加入'
],
'referee' => [
'default' => '推荐人',
'value' => '推荐人'
],
'money' => [
'default' => '可提现佣金',
'value' => '可提现'
],
'freeze_money' => [
'default' => '待提现佣金',
'value' => '待提现'
],
'total_money' => [
'default' => '已提现金额',
'value' => '已提现金额'
],
'withdraw' => [
'default' => '去提现',
'value' => '去提现'
],
]
],
'apply' => [
'title' => [
'default' => '申请成为分销商',
'value' => '申请成为分销商'
],
'words' => [
'title' => [
'default' => '请填写申请信息',
'value' => '请填写申请信息'
],
'license' => [
'default' => '分销商申请协议',
'value' => '分销商申请协议'
],
'submit' => [
'default' => '申请成为经销商',
'value' => '申请成为经销商'
],
'wait_audit' => [
'default' => '您的申请已受理,正在进行信息核验,请耐心等待。',
'value' => '您的申请已受理,正在进行信息核验,请耐心等待。'
],
'goto_mall' => [
'default' => '去商城逛逛',
'value' => '去商城逛逛'
],
]
],
'order' => [
'title' => [
'default' => '分销订单',
'value' => '分销订单'
],
'words' => [
'all' => [
'default' => '全部',
'value' => '全部'
],
'unsettled' => [
'default' => '未结算',
'value' => '未结算'
],
'settled' => [
'default' => '已结算',
'value' => '已结算'
],
]
],
'team' => [
'title' => [
'default' => '我的团队',
'value' => '我的团队'
],
'words' => [
'total_team' => [
'default' => '团队总人数',
'value' => '团队总人数'
],
'first' => [
'default' => '一级团队',
'value' => '一级团队'
],
'second' => [
'default' => '二级团队',
'value' => '二级团队'
],
'third' => [
'default' => '三级团队',
'value' => '三级团队'
],
]
],
'withdraw_list' => [
'title' => [
'default' => '提现明细',
'value' => '提现明细'
],
'words' => [
'all' => [
'default' => '全部',
'value' => '全部'
],
'apply_10' => [
'default' => '审核中',
'value' => '审核中'
],
'apply_20' => [
'default' => '审核通过',
'value' => '审核通过'
],
'apply_40' => [
'default' => '已打款',
'value' => '已打款'
],
'apply_30' => [
'default' => '驳回',
'value' => '驳回'
],
]
],
'withdraw_apply' => [
'title' => [
'default' => '申请提现',
'value' => '申请提现'
],
'words' => [
'capital' => [
'default' => '可提现佣金',
'value' => '可提现佣金'
],
'money' => [
'default' => '提现金额',
'value' => '提现金额'
],
'money_placeholder' => [
'default' => '请输入要提取的金额',
'value' => '请输入要提取的金额'
],
'min_money' => [
'default' => '最低提现佣金',
'value' => '最低提现佣金'
],
'submit' => [
'default' => '提交申请',
'value' => '提交申请'
],
]
],
'poster' => [
'title' => [
'default' => '推广二维码',
'value' => '推广二维码'
]
],
]
],
'license' => [
'key' => 'license',
'describe' => '申请协议',
'values' => [
'license' => "1. xxxxxxx\r\n2. xxxxxxx\r\n3. xxxxxxx"
]
],
'background' => [
'key' => 'background',
'describe' => '页面背景图',
'values' => [
// 分销中心首页
'index' => base_url() . 'assets/store/img/dealer/dealer-bg.png',
// 申请成为分销商页
'apply' => base_url() . 'assets/store/img/dealer/dealer-bg.png',
// 申请提现页
'withdraw_apply' => base_url() . 'assets/store/img/dealer/dealer-bg.png',
],
],
'poster' => [
'key' => 'poster',
'describe' => '分销海报',
'values' => [
'backdrop' => [
'src' => base_url() . 'assets/store/img/dealer/backdrop.png',
],
'nickName' => [
'fontSize' => 12,
'color' => '#000000',
'left' => 123,
'top' => 476,
],
'avatar' => [
'width' => 50,
'style' => 'circle',
'left' => 62,
'top' => 466,
'src' => base_url() . 'assets/store/img/dealer/avatar.png',
],
'qrcode' => [
'width' => 66,
// 'style' => 'circle',
'left' => 249,
'top' => 456,
'src' => base_url() . 'assets/store/img/dealer/qrcode.png',
]
],
]
];
}
}