Quellcode durchsuchen

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

吴昊天 vor 3 Jahren
Ursprung
Commit
13adf9a931

+ 1 - 1
crmeb/app/adminapi/controller/v1/setting/SystemNotification.php

@@ -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);

+ 22 - 13
crmeb/app/common.php

@@ -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');
 

+ 3 - 1
crmeb/app/dao/BaseDao.php

@@ -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();
     }
 

+ 40 - 1
crmeb/app/services/message/notice/SmsService.php

@@ -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;
+    }
 }

+ 2 - 2
crmeb/crmeb/services/sms/storage/Tencent.php

@@ -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'])) {