| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- // +----------------------------------------------------------------------
- // | saiadmin [ saiadmin快速开发框架 ]
- // +----------------------------------------------------------------------
- namespace plugin\saiadmin\app\logic\miniProgram;
- use plugin\saiadmin\app\model\miniProgram\MiniProgramDefaultSetting;
- use plugin\saiadmin\basic\think\BaseLogic;
- use plugin\saiadmin\exception\ApiException;
- /**
- * 小程序默认计费设置逻辑层
- */
- class DefaultSettingsLogic extends BaseLogic
- {
- public function __construct()
- {
- $this->model = new MiniProgramDefaultSetting();
- }
- public function getSettings(): array
- {
- $items = $this->model
- ->field([
- 'id',
- 'device_type',
- 'device_name',
- 'free_minutes',
- 'overdue_deposit',
- 'min_deposit',
- 'max_deposit',
- 'sort',
- ])
- ->order('sort', 'asc')
- ->order('id', 'asc')
- ->select()
- ->toArray();
- foreach ($items as &$item) {
- $item['id'] = (int) $item['id'];
- $item['free_minutes'] = (int) $item['free_minutes'];
- $item['overdue_deposit'] = (float) $item['overdue_deposit'];
- $item['min_deposit'] = (float) $item['min_deposit'];
- $item['max_deposit'] = (float) $item['max_deposit'];
- $item['sort'] = (int) $item['sort'];
- }
- unset($item);
- return $items;
- }
- public function updateSetting(array $data): bool
- {
- $id = (int) ($data['id'] ?? 0);
- if ($id <= 0) {
- throw new ApiException('默认设置参数错误');
- }
- $model = $this->model->findOrEmpty($id);
- if ($model->isEmpty()) {
- throw new ApiException('默认设置不存在');
- }
- $freeMinutes = (int) $this->number($data['free_minutes'] ?? null, 0, 10080, '免费时长');
- $overdueDeposit = $this->number($data['overdue_deposit'] ?? null, 0, 99999999, '超时订单押金');
- $minDeposit = $this->number($data['min_deposit'] ?? null, 0, 99999999, '最低押金');
- $maxDeposit = $this->number($data['max_deposit'] ?? null, 0, 99999999, '最高押金');
- if ($maxDeposit < $minDeposit) {
- throw new ApiException('最高押金不能小于最低押金');
- }
- return $model->save([
- 'free_minutes' => $freeMinutes,
- 'overdue_deposit' => $overdueDeposit,
- 'min_deposit' => $minDeposit,
- 'max_deposit' => $maxDeposit,
- ]) !== false;
- }
- private function number(mixed $value, float $min, float $max, string $label): float
- {
- if (!is_numeric($value)) {
- throw new ApiException($label . '必须是数字');
- }
- $number = (float) $value;
- if ($number < $min || $number > $max) {
- throw new ApiException($label . '超出允许范围');
- }
- return $number;
- }
- }
|