【程序目录】修复腾讯云短信错误问题

This commit is contained in:
吴昊天 2022-09-14 12:11:35 +08:00
parent 5224887cc8
commit 13adf9a931
5 changed files with 68 additions and 18 deletions

View File

@ -91,7 +91,7 @@ class SystemNotification extends AuthController
if ($data['mark'] == 'verify_code') $data['type'] = 'is_sms';
if (!$data['id']) return app('json')->fail(100100);
if ($this->services->saveData($data)) {
CacheService::delete('NOTCE_' . $data['mark']);
CacheService::delete('NOTICE_SMS_' . $data['mark']);
return app('json')->success(100001);
} else {
return app('json')->fail(100007);

View File

@ -14,8 +14,9 @@ use crmeb\services\CacheService;
use think\exception\ValidateException;
use crmeb\services\FormBuilder as Form;
use app\services\other\UploadService;
use think\facade\Config;
use think\facade\Lang;
use app\services\system\lang\LangTypeServices;
use app\services\system\lang\LangCodeServices;
use app\services\system\lang\LangCountryServices;
if (!function_exists('getWorkerManUrl')) {
@ -916,25 +917,33 @@ if (!function_exists('getLang')) {
*/
function getLang($code, array $replace = [])
{
$config = Config::get('lang');
$request = app()->request;
//获取接口传入的语言类型
if (!$range = $request->header('cb-lang')) {
$range = $request->cookie($config['cookie_var']);
if ($request->header('accept-language') !== null) {
$range = explode(',', $request->header('accept-language'))[0];
} else {
$range = 'zh-CN';
}
}
//如果找到当前语言类型,默认中文
$langData = array_values($config['accept_language']);
if (!in_array($range, $langData)) {
$range = 'zh_cn';
}
// 获取type_id
/** @var LangCountryServices $langCountryServices */
$langCountryServices = app()->make(LangCountryServices::class);
$typeId = $langCountryServices->value(['code' => $range], 'type_id') ?: 1;
// 获取缓存key
/** @var LangTypeServices $langTypeServices */
$langTypeServices = app()->make(LangTypeServices::class);
$langData = $langTypeServices->getColumn(['status' => 1, 'is_del' => 0], 'file_name', 'id');
$langStr = 'lang_' . str_replace('-', '_', $langData[$typeId]);
//读取当前语言的语言包
$lang = CacheService::redisHandler()->remember('lang_' . $range, function () use ($config, $range) {
return include $config['extend_list'][$range];
$lang = CacheService::redisHandler()->remember($langStr, function () use ($typeId, $range) {
/** @var LangCodeServices $langCodeServices */
$langCodeServices = app()->make(LangCodeServices::class);
return $langCodeServices->getColumn(['type_id' => $typeId, 'is_admin' => 1], 'lang_explain', 'code');
}, 3600);
//获取返回文字
$message = (string)($lang[$code] ?? 'Code Error');

View File

@ -65,7 +65,7 @@ abstract class BaseDao
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function selectList(array $where, string $field = '*', int $page = 0, int $limit = 0, bool $search = false)
public function selectList(array $where, string $field = '*', int $page = 0, int $limit = 0, string $order = '', bool $search = false)
{
if ($search) {
$model = $this->search($where);
@ -74,6 +74,8 @@ abstract class BaseDao
}
return $model->field($field)->when($page && $limit, function ($query) use ($page, $limit) {
$query->page($page, $limit);
})->when($order !== '', function ($query) use ($order) {
$query->order($order);
})->select();
}

View File

@ -101,6 +101,9 @@ class SmsService extends NoticeService
//获取发送短信驱动类型
$type = $this->smsType[sys_config('sms_type', 0)];
if ($type == 'tencent') {
$data = $this->handleTencent($mark, $data);
}
$smsMake = $services->sms($type);
//发送短信
$res = $smsMake->send($phone, $templateId, $data);
@ -182,5 +185,41 @@ class SmsService extends NoticeService
return true;
}
/**
* 处理腾讯云参数
* @param $mark
* @param $data
* @return array
*/
public function handleTencent($mark, $data)
{
$result = [];
switch ($mark) {
case 'verify_code':
$result = [(string)$data['code'], (string)$data['time']];
break;
case 'order_pay_false':
$result = [$data['order_id']];
break;
case 'price_revision':
$result = [$data['order_id'], (string)$data['pay_price']];
break;
case 'order_pay_success':
$result = [(string)$data['pay_price'], $data['order_id']];
break;
case 'order_take':
$result = [$data['order_id'], $data['store_name']];
break;
case 'send_order_apply_refund':
case 'admin_pay_success_code':
case 'send_admin_confirm_take_over':
$result = [$data['admin_name'], $data['order_id']];
break;
case 'order_deliver_success':
case 'order_postage_success':
$result = [$data['nickname'], $data['store_name'], $data['order_id']];
break;
}
return $result;
}
}

View File

@ -104,14 +104,14 @@ class Tencent extends BaseSms
*/
public function send(string $phone, string $templateId, array $data)
{
$boby = json_encode([
$body = json_encode([
'PhoneNumberSet' => [$phone],
'SmsSdkAppId' => $this->smsSdkAppId,
'SignName' => $this->signName,
'TemplateId' => $templateId,
'TemplateParamSet' => $data,
]);
$res = HttpService::request(self::API_URL, 'post', $boby, $this->getHeader($boby));
$res = HttpService::request(self::API_URL, 'post', $body, $this->getHeader($body));
$res = json_decode($res, true);
if (!empty($res['Response']['Error'])) {