diff --git a/app/AppService.php b/app/AppService.php index 408ec4e..75ae09b 100644 --- a/app/AppService.php +++ b/app/AppService.php @@ -5,6 +5,9 @@ declare (strict_types = 1); namespace app; +use crmeb\services\SystemConfigService; +use crmeb\services\GroupDataService; +use crmeb\utils\Json; use think\Service; /** @@ -12,6 +15,11 @@ use think\Service; */ class AppService extends Service { + public $bind = [ + // 'json' => Json::class, + 'sysConfig' => SystemConfigService::class, + 'sysGroupData' => GroupDataService::class + ]; public function register() { diff --git a/app/Request.php b/app/Request.php index eb61d99..9826a96 100644 --- a/app/Request.php +++ b/app/Request.php @@ -13,6 +13,11 @@ class Request extends \think\Request use Macro; protected $cache = []; + /** + * 不过滤变量名 + * @var array + */ + protected $except = ['menu_path', 'api_url', 'unique_auth', 'description', 'custom_form', 'product_detail_diy', 'value']; public function __construct() { @@ -125,7 +130,6 @@ class Request extends \think\Request return $this->file[$name] ?? null; } - protected function dealUploadFile(array $files, string $name): array { $array = []; @@ -184,4 +188,92 @@ class Request extends \think\Request } return $array; } + + + /** + * 获取get参数 + * @param array $params + * @param bool $suffix + * @param bool $filter + * @return array + */ + public function getMore(array $params, bool $suffix = false, bool $filter = true): array + { + return $this->more($params, $suffix, $filter); + } + /** + * 获取post参数 + * @param array $params + * @param bool $suffix + * @param bool $filter + * @return array + */ + public function postMore(array $params, bool $suffix = false, bool $filter = true): array + { + return $this->more($params, $suffix, $filter); + } + /** + * 获取请求的数据 + * @param array $params + * @param bool $suffix + * @param bool $filter + * @return array + */ + public function more(array $params, bool $suffix = false, bool $filter = true): array + { + $p = []; + $i = 0; + foreach ($params as $param) { + if (!is_array($param)) { + $p[$suffix == true ? $i++ : $param] = $this->filterWord(is_string($this->param($param)) ? trim($this->param($param)) : $this->param($param), $filter && !in_array($param, $this->except)); + } else { + if (!isset($param[1])) $param[1] = null; + if (!isset($param[2])) $param[2] = ''; + if (is_array($param[0])) { + $name = is_array($param[1]) ? $param[0][0] . '/a' : $param[0][0] . '/' . $param[0][1]; + $keyName = $param[0][0]; + } else { + $name = is_array($param[1]) ? $param[0] . '/a' : $param[0]; + $keyName = $param[0]; + } + $p[$suffix == true ? $i++ : (isset($param[3]) ? $param[3] : $keyName)] = $this->filterWord(is_string($this->param($name, $param[1], $param[2])) ? trim($this->param($name, $param[1], $param[2])) : $this->param($name, $param[1], $param[2]), $filter && !in_array($keyName, $this->except)); + } + } + return $p; + } + /** + * 过滤接受的参数 + * @param $str + * @param bool $filter + * @return array|mixed|string|string[] + */ + public function filterWord($str, bool $filter = true) + { + if (!$str || !$filter) return $str; + // 把数据过滤 + $farr = [ + "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU", + "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU", + "/select|join|where|drop|like|modify|rename|insert|update|table|database|alter|truncate|\'|\/\*|\.\.\/|\.\/|union|into|load_file|outfile/is" + ]; + if (is_array($str)) { + foreach ($str as &$v) { + if (is_array($v)) { + foreach ($v as &$vv) { + if (!is_array($vv)) $vv = preg_replace($farr, '', $vv); + } + } else { + $v = preg_replace($farr, '', $v); + } + } + } else { + $str = preg_replace($farr, '', $str); + } + return $str; + } + + + + + } diff --git a/app/common.php b/app/common.php index 9452f8e..7545fd7 100644 --- a/app/common.php +++ b/app/common.php @@ -8,6 +8,7 @@ use app\common\repositories\system\groupData\GroupDataRepository; use crmeb\services\UploadService; use Swoole\Lock; use think\db\BaseQuery; +use think\facade\Log; if (!function_exists('go')) { function go(): bool @@ -243,7 +244,7 @@ if (!function_exists('getModelTime')) { $model->whereBetween($prefix, [date('Y-m-d H:i:s', strtotime('yesterday')), date('Y-m-d H:i:s', strtotime('today -1second'))]); break; case 'quarter': - list($startTime, $endTime) = getMonth(); + [$startTime, $endTime] = getMonth(); $model = $model->where($prefix, '>', $startTime); $model = $model->where($prefix, '<', $endTime); break; @@ -255,7 +256,7 @@ if (!function_exists('getModelTime')) { break; default: if (strstr($section, $field) !== false) { - list($startTime, $endTime) = explode($field, $section); + [$startTime, $endTime] = explode($field, $section); if (strlen($startTime) == 4) { $model->whereBetweenTime($prefix, date('Y-m-d H:i:s', strtotime($section)), date('Y-m-d H:i:s', strtotime($section . ' +1day -1second'))); } else { @@ -427,7 +428,7 @@ if (!function_exists('getStartModelTime')) { case 'year': return date('Y-m-d', strtotime('this year 1/1')); case 'quarter': - list($startTime, $endTime) = getMonth(); + [$startTime, $endTime] = getMonth(); return $startTime; case 'lately7': return date('Y-m-d', strtotime("-7 day")); @@ -435,7 +436,7 @@ if (!function_exists('getStartModelTime')) { return date('Y-m-d', strtotime("-30 day")); default: if (strstr($section, '-') !== false) { - list($startTime, $endTime) = explode('-', $section); + [$startTime, $endTime] = explode('-', $section); return date('Y-m-d H:i:s', strtotime($startTime)); } return date('Y-m-d H:i:s'); @@ -779,7 +780,7 @@ if (!function_exists('setSharePoster')) { if (isset($config['text']) && !empty($config['text'])) { foreach ($config['text'] as $key => $val) { $val = array_merge($textDefault, $val); - list($R, $G, $B) = explode(',', $val['fontColor']); + [$R, $G, $B] = explode(',', $val['fontColor']); $fontColor = imagecolorallocate($imageRes, $R, $G, $B); $val['left'] = $val['left'] < 0 ? $backgroundWidth - abs($val['left']) : $val['left']; $val['top'] = $val['top'] < 0 ? $backgroundHeight - abs($val['top']) : $val['top']; @@ -1053,9 +1054,11 @@ if (!function_exists('aj_captcha_check_two')) { * @param string $pointJson * @return bool */ - function aj_captcha_check_two(string $captchaType, string $captchaVerification ) + function aj_captcha_check_two(string $captchaType, string $captchaVerification,string $token) { - aj_get_serevice($captchaType)->verificationByEncryptCode($captchaVerification); + // aj_get_serevice($captchaType)->verificationByEncryptCode($captchaVerification); + + aj_get_serevice($captchaType)->verificationByEncryptCodeV2($captchaVerification,$token); return true; } } @@ -1088,6 +1091,7 @@ if (!function_exists('aj_get_serevice')) { default: throw new \think\exception\ValidateException('captchaType参数不正确:'.$captchaType); } + return $service; } } @@ -1117,5 +1121,125 @@ if (!function_exists('checkSuffix')) { } } - +if (!function_exists('sys_data')) { + /** + * 获取系统单个配置 + * @param string $name + * @return string + */ + function sys_data(string $name, int $limit = 0) + { + return app('sysGroupData')->getData($name, $limit); + } +} +if (!function_exists('sys_config')) { + /** + * 获取系统单个配置 + * @param string $name + * @param string $default + * @return string + */ + function sys_config(string $name, $default = '') + { + if (empty($name)) + return $default; + $sysConfig = app('sysConfig')->get($name); + if (is_array($sysConfig)) { + foreach ($sysConfig as &$item) { + if (strpos($item, '/uploads/system/') !== false || strpos($item, '/statics/system_images/') !== false) $item = set_file_url($item); + } + } else { + if (strpos($sysConfig, '/uploads/system/') !== false || strpos($sysConfig, '/statics/system_images/') !== false) $sysConfig = set_file_url($sysConfig); + } + $config = is_array($sysConfig) ? $sysConfig : trim($sysConfig); + if ($config === '' || $config === false) { + return $default; + } else { + return $config; + } + } +} +if (!function_exists('set_file_url')) { + /** + * 设置附加路径 + * @param $url + * @return bool + */ + function set_file_url($image, $siteUrl = '') + { + if (!strlen(trim($siteUrl))) $siteUrl = sys_config('site_url'); + if (!$image) return $image; + if (is_array($image)) { + foreach ($image as &$item) { + $domainTop1 = substr($item, 0, 4); + $domainTop2 = substr($item, 0, 2); + if ($domainTop1 != 'http' && $domainTop2 != '//') + $item = $siteUrl . str_replace('\\', '/', $item); + } + } else { + $domainTop1 = substr($image, 0, 4); + $domainTop2 = substr($image, 0, 2); + if ($domainTop1 != 'http' && $domainTop2 != '//') + $image = $siteUrl . str_replace('\\', '/', $image); + } + return $image; + } +} +if (!function_exists('debug')) { + function debug($info){ + echo "
";
+ print_r($info);
+ die;
+ }
+}
+if (!function_exists('debugLog')) {
+ function debugLog($info,$title = '调试信息'){
+ Log::info("{$title}:".var_export($info,1));
+ }
+}
+if (!function_exists('sort_list_tier')) {
+ /**
+ * 分级排序
+ * @param $data
+ * @param int $pid
+ * @param string $field
+ * @param string $pk
+ * @param string $html
+ * @param int $level
+ * @param bool $clear
+ * @return array
+ */
+ function sort_list_tier($data, $pid = 0, $field = 'pid', $pk = 'id', $html = '|-----', $level = 1, $clear = true)
+ {
+ static $list = [];
+ if ($clear) $list = [];
+ foreach ($data as $k => $res) {
+ if ($res[$field] == $pid) {
+ $res['html'] = str_repeat($html, $level);
+ $list[] = $res;
+ unset($data[$k]);
+ sort_list_tier($data, $res[$pk], $field, $pk, $html, $level + 1, false);
+ }
+ }
+ return $list;
+ }
+}
+if (!function_exists('get_file_link')) {
+ /**
+ * 获取文件带域名的完整路径
+ * @param string $link
+ * @return string
+ */
+ function get_file_link(string $link)
+ {
+ if (!$link) {
+ return '';
+ }
+ if (substr($link, 0, 4) === "http" || substr($link, 0, 2) === "//") {
+ return $link;
+ } else {
+ return app()->request->domain() . $link;
+ }
+ }
+}
diff --git a/app/common/dao/system/menu/MenuDao.php b/app/common/dao/system/menu/MenuDao.php
index b371162..e96fc2f 100644
--- a/app/common/dao/system/menu/MenuDao.php
+++ b/app/common/dao/system/menu/MenuDao.php
@@ -387,4 +387,36 @@ class MenuDao extends BaseDao
->where('is_menu',$isMenu)
->order('path ASC')->find();
}
+
+ /**
+ * 获取权限菜单列表
+ * @param array $where
+ * @param array $field
+ * @return \think\Collection
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ */
+ public function getMenusRoule(array $where, ?array $field = [])
+ {
+ if (!$field) {
+ // $field = ['menu_id', 'menu_name', 'icon', 'pid', 'sort', 'menu_path', 'is_show', 'header', 'is_header', 'is_show_path'];
+ $field = ['*'];
+ }
+ return $this->search($where)->field($field)->order('sort DESC,menu_id DESC')->failException(false)->append(['id'])->select();
+ }
+
+ /**
+ * 获取菜单中的唯一权限
+ * @param array $where
+ * @return array
+ */
+ public function getMenusUnique(array $where)
+ {
+ return [];//$this->search($where)->where('unique_auth', '<>', '')->column('unique_auth', '');
+ }
+
+
+
+
}
diff --git a/app/common/middleware/AuthTokenMiddleware.php b/app/common/middleware/AuthTokenMiddleware.php
index 2a9b0e7..cf904e5 100644
--- a/app/common/middleware/AuthTokenMiddleware.php
+++ b/app/common/middleware/AuthTokenMiddleware.php
@@ -16,6 +16,7 @@ use app\Request;
use app\services\supplier\LoginServices;
use crmeb\interfaces\MiddlewareInterface;
use think\facade\Config;
+use think\Response;
/**
* Class AuthTokenMiddleware
@@ -32,7 +33,7 @@ class AuthTokenMiddleware implements MiddlewareInterface
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
- public function handle(Request $request, \Closure $next)
+ public function handle(Request $request, \Closure $next): Response
{
$token = trim(ltrim($request->header(Config::get('cookie.token_name', 'Authori-zation')), 'Bearer'));
/** @var LoginServices $services */
diff --git a/app/common/model/system/admin/Admin.php b/app/common/model/system/admin/Admin.php
index 387f012..67966c8 100644
--- a/app/common/model/system/admin/Admin.php
+++ b/app/common/model/system/admin/Admin.php
@@ -7,6 +7,7 @@ namespace app\common\model\system\admin;
use app\common\model\BaseModel;
use app\common\model\system\auth\Role;
+use app\model\supplier\SystemSupplier;
class Admin extends BaseModel
{
@@ -68,4 +69,18 @@ class Admin extends BaseModel
{
$query->whereLike('real_name',"%{$value}%");
}
+
+ /**
+ * 供应商
+ * @return \think\model\relation\HasOne
+ */
+ public function supplier()
+ {
+ return $this->hasOne(SystemSupplier::class, 'admin_id', 'admin_id')->field(['id', 'supplier_name', 'admin_id', 'avatar', 'is_show'])->bind([
+ 'supplier_id' => 'id',
+ 'supplier_name',
+ 'avatar',
+ 'is_show'
+ ]);
+ }
}
diff --git a/app/controller/supplier/Common.php b/app/controller/supplier/Common.php
index d1aa826..ec5d2fc 100644
--- a/app/controller/supplier/Common.php
+++ b/app/controller/supplier/Common.php
@@ -32,7 +32,7 @@ class Common extends AuthController
public function getLogo(SystemSupplierServices $supplierServices)
{
$supplier = $supplierServices->get((int)$this->supplierId, ['id', 'name']);
- return $this->success([
+ return app('json')->success('' ,[
'logo' => sys_config('site_logo'),
'logo_square' => sys_config('site_logo_square'),
'site_name' => $supplier && isset($supplier['name']) && $supplier['name'] ? $supplier['name'] : sys_config('site_name')
@@ -44,7 +44,7 @@ class Common extends AuthController
*/
public function getConfig()
{
- return $this->success([
+ return app('json')->success('' , [
'tengxun_map_key' => sys_config('tengxun_map_key'),
'open_erp' => !!sys_config('erp_open')
]);
@@ -57,7 +57,7 @@ class Common extends AuthController
*/
public function city(CityAreaServices $services, $pid = 0)
{
- return $this->success($services->getCityTreeList((int)$pid));
+ return app('json')->success('' , $services->getCityTreeList((int)$pid));
}
/**
@@ -91,7 +91,8 @@ class Common extends AuthController
}
$data[$key]['menu_path'] = preg_replace('/^\/cashier/', '', $item['menu_path']);
}
- return $this->success(sort_list_tier($data));
+
+ return app('json')->success('' , sort_list_tier($data));
}
/**
@@ -106,7 +107,8 @@ class Common extends AuthController
], true);
$time = $orderServices->timeHandle($time, true);
$data = $orderServices->homeStatics((int)$this->supplierId, $time);
- return $this->success($data);
+
+ return app('json')->success('' , $data);
}
/**
@@ -121,7 +123,8 @@ class Common extends AuthController
], true);
$time = $orderServices->timeHandle($time, true);
$data = $orderServices->orderCharts((int)$this->supplierId, $time);
- return $this->success($data);
+
+ return app('json')->success('' , $data);
}
/**
@@ -136,7 +139,8 @@ class Common extends AuthController
], true);
$time = $orderServices->timeHandle($time, true);
$data = $orderServices->getOrderType((int)$this->supplierId, $time);
- return $this->success($data);
+
+ return app('json')->success('' , $data);
}
/**
@@ -151,7 +155,8 @@ class Common extends AuthController
], true);
$time = $orderServices->timeHandle($time, true);
$data = $orderServices->getOrderChannel((int)$this->supplierId, $time);
- return $this->success($data);
+
+ return app('json')->success('' , $data);
}
/**
@@ -182,7 +187,8 @@ class Common extends AuthController
'url' => '/' . config('admin.supplier_prefix') . '/order/refund'
];
}
- return $this->success($this->noticeData($value));
+
+ return app('json')->success('' , $value);
}
/**
@@ -251,14 +257,14 @@ class Common extends AuthController
*/
public function getCopyright()
{
- try {
- $copyright = $this->__z6uxyJQ4xYa5ee1mx5();
- } catch (\Throwable $e) {
+ // try {
+ // $copyright = $this->__z6uxyJQ4xYa5ee1mx5();
+ // } catch (\Throwable $e) {
$copyright = ['copyrightContext' => '', 'copyrightImage' => ''];
- }
+ // }
$copyright['version'] = get_crmeb_version();
$copyright['extract_min_price'] = sys_config('supplier_extract_min_price');
$copyright['extract_max_price'] = sys_config('supplier_extract_max_price');
- return $this->success($copyright);
+ return app('json')->success('' , $copyright);
}
}
diff --git a/app/controller/supplier/Login.php b/app/controller/supplier/Login.php
index d648948..da3674e 100644
--- a/app/controller/supplier/Login.php
+++ b/app/controller/supplier/Login.php
@@ -14,7 +14,7 @@ namespace app\controller\supplier;
use app\Request;
use crmeb\utils\Captcha;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService;
use app\services\supplier\LoginServices;
use think\exception\ValidateException;
use app\validate\api\user\RegisterValidates;
@@ -81,6 +81,7 @@ class Login
['pointJson', ''],
['captchaType', ''],
], true);
+
try {
aj_captcha_check_one($captchaType, $token, $pointJson);
return app('json')->success();
@@ -117,7 +118,8 @@ class Login
*/
public function login(Request $request)
{
- [$account, $password, $captchaType, $captchaVerification] = $request->postMore([
+ [$token,$account, $password, $captchaType, $captchaVerification] = $request->postMore([
+ ['token', ''],
'account',
'pwd',
['captchaType', ''],
@@ -134,15 +136,15 @@ class Login
}
//二次验证
try {
- aj_captcha_check_two($captchaType, $captchaVerification);
+ aj_captcha_check_two($captchaType, $captchaVerification, $token);
} catch (\Throwable $e) {
- return app('json')->fail($e->getError());
+ return app('json')->fail($e->getMessage());
}
}
+
$res = $this->services->login($account, $password, 'supplier');
- if ($res) {
- Cache::delete($key);
- }
+ if ($res) Cache::delete($key);
+
return app('json')->success($res);
}
@@ -155,7 +157,7 @@ class Login
public function logout(Request $request)
{
$key = trim(ltrim($request->header(Config::get('cookie.token_name')), 'Bearer'));
- CacheService::redisHandler()->delete(md5($key));
+ SupplierCacheService::redisHandler()->delete(md5($key));
return app('json')->success();
}
@@ -172,7 +174,7 @@ class Login
} catch (ValidateException $e) {
return app('json')->fail($e->getError());
}
- $verifyCode = CacheService::get('code_' . $account);
+ $verifyCode = SupplierCacheService::get('code_' . $account);
if (!$verifyCode)
return app('json')->fail('请先获取验证码');
$verifyCode = substr($verifyCode, 0, 6);
@@ -184,7 +186,7 @@ class Login
if ($password == '123456') return app('json')->fail('密码太过简单,请输入较为复杂的密码');
$resetStatus = $this->services->reset($account, $password);
if ($resetStatus) {
- CacheService::delete('code_' . $account);
+ SupplierCacheService::delete('code_' . $account);
return app('json')->success('修改成功');
}
return app('json')->fail('修改失败');
diff --git a/app/middleware.php b/app/middleware.php
index 87e2283..bff58d1 100644
--- a/app/middleware.php
+++ b/app/middleware.php
@@ -9,4 +9,6 @@ return [
// \think\middleware\LoadLangPack::class,
// Session初始化
// \think\middleware\SessionInit::class
+ // 跨域支持
+ // \think\middleware\AllowCrossDomain::class
];
diff --git a/app/model/supplier/SystemSupplier.php b/app/model/supplier/SystemSupplier.php
index 8e407d4..4bc6ff1 100644
--- a/app/model/supplier/SystemSupplier.php
+++ b/app/model/supplier/SystemSupplier.php
@@ -42,7 +42,7 @@ class SystemSupplier extends BaseModel
*/
public function admin()
{
- return $this->hasOne(Admin::class, 'id', 'admin_id')->field(['id', 'account', 'pwd', 'admin_type', 'is_del', 'level', 'roles'])->bind([
+ return $this->hasOne(Admin::class, 'admin_id', 'admin_id')->field(['admin_id', 'account', 'pwd', 'admin_type', 'is_del', 'level', 'roles'])->bind([
'account',
'pwd',
'admin_type',
diff --git a/app/services/activity/StoreActivityServices.php b/app/services/activity/StoreActivityServices.php
index 7b83cdb..45e2589 100644
--- a/app/services/activity/StoreActivityServices.php
+++ b/app/services/activity/StoreActivityServices.php
@@ -24,7 +24,7 @@ use app\services\product\sku\StoreProductAttrServices;
use app\services\product\sku\StoreProductAttrValueServices;
use app\services\store\SystemStoreServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
/**
* 活动
diff --git a/app/services/activity/bargain/StoreBargainServices.php b/app/services/activity/bargain/StoreBargainServices.php
index 343c549..11c19d9 100644
--- a/app/services/activity/bargain/StoreBargainServices.php
+++ b/app/services/activity/bargain/StoreBargainServices.php
@@ -29,7 +29,7 @@ use app\services\system\attachment\SystemAttachmentServices;
use app\services\user\UserServices;
use app\jobs\product\ProductLogJob;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\UploadService;
use crmeb\services\UtilService;
use crmeb\services\wechat\MiniProgram;
diff --git a/app/services/activity/combination/StoreCombinationServices.php b/app/services/activity/combination/StoreCombinationServices.php
index b0167c2..276a311 100644
--- a/app/services/activity/combination/StoreCombinationServices.php
+++ b/app/services/activity/combination/StoreCombinationServices.php
@@ -31,7 +31,7 @@ use app\services\product\sku\StoreProductAttrValueServices;
use app\jobs\product\ProductLogJob;
use app\services\user\UserServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\SystemConfigService;
use think\exception\ValidateException;
diff --git a/app/services/activity/combination/StorePinkServices.php b/app/services/activity/combination/StorePinkServices.php
index 090e17e..cc42fb0 100644
--- a/app/services/activity/combination/StorePinkServices.php
+++ b/app/services/activity/combination/StorePinkServices.php
@@ -21,7 +21,7 @@ use app\services\other\QrcodeServices;
use app\services\user\UserServices;
use app\services\system\attachment\SystemAttachmentServices;
use app\jobs\activity\pink\PinkJob;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\UploadService;
use crmeb\services\UtilService;
use crmeb\services\wechat\MiniProgram;
diff --git a/app/services/activity/discounts/StoreDiscountsServices.php b/app/services/activity/discounts/StoreDiscountsServices.php
index 0692459..76337ed 100644
--- a/app/services/activity/discounts/StoreDiscountsServices.php
+++ b/app/services/activity/discounts/StoreDiscountsServices.php
@@ -20,7 +20,7 @@ use app\services\product\sku\StoreProductAttrServices;
use app\services\product\sku\StoreProductAttrValueServices;
use app\services\user\label\UserLabelServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
/**
* 优惠套餐
diff --git a/app/services/activity/integral/StoreIntegralServices.php b/app/services/activity/integral/StoreIntegralServices.php
index 300afc3..2256874 100644
--- a/app/services/activity/integral/StoreIntegralServices.php
+++ b/app/services/activity/integral/StoreIntegralServices.php
@@ -25,7 +25,7 @@ use app\services\product\sku\StoreProductAttrServices;
use app\services\product\sku\StoreProductAttrValueServices;
use app\jobs\product\ProductLogJob;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
/**
diff --git a/app/services/activity/lottery/LuckLotteryServices.php b/app/services/activity/lottery/LuckLotteryServices.php
index 64ea6f6..f229619 100644
--- a/app/services/activity/lottery/LuckLotteryServices.php
+++ b/app/services/activity/lottery/LuckLotteryServices.php
@@ -22,7 +22,7 @@ use app\services\user\label\UserLabelRelationServices;
use app\services\user\UserMoneyServices;
use app\services\user\UserServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
/**
diff --git a/app/services/activity/seckill/StoreSeckillServices.php b/app/services/activity/seckill/StoreSeckillServices.php
index a809e39..bbe56e4 100644
--- a/app/services/activity/seckill/StoreSeckillServices.php
+++ b/app/services/activity/seckill/StoreSeckillServices.php
@@ -33,7 +33,7 @@ use app\services\product\sku\StoreProductAttrServices;
use app\services\product\sku\StoreProductAttrValueServices;
use app\jobs\product\ProductLogJob;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\SystemConfigService;
use think\exception\ValidateException;
diff --git a/app/services/message/NoticeService.php b/app/services/message/NoticeService.php
index 339167c..bc059d3 100644
--- a/app/services/message/NoticeService.php
+++ b/app/services/message/NoticeService.php
@@ -21,7 +21,7 @@ use app\services\order\StoreOrderCartInfoServices;
use app\services\order\StoreOrderServices;
use app\services\system\config\ConfigServices;
use app\services\wechat\WechatUserServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
diff --git a/app/services/message/wechat/MessageServices.php b/app/services/message/wechat/MessageServices.php
index 6d51036..b52ced0 100644
--- a/app/services/message/wechat/MessageServices.php
+++ b/app/services/message/wechat/MessageServices.php
@@ -25,7 +25,7 @@ use app\services\user\UserServices;
use app\services\wechat\WechatQrcodeServices;
use app\services\wechat\WechatReplyServices;
use app\services\wechat\WechatUserServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\SystemConfigService;
use crmeb\services\wechat\Messages;
use crmeb\services\wechat\OfficialAccount;
diff --git a/app/services/order/StoreCartServices.php b/app/services/order/StoreCartServices.php
index 3a0a599..d452b57 100644
--- a/app/services/order/StoreCartServices.php
+++ b/app/services/order/StoreCartServices.php
@@ -34,7 +34,7 @@ use app\services\user\member\MemberCardServices;
use app\services\user\UserAddressServices;
use app\services\user\UserServices;
use app\jobs\product\ProductLogJob;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\traits\OptionTrait;
use crmeb\traits\ServicesTrait;
use think\exception\ValidateException;
diff --git a/app/services/order/StoreOrderCartInfoServices.php b/app/services/order/StoreOrderCartInfoServices.php
index 8d69bb4..fe6c5f2 100644
--- a/app/services/order/StoreOrderCartInfoServices.php
+++ b/app/services/order/StoreOrderCartInfoServices.php
@@ -13,7 +13,7 @@ namespace app\services\order;
use app\dao\order\StoreOrderCartInfoDao;
use app\services\BaseServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\SystemConfigService;
use crmeb\traits\OptionTrait;
use crmeb\traits\ServicesTrait;
diff --git a/app/services/order/StoreOrderCreateServices.php b/app/services/order/StoreOrderCreateServices.php
index 6eab672..bf9a9df 100644
--- a/app/services/order/StoreOrderCreateServices.php
+++ b/app/services/order/StoreOrderCreateServices.php
@@ -27,7 +27,7 @@ use app\services\product\shipping\ShippingTemplatesRegionServices;
use app\services\product\shipping\ShippingTemplatesServices;
use app\services\wechat\WechatUserServices;
use app\services\BaseServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use app\common\dao\store\order\StoreOrderDao;
use app\services\user\UserServices;
use crmeb\traits\ServicesTrait;
diff --git a/app/services/order/StoreOrderRefundServices.php b/app/services/order/StoreOrderRefundServices.php
index 27226f3..c62907b 100644
--- a/app/services/order/StoreOrderRefundServices.php
+++ b/app/services/order/StoreOrderRefundServices.php
@@ -30,7 +30,7 @@ use app\services\user\UserMoneyServices;
use app\services\user\UserServices;
use app\services\wechat\WechatUserServices;
use crmeb\services\AliPayService;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder as Form;
use crmeb\services\wechat\Payment;
use crmeb\traits\ServicesTrait;
diff --git a/app/services/order/StoreOrderServices.php b/app/services/order/StoreOrderServices.php
index 3fad992..fa1b927 100644
--- a/app/services/order/StoreOrderServices.php
+++ b/app/services/order/StoreOrderServices.php
@@ -34,7 +34,7 @@ use app\services\product\product\StoreProductReplyServices;
use app\services\user\UserAddressServices;
use app\services\user\level\UserLevelServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService;
use crmeb\services\FileService;
use crmeb\services\FormBuilder as Form;
use crmeb\services\printer\Printer;
@@ -1744,7 +1744,7 @@ HTML;
/** @var StoreOrderCreateServices $storeOrderCreateService */
$storeOrderCreateService = app()->make(StoreOrderCreateServices::class);
$key = md5($storeOrderCreateService->getNewOrderId((string)$uid) . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8));
- CacheService::redisHandler()->set('user_order_' . $uid . $key, compact('cartInfo', 'priceGroup', 'other', 'addr', 'invalidCartInfo', 'deduction'), $cacheTime);
+ SupplierCacheService::redisHandler()->set('user_order_' . $uid . $key, compact('cartInfo', 'priceGroup', 'other', 'addr', 'invalidCartInfo', 'deduction'), $cacheTime);
return $key;
}
@@ -1757,8 +1757,8 @@ HTML;
public function getCacheOrderInfo(int $uid, string $key)
{
$cacheName = 'user_order_' . $uid . $key;
- if (!CacheService::redisHandler()->has($cacheName)) return null;
- return CacheService::redisHandler()->get($cacheName);
+ if (!SupplierCacheService::redisHandler()->has($cacheName)) return null;
+ return SupplierCacheService::redisHandler()->get($cacheName);
}
/**
@@ -2650,7 +2650,7 @@ HTML;
if ($new) {
$cartIds = explode(',', $cartIds);
$cartInfo = [];
- $redis = CacheService::redisHandler();
+ $redis = SupplierCacheService::redisHandler();
foreach ($cartIds as $key) {
$info = $redis->get($key);
if ($info) {
diff --git a/app/services/order/supplier/SupplierOrderServices.php b/app/services/order/supplier/SupplierOrderServices.php
index 11d895f..e34dced 100644
--- a/app/services/order/supplier/SupplierOrderServices.php
+++ b/app/services/order/supplier/SupplierOrderServices.php
@@ -18,7 +18,7 @@ use think\facade\Log;
use app\services\BaseServices;
use crmeb\traits\ServicesTrait;
use app\dao\order\StoreOrderDao;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
use app\services\order\StoreOrderCartInfoServices;
diff --git a/app/services/other/CityAreaServices.php b/app/services/other/CityAreaServices.php
index f1f3b0e..5554d42 100644
--- a/app/services/other/CityAreaServices.php
+++ b/app/services/other/CityAreaServices.php
@@ -15,7 +15,7 @@ namespace app\services\other;
use app\dao\other\CityAreaDao;
use app\services\BaseServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder as Form;
/**
diff --git a/app/services/other/ExpressServices.php b/app/services/other/ExpressServices.php
index bebb4b0..5671852 100644
--- a/app/services/other/ExpressServices.php
+++ b/app/services/other/ExpressServices.php
@@ -16,7 +16,7 @@ use app\dao\other\ExpressDao;
use app\services\BaseServices;
use app\services\serve\ServeServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\ExpressService;
use crmeb\services\FormBuilder as Form;
diff --git a/app/services/other/SystemCityServices.php b/app/services/other/SystemCityServices.php
index 3ca9823..bb88383 100644
--- a/app/services/other/SystemCityServices.php
+++ b/app/services/other/SystemCityServices.php
@@ -15,7 +15,7 @@ namespace app\services\other;
use app\dao\other\SystemCityDao;
use app\services\BaseServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder as Form;
/**
diff --git a/app/services/other/queue/QueueServices.php b/app/services/other/queue/QueueServices.php
index e421b61..8c8546d 100644
--- a/app/services/other/queue/QueueServices.php
+++ b/app/services/other/queue/QueueServices.php
@@ -28,7 +28,7 @@ use app\services\user\label\UserLabelRelationServices;
use app\services\user\label\UserLabelServices;
use app\services\user\UserServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
use think\facade\Log;
diff --git a/app/services/product/product/StoreProductCouponServices.php b/app/services/product/product/StoreProductCouponServices.php
index 097f856..07b4364 100644
--- a/app/services/product/product/StoreProductCouponServices.php
+++ b/app/services/product/product/StoreProductCouponServices.php
@@ -19,7 +19,7 @@ use app\services\order\StoreOrderCartInfoServices;
use app\services\order\StoreOrderServices;
use app\services\user\UserServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
/**
diff --git a/app/services/product/shipping/ShippingTemplatesFreeServices.php b/app/services/product/shipping/ShippingTemplatesFreeServices.php
index cf7acdf..8161e46 100644
--- a/app/services/product/shipping/ShippingTemplatesFreeServices.php
+++ b/app/services/product/shipping/ShippingTemplatesFreeServices.php
@@ -15,7 +15,7 @@ namespace app\services\product\shipping;
use app\dao\product\shipping\ShippingTemplatesFreeDao;
use app\services\BaseServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\utils\Arr;
/**
diff --git a/app/services/product/shipping/ShippingTemplatesRegionServices.php b/app/services/product/shipping/ShippingTemplatesRegionServices.php
index 24aae06..a67a205 100644
--- a/app/services/product/shipping/ShippingTemplatesRegionServices.php
+++ b/app/services/product/shipping/ShippingTemplatesRegionServices.php
@@ -15,7 +15,7 @@ namespace app\services\product\shipping;
use app\dao\product\shipping\ShippingTemplatesRegionDao;
use app\services\BaseServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\utils\Arr;
/**
diff --git a/app/services/product/shipping/ShippingTemplatesServices.php b/app/services/product/shipping/ShippingTemplatesServices.php
index 0245569..660f700 100644
--- a/app/services/product/shipping/ShippingTemplatesServices.php
+++ b/app/services/product/shipping/ShippingTemplatesServices.php
@@ -16,7 +16,7 @@ use app\services\BaseServices;
use app\dao\product\shipping\ShippingTemplatesDao;
use app\services\product\product\StoreProductServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
/**
* 运费模板
diff --git a/app/services/product/sku/StoreProductAttrValueServices.php b/app/services/product/sku/StoreProductAttrValueServices.php
index 6afc029..8368518 100644
--- a/app/services/product/sku/StoreProductAttrValueServices.php
+++ b/app/services/product/sku/StoreProductAttrValueServices.php
@@ -26,7 +26,7 @@ use app\services\product\product\StoreProductStockRecordServices;
// use app\webscoket\SocketPush;
use crmeb\exceptions\AdminException;
use app\services\product\product\StoreProductServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\traits\ServicesTrait;
use think\exception\ValidateException;
diff --git a/app/services/supplier/LoginServices.php b/app/services/supplier/LoginServices.php
index c5c68db..29cf0d3 100644
--- a/app/services/supplier/LoginServices.php
+++ b/app/services/supplier/LoginServices.php
@@ -21,7 +21,7 @@ use app\services\system\SystemRoleServices;
use crmeb\exceptions\AdminException;
use app\dao\system\admin\SystemAdminDao;
use crmeb\exceptions\AuthException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService;
use crmeb\traits\ServicesTrait;
use crmeb\utils\ApiErrorCode;
use crmeb\utils\JwtAuth;
@@ -107,8 +107,7 @@ class LoginServices extends BaseServices
$supplierInfo->last_ip = app('request')->ip();
$supplierInfo->login_count++;
$supplierInfo->save();
-
- $tokenInfo = $this->createToken($supplierInfo['id'], $type, $supplierInfo->pwd);
+ $tokenInfo = $this->createToken($supplierInfo['admin_id'], $type, $supplierInfo->pwd);
/** @var SystemMenusServices $services */
$services = app()->make(SystemMenusServices::class);
[$menus, $uniqueAuth] = $services->getMenusList($supplierInfo->roles, 0, 4);
@@ -119,9 +118,9 @@ class LoginServices extends BaseServices
'menus' => $menus,
'unique_auth' => $uniqueAuth,
'user_info' => [
- 'id' => $supplierInfo->getData('id'),
+ 'id' => $supplierInfo->getData('admin_id'),
'account' => $supplierInfo->getData('account'),
- 'avatar' => $supplierInfo->getData('head_pic'),
+ 'avatar' => $supplierInfo->getData('avatar'),
],
'logo' => sys_config('site_logo'),
'logo_square' => sys_config('site_logo_square'),
@@ -157,21 +156,21 @@ class LoginServices extends BaseServices
*/
public function parseToken(string $token): array
{
- /** @var CacheService $cacheService */
- $cacheService = app()->make(CacheService::class);
+ /** @var SupplierCacheService $supplierCacheService */
+ $supplierCacheService = app()->make(SupplierCacheService::class);
if (!$token || $token === 'undefined') {
throw new AuthException(ApiErrorCode::ERR_LOGIN);
}
//检测token是否过期
$md5Token = md5($token);
- if (!$cacheService->hasToken($md5Token) || !($cacheToken = $cacheService->getTokenBucket($md5Token))) {
+ if (!$supplierCacheService->hasToken($md5Token) || !($cacheToken = $supplierCacheService->getTokenBucket($md5Token))) {
throw new AuthException(ApiErrorCode::ERR_LOGIN);
}
//是否超出有效次数
if (isset($cacheToken['invalidNum']) && $cacheToken['invalidNum'] >= 3) {
if (!request()->isCli()) {
- $cacheService->clearToken($md5Token);
+ $supplierCacheService->clearToken($md5Token);
}
throw new AuthException(ApiErrorCode::ERR_LOGIN_INVALID);
}
@@ -183,28 +182,24 @@ class LoginServices extends BaseServices
//验证token
try {
$jwtAuth->verifyToken();
- $cacheService->setTokenBucket($md5Token, $cacheToken, $cacheToken['exp']);
+ $supplierCacheService->setTokenBucket($md5Token, $cacheToken, $cacheToken['exp']);
} catch (ExpiredException $e) {
$cacheToken['invalidNum'] = isset($cacheToken['invalidNum']) ? $cacheToken['invalidNum']++ : 1;
- $cacheService->setTokenBucket($md5Token, $cacheToken, $cacheToken['exp']);
+ $supplierCacheService->setTokenBucket($md5Token, $cacheToken, $cacheToken['exp']);
} catch (\Throwable $e) {
if (!request()->isCli()) {
- $cacheService->clearToken($md5Token);
+ $supplierCacheService->clearToken($md5Token);
}
throw new AuthException(ApiErrorCode::ERR_LOGIN_INVALID);
}
//获取管理员信息
- $adminInfo = $this->adminDao->getOne(['id' => $id, 'is_del' => 0, 'status' => 1]);
- if(!$adminInfo){
- throw new AuthException(ApiErrorCode::ERR_ADMINID_VOID);
- }
- if ($auth !== md5($adminInfo->pwd)) {
- throw new AuthException(ApiErrorCode::ERR_LOGIN_INVALID);
- }
- $supplierInfo = $this->dao->getOne(['id' =>(int)$adminInfo->relation_id, 'is_del' => 0], '*', ['admin']);
+ $adminInfo = $this->adminDao->getOne(['admin_id' => $id, 'is_del' => 0, 'status' => 1]);
+ if(!$adminInfo) throw new AuthException(ApiErrorCode::ERR_ADMINID_VOID);
+ if ($auth !== md5($adminInfo->pwd)) throw new AuthException(ApiErrorCode::ERR_LOGIN_INVALID);
+ $supplierInfo = $this->dao->getOne(['admin_id' =>(int)$adminInfo->admin_id, 'is_del' => 0], '*', ['admin']);
if (!$supplierInfo || !$supplierInfo->account || $supplierInfo->admin_is_del) {
if (!request()->isCli()) {
- $cacheService->clearToken($md5Token);
+ $supplierCacheService->clearToken($md5Token);
}
throw new AuthException(ApiErrorCode::ERR_LOGIN_STATUS);
}
diff --git a/app/services/system/SystemRoleServices.php b/app/services/system/SystemRoleServices.php
index 0a0240b..61ec9de 100644
--- a/app/services/system/SystemRoleServices.php
+++ b/app/services/system/SystemRoleServices.php
@@ -18,7 +18,7 @@ use app\dao\system\SystemRoleDao;
use app\services\store\SystemStoreStaffServices;
use crmeb\exceptions\AuthException;
use crmeb\utils\ApiErrorCode;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
/**
diff --git a/app/services/system/admin/SystemAdminServices.php b/app/services/system/admin/SystemAdminServices.php
index b43aaac..a71af01 100644
--- a/app/services/system/admin/SystemAdminServices.php
+++ b/app/services/system/admin/SystemAdminServices.php
@@ -19,7 +19,7 @@ use app\services\user\UserExtractServices;
use crmeb\exceptions\AdminException;
use app\common\dao\system\admin\AdminDao;
use app\services\system\SystemMenusServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder;
use app\services\system\SystemRoleServices;
use crmeb\services\SystemConfigService;
diff --git a/app/services/user/LoginServices.php b/app/services/user/LoginServices.php
index ba4d94f..3e0cd68 100644
--- a/app/services/user/LoginServices.php
+++ b/app/services/user/LoginServices.php
@@ -17,7 +17,7 @@ use app\services\BaseServices;
use app\common\dao\user\UserDao;
use app\services\message\sms\SmsRecordServices;
use app\services\wechat\WechatUserServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\exception\ValidateException;
use think\facade\Config;
diff --git a/app/services/user/UserBillServices.php b/app/services/user/UserBillServices.php
index d5335d5..c2c11b7 100644
--- a/app/services/user/UserBillServices.php
+++ b/app/services/user/UserBillServices.php
@@ -17,7 +17,7 @@ use app\dao\user\UserBillDao;
use app\services\user\level\UserLevelServices;
use think\Exception;
use think\exception\ValidateException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use think\facade\Log;
/**
diff --git a/app/services/user/UserBrokerageServices.php b/app/services/user/UserBrokerageServices.php
index f7a4a12..7010a4b 100644
--- a/app/services/user/UserBrokerageServices.php
+++ b/app/services/user/UserBrokerageServices.php
@@ -17,7 +17,7 @@ use app\services\BaseServices;
use app\services\order\StoreOrderCartInfoServices;
use app\services\order\StoreOrderServices;
use think\exception\ValidateException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
/**
* 用户佣金
diff --git a/app/services/user/UserMoneyServices.php b/app/services/user/UserMoneyServices.php
index 47a7a2c..f073650 100644
--- a/app/services/user/UserMoneyServices.php
+++ b/app/services/user/UserMoneyServices.php
@@ -14,7 +14,7 @@ namespace app\services\user;
use app\dao\user\UserMoneyDao;
use app\services\BaseServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\exceptions\AdminException;
/**
diff --git a/app/services/user/UserServices.php b/app/services/user/UserServices.php
index f6a686a..6e78bfb 100644
--- a/app/services/user/UserServices.php
+++ b/app/services/user/UserServices.php
@@ -43,7 +43,7 @@ use app\services\wechat\WechatUserServices;
use app\services\work\WorkClientServices;
use app\services\work\WorkMemberServices;
use crmeb\exceptions\AdminException;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder as Form;
use crmeb\services\FormBuilder;
use crmeb\services\SystemConfigService;
diff --git a/app/services/user/label/UserLabelCateServices.php b/app/services/user/label/UserLabelCateServices.php
index b1a38eb..35141c4 100644
--- a/app/services/user/label/UserLabelCateServices.php
+++ b/app/services/user/label/UserLabelCateServices.php
@@ -14,7 +14,7 @@ namespace app\services\user\label;
use app\dao\other\CategoryDao;
use app\services\BaseServices;
-use crmeb\services\CacheService;
+use crmeb\services\SupplierCacheService as CacheService;
use crmeb\services\FormBuilder;
use crmeb\traits\ServicesTrait;
use think\exception\ValidateException;
diff --git a/app/validate/supplier/SupplierTicketPrintValidate.php b/app/validate/supplier/SupplierTicketPrintValidate.php
new file mode 100644
index 0000000..72c4ed0
--- /dev/null
+++ b/app/validate/supplier/SupplierTicketPrintValidate.php
@@ -0,0 +1,54 @@
+
+// +----------------------------------------------------------------------
+namespace app\validate\supplier;
+
+use think\Validate;
+
+class SupplierTicketPrintValidate extends Validate
+{
+
+ /**
+ * 定义验证规则
+ * 格式:'字段名' => ['规则1','规则2'...]
+ *
+ * @var array
+ */
+ protected $rule = [
+ 'develop_id' => 'require|gt:0',
+ 'api_key' => 'require|max:100',
+ 'client_id' => 'require|max:100',
+ 'terminal_number' => 'require|max:100',
+ 'status' => 'require|number',
+ ];
+
+ /**
+ * 定义错误信息
+ * 格式:'字段名.规则名' => '错误信息'
+ *
+ * @var array
+ */
+ protected $message = [
+ 'develop_id.require' => '请填写用户ID',
+ 'develop_id.gt' => '用户ID参数错误',
+ 'api_key.require' => '请填写秘钥',
+ 'api_key.max' => '秘钥最多不能超过100个字符',
+ 'client_id.require' => '请填写应用ID',
+ 'client_id.max' => '应用ID最多不能超过100个字符',
+ 'terminal_number.require' => '请填写终端号',
+ 'terminal_number.max' => '终端号最多不能超过100个字符',
+ 'status.require' => '开关',
+ 'status.number' => '开关',
+ ];
+
+ protected $scene = [
+ 'update' => ['develop_id', 'api_key', 'client_id', 'terminal_number', 'status'],
+ ];
+}
\ No newline at end of file
diff --git a/app/validate/supplier/SystemSupplierValidate.php b/app/validate/supplier/SystemSupplierValidate.php
new file mode 100644
index 0000000..d616b93
--- /dev/null
+++ b/app/validate/supplier/SystemSupplierValidate.php
@@ -0,0 +1,74 @@
+
+// +----------------------------------------------------------------------
+namespace app\validate\supplier;
+
+use think\Validate;
+
+class SystemSupplierValidate extends Validate
+{
+
+ /**
+ * 定义验证规则
+ * 格式:'字段名' => ['规则1','规则2'...]
+ *
+ * @var array
+ */
+ protected $rule = [
+ 'supplier_name' => 'require|max:25',
+ 'name' => 'max:25',
+ 'phone' => 'require|mobile',
+ 'email' => 'email|max:50',
+ 'address' => 'max:255',
+ 'province' => 'require|gt:0',
+ 'city' => 'require|gt:0',
+ 'area' => 'require|gt:0',
+ 'detailed_address' => 'max:255',
+ 'account' => 'require|length:4,64',
+ 'pwd' => ['require', 'length:4,64'],
+ 'mark' => 'max:255',
+ ];
+
+ /**
+ * 定义错误信息
+ * 格式:'字段名.规则名' => '错误信息'
+ *
+ * @var array
+ */
+ protected $message = [
+ 'supplier_name.require' => '请填写供应商名称',
+ 'supplier_name.max' => '供应商名称最多不能超过25个字符',
+ 'name.max' => '名称最多不能超过25个字符',
+ 'phone.require' => '请填写手机号',
+ 'phone.mobile' => '手机号格式不正确',
+ 'email.email' => '邮箱格式不正确',
+ 'email.max' => '邮箱最多不能超过100个字符',
+ 'address.max' => '供应商地址最多不能超过255个字符',
+ 'mark.max' => '备注最多不能超过255个字符',
+ 'province.require' => '请选择省份',
+ 'province.gt' => '请选择省份',
+ 'city.require' => '请选择城市',
+ 'city.gt' => '请选择城市',
+ 'area.require' => '请选择地区',
+ 'area.gt' => '请选择地区',
+ 'detailed_address.max' => '详细地址最多不能超过255个字符',
+ 'account.require' => '请填写供应商登录用户名',
+ 'account.length' => '供应商登录用户名4-64长度字符',
+ 'pwd.require' => '请输入密码',
+ 'pwd.length' => '密码长度4-64位字符',
+ ];
+
+ protected $scene = [
+ 'login' => ['account', 'pwd'],
+ 'update' => ['supplier_name', 'name', 'phone', 'email', 'address', 'detailed_address', 'province', 'city', 'area'],
+ 'save' => ['supplier_name', 'name', 'phone', 'email', 'address', 'detailed_address', 'province', 'city', 'area','account', 'pwd', 'mark'],
+ 'admin_update' => ['supplier_name', 'name', 'phone', 'email', 'address', 'detailed_address', 'province', 'city', 'area','account', 'mark'],
+ ];
+}
\ No newline at end of file
diff --git a/crmeb/services/BlockPuzzleCaptchaService.php b/crmeb/services/BlockPuzzleCaptchaService.php
index 948a785..180976e 100644
--- a/crmeb/services/BlockPuzzleCaptchaService.php
+++ b/crmeb/services/BlockPuzzleCaptchaService.php
@@ -20,6 +20,14 @@ class BlockPuzzleCaptchaService extends baseBlockPuzzleCaptchaService
$this->setOriginData($token);
//数据处理类
$blockData = $this->factory->makeBlockData();
+ // 数据处理 解密处理
+ $pattern = '/^[a-zA-Z0-9\/\r\n+]*={0,2}$/'; // Base64编码规则正则表达式
+ $isBase64 = preg_match($pattern, $pointJson);
+ if($isBase64){
+ // 如果是base64 则是加密数据,需要解密
+ $decoded = base64_decode($pointJson);
+ $pointJson = openssl_decrypt($decoded, 'AES-128-ECB', $this->originData['secretKey'],OPENSSL_RAW_DATA,NULL);
+ }
$pointJson = json_decode($pointJson);
//解码出来的前端坐标
$targetPoint = new PointVo($pointJson->x, $pointJson->y);
@@ -35,12 +43,9 @@ class BlockPuzzleCaptchaService extends baseBlockPuzzleCaptchaService
}
}
- public function verificationByEncryptCode(string $encryptCode)
- {
+ public function verificationByEncryptCode(string $encryptCode){
$result = explode('---',$encryptCode);
- if(empty($result)){
- throw new ParamException('参数错误!');
- }
+ if(empty($result)) throw new ParamException('参数错误!');
$this->validate($result[0], $result[1], function () use ($result,$encryptCode) {
$cacheEntity = $this->factory->getCacheInstance();
$cacheEntity->delete($result['token']);
@@ -48,4 +53,33 @@ class BlockPuzzleCaptchaService extends baseBlockPuzzleCaptchaService
});
}
+
+
+ public function verificationByEncryptCodeV2(string $encryptCode,string $token){
+ $decoded = base64_decode($encryptCode);
+ if($decoded !== false && json_last_error() === JSON_ERROR_NONE){
+ //获取并设置 $this->originData
+ $this->setOriginData($token);
+ // 如果是base64 则是加密数据,需要解密
+ $encryptCode = openssl_decrypt($decoded, 'AES-128-ECB', $this->originData['secretKey'],OPENSSL_RAW_DATA,NULL);
+ }
+ $result = explode('---',$encryptCode);
+ if(empty($result)) throw new ParamException('参数错误!');
+
+ $this->validate($result[0], $result[1], function () use ($result,$encryptCode) {
+ $cacheEntity = $this->factory->getCacheInstance();
+ $cacheEntity->delete($result['token']);
+ $cacheEntity->delete($encryptCode);
+ });
+ }
+
+
+
+
+
+
+
+
+
+
}
diff --git a/crmeb/services/CacheService.php b/crmeb/services/CacheService.php
index 9a0dd57..1e98d42 100644
--- a/crmeb/services/CacheService.php
+++ b/crmeb/services/CacheService.php
@@ -5,6 +5,7 @@ namespace crmeb\services;
use think\cache\driver\Redis;
use think\facade\Cache;
+use think\facade\Cache as CacheStatic;
use think\facade\Config;
/**
@@ -157,4 +158,63 @@ class CacheService
return $this->handler->remember($this->cacheKey($key), $value, $expire);
}
+ /**
+ * 放入令牌桶
+ * @param string $key
+ * @param array $value
+ * @param string $type
+ * @return bool
+ */
+ public static function setTokenBucket(string $key, $value, $expire = null, string $type = 'admin')
+ {
+ try {
+ $redisCahce = self::redisHandler($type);
+ return $redisCahce->set($key, $value, $expire);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+ /**
+ * 获取token令牌桶
+ * @param string $key
+ * @return mixed|null
+ * @throws \Psr\SimpleCache\InvalidArgumentException
+ */
+ public static function getTokenBucket(string $key)
+ {
+ try {
+ return self::redisHandler()->get($key, null);
+ } catch (\Throwable $e) {
+ return null;
+ }
+ }
+ /**
+ * 查看令牌是否存在
+ * @param string $key
+ * @return bool
+ */
+ public static function hasToken(string $key)
+ {
+ try {
+ return self::redisHandler()->has($key);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+ /**
+ * Redis缓存句柄
+ *
+ * @return \think\cache\TagSet|CacheStatic
+ */
+ public static function redisHandler(string $type = null)
+ {
+ if ($type) {
+ return CacheStatic::store('redis')->tag($type);
+ } else {
+ return CacheStatic::store('redis');
+ }
+ }
+
+
+
}
diff --git a/crmeb/services/GroupDataService.php b/crmeb/services/GroupDataService.php
new file mode 100644
index 0000000..e8397c0
--- /dev/null
+++ b/crmeb/services/GroupDataService.php
@@ -0,0 +1,88 @@
+
+// +----------------------------------------------------------------------
+
+namespace crmeb\services;
+
+use app\services\system\config\SystemGroupDataServices;
+
+/**
+ * 获取组合数据配置
+ * Class GroupDataService
+ * @package crmeb\services
+ */
+class GroupDataService
+{
+ /**
+ * 获取单个值
+ * @param string $config_name 配置名称
+ * @param int $limit 截取多少条
+ * @param bool $isCaChe 是否读取缓存
+ * @return array
+ */
+ public static function getData(string $config_name, int $limit = 0, bool $isCaChe = false): array
+ {
+ $callable = function () use ($config_name, $limit) {
+ event('get.config');
+ try {
+ /** @var SystemGroupDataServices $service */
+ $service = app()->make(SystemGroupDataServices::class);
+ return $service->getConfigNameValue($config_name, $limit);
+ } catch (\Exception $e) {
+ return [];
+ }
+ };
+ try {
+ $cacheName = $limit ? "data_{$config_name}_{$limit}" : "data_{$config_name}";
+
+ if ($isCaChe)
+ return $callable();
+
+ return CacheService::get($cacheName, $callable);
+
+ } catch (\Throwable $e) {
+ return $callable();
+ }
+ }
+
+ /**
+ * 根据id 获取单个值
+ * @param int $id
+ * @param bool $isCaChe 是否读取缓存
+ * @return array
+ */
+ public static function getDataNumber(int $id, bool $isCaChe = false): array
+ {
+ $callable = function () use ($id) {
+ try {
+
+ /** @var SystemGroupDataServices $service */
+ $service = app()->make(SystemGroupDataServices::class);
+ $data = $service->getDateValue($id);
+ if (is_object($data))
+ $data = $data->toArray();
+ return $data;
+ } catch (\Exception $e) {
+ return [];
+ }
+ };
+ try {
+ $cacheName = "data_number_{$id}";
+
+ if ($isCaChe)
+ return $callable();
+
+ return CacheService::get($cacheName, $callable);
+
+ } catch (\Throwable $e) {
+ return $callable();
+ }
+ }
+}
diff --git a/crmeb/services/SupplierCacheService.php b/crmeb/services/SupplierCacheService.php
new file mode 100644
index 0000000..513e1f8
--- /dev/null
+++ b/crmeb/services/SupplierCacheService.php
@@ -0,0 +1,407 @@
+
+// +----------------------------------------------------------------------
+
+namespace crmeb\services;
+
+use think\facade\Cache as CacheStatic;
+
+/**
+ * crmeb 缓存类
+ * Class SupplierCacheService
+ * @package crmeb\services
+ * @mixin \Redis
+ */
+class SupplierCacheService
+{
+
+ //副屏相关
+ const CASHIER_AUX_SCREEN_TAG = 'auxScreen';
+
+ /**
+ * 标签名
+ * @var string
+ */
+ protected static $globalCacheName = '_cached_1515146130';
+
+ /**
+ * 缓存队列key
+ * @var string[]
+ */
+ protected static $redisQueueKey = [
+ 0 => 'product',
+ 1 => 'seckill',
+ 2 => 'bargain',
+ 3 => 'combination',
+ 4 => 'integral',
+ 5 => 'discounts',
+ 6 => 'lottery'
+ ];
+
+ /**
+ * 过期时间
+ * @var int
+ */
+ protected static $expire;
+
+ /**
+ * 获取缓存过期时间
+ * @param int|null $expire
+ * @return int
+ */
+ protected static function getExpire(int $expire = null): int
+ {
+ if (self::$expire) {
+ return (int)self::$expire;
+ }
+ $expire = !is_null($expire) ? $expire : SystemConfigService::get('cache_config', null, true);
+ if (!is_int($expire))
+ $expire = (int)$expire;
+ return self::$expire = $expire;
+ }
+
+ /**
+ * 判断缓存是否存在
+ * @param string $name
+ * @return bool
+ * @throws \Psr\SimpleCache\InvalidArgumentException
+ */
+ public static function has(string $name): bool
+ {
+ try {
+ return CacheStatic::has($name);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 写入缓存
+ * @param string $name 缓存名称
+ * @param mixed $value 缓存值
+ * @param int $expire 缓存时间,为0读取系统缓存时间
+ * @return bool
+ */
+ public static function set(string $name, $value, int $expire = null): bool
+ {
+ try {
+ return self::handler()->set($name, $value, $expire ?? self::getExpire($expire));
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 如果不存在则写入缓存
+ * @param string $name
+ * @param bool $default
+ * @return mixed
+ */
+ public static function get(string $name, $default = false, int $expire = null)
+ {
+ try {
+ return self::handler()->remember($name, $default, $expire ?? self::getExpire($expire));
+ } catch (\Throwable $e) {
+ try {
+ if (is_callable($default)) {
+ return $default();
+ } else {
+ return $default;
+ }
+ } catch (\Throwable $e) {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * 如果不存在则写入缓存
+ * @param string $name
+ * @param bool $default
+ * @return mixed
+ */
+ public static function remember(string $name, $default = false, int $expire = null)
+ {
+ try {
+ return self::handler()->remember($name, $default, $expire ?? self::getExpire($expire));
+ } catch (\Throwable $e) {
+ try {
+ if (is_callable($default)) {
+ return $default();
+ } else {
+ return $default;
+ }
+ } catch (\Throwable $e) {
+ return null;
+ }
+ }
+ }
+
+ /**
+ * 删除缓存
+ * @param string $name
+ * @return bool
+ * @throws \Psr\SimpleCache\InvalidArgumentException
+ */
+ public static function delete(string $name)
+ {
+ return CacheStatic::delete($name);
+ }
+
+ /**
+ * 缓存句柄
+ *
+ * @return \think\cache\TagSet|CacheStatic
+ */
+ public static function handler(?string $cacheName = null)
+ {
+ return CacheStatic::tag($cacheName ?: self::$globalCacheName);
+ }
+
+ /**
+ * 清空缓存池
+ * @return bool
+ */
+ public static function clear()
+ {
+ return self::handler()->clear();
+ }
+
+ /**
+ * Redis缓存句柄
+ *
+ * @return \think\cache\TagSet|CacheStatic
+ */
+ public static function redisHandler(string $type = null)
+ {
+ if ($type) {
+ return CacheStatic::store('redis')->tag($type);
+ } else {
+ return CacheStatic::store('redis');
+ }
+ }
+
+ /**
+ * 放入令牌桶
+ * @param string $key
+ * @param array $value
+ * @param string $type
+ * @return bool
+ */
+ public static function setTokenBucket(string $key, $value, $expire = null, string $type = 'admin')
+ {
+ try {
+ $redisCahce = self::redisHandler($type);
+ return $redisCahce->set($key, $value, $expire);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 清除所有令牌桶
+ * @param string $type
+ * @return bool
+ */
+ public static function clearTokenAll(string $type = 'admin')
+ {
+ try {
+ return self::redisHandler($type)->clear();
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 清除令牌桶
+ * @param string $type
+ * @return bool
+ */
+ public static function clearToken(string $key)
+ {
+ try {
+ return self::redisHandler()->delete($key);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 查看令牌是否存在
+ * @param string $key
+ * @return bool
+ */
+ public static function hasToken(string $key)
+ {
+ try {
+ return self::redisHandler()->has($key);
+ } catch (\Throwable $e) {
+ return false;
+ }
+ }
+
+ /**
+ * 获取token令牌桶
+ * @param string $key
+ * @return mixed|null
+ * @throws \Psr\SimpleCache\InvalidArgumentException
+ */
+ public static function getTokenBucket(string $key)
+ {
+ try {
+ return self::redisHandler()->get($key, null);
+ } catch (\Throwable $e) {
+ return null;
+ }
+ }
+
+ /**
+ * 获取指定分数区间的成员
+ * @param $key
+ * @param int $start
+ * @param int $end
+ * @param array $options
+ * @return mixed
+ */
+ public static function zRangeByScore($key, $start = '-inf', $end = '+inf', array $options = [])
+ {
+ return self::redisHandler()->zRangeByScore($key, $start, $end, $options);
+ }
+
+
+ /**
+ * 设置redis入库队列
+ * @param string $unique
+ * @param int $number
+ * @param int $type
+ * @param bool $isPush true :重置 false:累加
+ * @return bool
+ */
+ public static function setStock(string $unique, int $number, int $type = 1, bool $isPush = true)
+ {
+ if (!$unique || !$number) return false;
+ $name = (self::$redisQueueKey[$type] ?? '') . '_' . $type . '_' . $unique;
+ /** @var self $cache */
+ $cache = self::redisHandler();
+ $res = true;
+ if ($isPush) {
+ $cache->del($name);
+ }
+ $data = [];
+ for ($i = 1; $i <= $number; $i++) {
+ $data[] = $i;
+ }
+ $res = $res && $cache->lPush($name, ...$data);
+ return $res;
+ }
+
+ /**
+ * 弹出redis队列中的库存条数
+ * @param string $unique
+ * @param int $number
+ * @param int $type
+ * @return bool
+ */
+ public static function popStock(string $unique, int $number, int $type = 1)
+ {
+ if (!$unique || !$number) return false;
+ $name = (self::$redisQueueKey[$type] ?? '') . '_' . $type . '_' . $unique;
+ /** @var self $cache */
+ $cache = self::redisHandler();
+ $res = true;
+ if ($number > $cache->lLen($name)) {
+ return false;
+ }
+ for ($i = 1; $i <= $number; $i++) {
+ $res = $res && $cache->lPop($name);
+ }
+
+ return $res;
+ }
+
+ /**
+ * 是否有库存|返回库存
+ * @param string $unique
+ * @param int $number
+ * @param int $type
+ * @return bool
+ */
+ public static function checkStock(string $unique, int $number = 0, int $type = 1)
+ {
+ $name = (self::$redisQueueKey[$type] ?? '') . '_' . $type . '_' . $unique;
+ if ($number) {
+ return self::redisHandler()->lLen($name) >= $number;
+ } else {
+ return self::redisHandler()->lLen($name);
+ }
+ }
+
+ /**
+ * 检查锁
+ * @param int $uid
+ * @param int $timeout
+ * @return bool
+ * @author 等风来
+ * @email 136327134@qq.com
+ * @date 2022/11/22
+ */
+ public static function setMutex(string $key, int $timeout = 10)
+ {
+ $curTime = time();
+ $readMutexKey = "redis:mutex:{$key}";
+ $mutexRes = self::redisHandler()->handler()->setnx($readMutexKey, $curTime + $timeout);
+ if ($mutexRes) {
+ return true;
+ }
+ //就算意外退出,下次进来也会检查key,防止死锁
+ $time = self::redisHandler()->handler()->get($readMutexKey);
+ if ($curTime > $time) {
+ self::redisHandler()->handler()->del($readMutexKey);
+ return self::redisHandler()->handler()->setnx($readMutexKey, $curTime + $timeout);
+ }
+ return false;
+ }
+
+ /**
+ * 删除锁
+ * @param $uid
+ * @author 等风来
+ * @email 136327134@qq.com
+ * @date 2022/11/22
+ */
+ public static function delMutex(string $key)
+ {
+ $readMutexKey = "redis:mutex:{$key}";
+ self::redisHandler()->handler()->del($readMutexKey);
+ }
+
+ /**
+ * 魔术方法
+ * @param $name
+ * @param $arguments
+ * @return mixed
+ */
+ public static function __callStatic($name, $arguments)
+ {
+ return self::redisHandler()->{$name}(...$arguments);
+ }
+
+ /**
+ * 魔术方法
+ * @param $name
+ * @param $arguments
+ * @return mixed
+ */
+ public function __call($name, $arguments)
+ {
+ return self::redisHandler()->{$name}(...$arguments);
+ }
+
+}
diff --git a/crmeb/utils/Arr.php b/crmeb/utils/Arr.php
index 8ff9bb5..73ef2eb 100644
--- a/crmeb/utils/Arr.php
+++ b/crmeb/utils/Arr.php
@@ -61,11 +61,11 @@ class Arr
$temp['path'] = $v['menu_path'];
$temp['title'] = $v['menu_name'];
$temp['icon'] = $v['icon'];
- $temp['header'] = $v['header'];
- $temp['is_header'] = $v['is_header'];
- if ($v['is_show_path']) {
- $temp['auth'] = ['hidden'];
- }
+ $temp['header'] = $v['header'] ?? '';
+ $temp['is_header'] = $v['is_header'] ?? '';
+ // if ($v['is_show_path']) {
+ // $temp['auth'] = ['hidden'];
+ // }
if (!empty($v['children'])) {
$temp['children'] = self::toIviewUi($v['children']);
}
@@ -87,7 +87,7 @@ class Arr
$dataSort = array_column($childs, 'sort');
array_multisort($dataSort, SORT_DESC, $childs);
foreach ($childs as $key => $navItem) {
- $resChild = self::getTree($data, $navItem['id']);
+ $resChild = self::getTree($data, $navItem['menu_id']);
if (null != $resChild) {
$childs[$key]['children'] = $resChild;
}
diff --git a/crmeb/utils/Json.php b/crmeb/utils/Json.php
new file mode 100644
index 0000000..fd9377d
--- /dev/null
+++ b/crmeb/utils/Json.php
@@ -0,0 +1,130 @@
+
+// +----------------------------------------------------------------------
+
+namespace crmeb\utils;
+
+
+use think\facade\Config;
+use think\facade\Lang;
+use think\Log;
+use think\Response;
+
+/**
+ * Json输出类
+ * Class Json
+ * @package crmeb\utils
+ */
+class Json
+{
+ private $code = 200;
+
+ public function code(int $code): self
+ {
+ $this->code = $code;
+ return $this;
+ }
+
+ /**
+ * 压缩数据
+ * @param $str
+ * @return string
+ * @author 等风来
+ * @email 136327134@qq.com
+ * @date 2022/11/10
+ */
+ protected function compress($str)
+ {
+ return base64_encode(gzdeflate(json_encode($str, JSON_UNESCAPED_UNICODE), 9));
+ }
+
+ /**
+ * @param int $status
+ * @param string $msg
+ * @param array|null $data
+ * @return Response
+ * @author 等风来
+ * @email 136327134@qq.com
+ * @date 2022/11/10
+ */
+ public function make(int $status, string $msg, ?array $data = null): Response
+ {
+ $request = app()->request;
+ $res = compact('status', 'msg');
+
+ if (!is_null($data)) {
+
+ $jsonData = json_encode($data);
+ //在debug关闭的时候返回压缩数据
+
+ $compressData = null;
+ if (strstr('/' . app()->request->rule()->getRule(), '/api/') !== false && strlen($jsonData) > 1024 && app()->config->get('cache.is_gzde', false)) {
+ $compressData = $this->compress($data);
+ $res['gzde'] = 1;
+ }
+
+ $res['data'] = $compressData ?: $data;
+
+ }
+
+ if ($res['msg'] && !is_numeric($res['msg'])) {
+ if (!$range = $request->get('lang')) {
+ $range = $request->cookie(Config::get('lang.cookie_var'));
+ }
+ $langData = array_values(Config::get('lang.accept_language', []));
+ if (!in_array($range, $langData)) {
+ $range = 'zh-cn';
+ }
+ $res['msg'] = Lang::get($res['msg'], [], $range);
+ }
+
+ //记录原始数据
+ $response = $res;
+ $response['data'] = $data;
+ response_log_write((array)$res, Log::INFO);
+
+ return Response::create($res, 'json', $this->code);
+ }
+
+ public function success($msg = 'ok', ?array $data = null): Response
+ {
+ if (is_array($msg)) {
+ $data = $msg;
+ $msg = 'ok';
+ }
+
+ return $this->make(200, $msg, $data);
+ }
+
+ public function successful(...$args): Response
+ {
+ return $this->success(...$args);
+ }
+
+ public function fail($msg = 'fail', ?array $data = null): Response
+ {
+ if (is_array($msg)) {
+ $data = $msg;
+ $msg = 'ok';
+ }
+
+ return $this->make(400, $msg, $data);
+ }
+
+ public function status($status, $msg = 'ok', $result = [])
+ {
+ $status = strtoupper($status);
+ if (is_array($msg)) {
+ $result = $msg;
+ $msg = 'ok';
+ }
+ return $this->success($msg, compact('status', 'result'));
+ }
+}