wesmiler 3 月之前
父節點
當前提交
2dc3731f61
共有 3 個文件被更改,包括 151 次插入0 次删除
  1. 4 0
      app/Services/Api/OrderService.php
  2. 132 0
      app/Services/Kd100Service.php
  3. 15 0
      config/payment.php

+ 4 - 0
app/Services/Api/OrderService.php

@@ -473,6 +473,7 @@ class OrderService extends BaseService
             return false;
         }
 
+        $this->error = '取消订单成功';
         $this->model->where(['user_id'=> $userId,'mark'=>0])->where('update_time','<=', time() - 300)->delete();
         $this->model->where(['id'=> $id])->update(['mark'=>0,'update_time'=>time()]);
         return ['id'=> $id];
@@ -594,6 +595,7 @@ class OrderService extends BaseService
 
         DB::commit();
 
+        $this->error = '确认收货成功';
         return ['id'=> $id];
     }
 
@@ -685,6 +687,8 @@ class OrderService extends BaseService
             'update_time'=>time()
         ];
         $this->model->where(['id'=> $id])->update($data);
+
+        $this->error = '订单申请售后成功';
         return ['id'=> $id];
     }
 

+ 132 - 0
app/Services/Kd100Service.php

@@ -0,0 +1,132 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+/**
+ * 快递100接口管理-服务类
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Services
+ */
+class Kd100Service extends BaseService
+{
+    // 静态对象
+    protected static $instance = null;
+    protected $apiUrl = 'https://poll.kuaidi100.com/poll/query.do';
+
+    public function __construct()
+    {
+
+    }
+
+    /**
+     * 静态入口
+     */
+    public static function make(){
+        if(!self::$instance){
+            self::$instance = new static();
+        }
+
+        return self::$instance;
+    }
+
+
+    /**
+     * 发送短信验证码
+     * @param $mobile
+     * @param string $type
+     * @return bool
+     */
+    public function send($mobile, $type='login')
+    {
+        $cacheKey = "caches:sms:{$mobile}:{$type}";
+        if(RedisService::get($cacheKey.'_lock')){
+            $this->error = '2011';
+            return false;
+        }
+
+        $config = ConfigService::make()->getConfigOptionByGroup(2);
+        $accessKey = isset($config['ali_sms_access_key'])? trim($config['ali_sms_access_key']) : '';
+        $accessSecret = isset($config['ali_sms_access_secret'])? trim($config['ali_sms_access_secret']) : '';
+        $smsTemplateCode = isset($config['ali_sms_template_code'])? trim($config['ali_sms_template_code']) : '';
+        $smsSignName = isset($config['ali_sms_sign_name'])? trim($config['ali_sms_sign_name']) : '';
+        $endpoint = isset($config['sms_endpoint'])? trim($config['sms_endpoint']) : '';
+        if(empty($accessKey) || empty($accessSecret) || empty($smsTemplateCode) || empty($smsSignName) || empty($endpoint)){
+            $this->error = 2012;
+            return false;
+        }
+
+        // 发送逻辑
+        $code = rand(1000,9999);
+        $client = $this->createClient($accessKey, $accessSecret, $endpoint);
+        $request = new SendSmsRequest();
+        $request->phoneNumbers = $mobile;
+        $request->signName = $smsSignName;
+        $request->templateCode = $smsTemplateCode;
+        $request->templateParam = json_encode(['code'=> $code], 256);
+        $runtime = new RuntimeOptions();
+        $runtime->maxIdleConns = 5;
+        $runtime->connectTimeout = 10000;
+        $runtime->readTimeout = 10000;
+        try {
+            // 复制代码运行请自行打印 API 的返回值
+            $response = $client->sendSms($request, $runtime);
+            $resultCode = $response->body->code;
+            if($resultCode == 'OK'){
+                $this->error = 2005;
+                RedisService::set($cacheKey,['code'=> $code,'mobile'=>$mobile,'bizId'=>$response->body->bizId,'date'=> date('Y-m-d H:i:s')], 600);
+                return true;
+            }else{
+                $this->error = '发送失败:'.$response->body->message;
+                RedisService::set($cacheKey.'_fail', ['mobile'=> $mobile,'config'=>$config,'error'=>$this->error,'date'=> date('Y-m-d H:i:s')], 6 * 3600);
+                return false;
+            }
+        } catch (TeaUnableRetryError  $e){
+            //$date = date('Y-m-d H:i:s');
+            //logger()->error("【{$date} SMS短信验证码】发送失败:".$e->getMessage());
+            RedisService::set($cacheKey.'_error', ['mobile'=> $mobile,'config'=>$config,'error'=>$e->getMessage()], 6 * 3600);
+        }
+
+        $this->error = 2006;
+        return false;
+    }
+
+    /**
+     * 短信验证码验证
+     * @param string $mobile 手机号
+     * @param string $code 当前验证码
+     * @param string $type 验证码场景类型,login-登录,reg-注册
+     * @return bool
+     */
+    public function check($mobile, $code, $type='login')
+    {
+        // 测试
+        if(env('SMS_DEBUG') && $code == env('SMS_CODE','1100')){
+            return true;
+        }
+
+        $cacheKey = "caches:sms:{$mobile}:{$type}";
+        $data = RedisService::get($cacheKey);
+        $smsCode = isset($data['code'])? $data['code'] : '';
+        if(empty($data) || empty($smsCode)){
+            $this->error = '2012';
+            return false;
+        }
+
+        if($smsCode != $code){
+            $this->error = '2013';
+            return false;
+        }
+
+        return true;
+    }
+}

+ 15 - 0
config/payment.php

@@ -7,6 +7,21 @@ return [
         4=>'收入提现',
         5=>'提现驳回',
     ],
+    'kdCodes'=>[
+        'jd'=>'京东快递',
+        'shentong'=>'申通快递',
+        'shunfengkuaiyun'=>'顺丰快运',
+        'shunfeng'=>'顺丰',
+        'yuantong'=>'圆通快递',
+        'zhongtong'=>'中通快递',
+        'jtexpress'=>'极兔速递',
+        'yunda'=>'韵达快递',
+        'debangkuaidi'=>'德邦快递',
+        'debangwuliu'=>'德邦物流',
+        'huitongkuaidi'=>'百世快递',
+        'youzhengguonei'=>'邮政快递包裹',
+        'zhaijisong'=>'宅急送',
+    ],
     'wechat' => [
         'wechat'=>[
             'default' => [