Commit f10a8ca13b92a103416c317a40f5f6c8122c8b85
1 parent
931eed21
Exists in
master
1. F API 授权接口调整
Showing
6 changed files
with
337 additions
and
107 deletions
Show diff stats
app-api/controllers/AuthDeviceController.php
... | ... | @@ -49,7 +49,7 @@ class AuthDeviceController extends BaseController |
49 | 49 | $timestamp = $req->post('timestamp'); |
50 | 50 | $e = new stdClass(); |
51 | 51 | $e->status = 0; |
52 | - $e->message = '授权失败'; | |
52 | + $e->message = 'message'; | |
53 | 53 | $e->serial_no = '';; |
54 | 54 | $e->mac = ''; |
55 | 55 | |
... | ... | @@ -64,6 +64,7 @@ class AuthDeviceController extends BaseController |
64 | 64 | if ($deviceModel && DeviceStatus::HAS_AUTH == $deviceModel->status) { |
65 | 65 | $e->mac = $deviceModel->mac; |
66 | 66 | $e->serial_no = $deviceModel->serial_no; |
67 | + $e->message = 'ok'; | |
67 | 68 | $e->status = 1; |
68 | 69 | return $e; |
69 | 70 | } |
... | ... | @@ -72,7 +73,10 @@ class AuthDeviceController extends BaseController |
72 | 73 | if ($authResult->success) { |
73 | 74 | $e->mac = $authResult->mac; |
74 | 75 | $e->serial_no = $authResult->serial_no; |
76 | + $e->message = $authResult->message; | |
75 | 77 | $e->status = 1; |
78 | + } else { | |
79 | + $e->message = $authResult->message; | |
76 | 80 | } |
77 | 81 | |
78 | 82 | return $e; | ... | ... |
app-api/controllers/BaseController.php
... | ... | @@ -21,13 +21,7 @@ class BaseController extends RestController |
21 | 21 | /** @var \yii\web\response **/ |
22 | 22 | public $response; |
23 | 23 | /** @var \yii\web\User **/ |
24 | - public $user; | |
25 | - /** @var **/ | |
26 | - protected $mina; | |
27 | - /** @var **/ | |
28 | - protected $site; | |
29 | 24 | |
30 | - private $userModel; | |
31 | 25 | |
32 | 26 | /** @inheritdoc **/ |
33 | 27 | public function behaviors() |
... | ... | @@ -43,45 +37,10 @@ class BaseController extends RestController |
43 | 37 | 'class' => VerbFilter::className(), |
44 | 38 | 'actions' => $this->verbs(), |
45 | 39 | ], |
46 | - 'rateLimiter' => [ | |
47 | - 'class' => RateLimiter::className(), | |
48 | - ], | |
49 | - ]; | |
50 | - } | |
51 | - | |
52 | - /** | |
53 | - * 所有小程序端的API请求均需要调用handleMallAccessCtrl | |
54 | - * @param \yii\base\Action $action | |
55 | - * @return bool | |
56 | - * @throws \yii\web\BadRequestHttpException | |
57 | - */ | |
58 | - public function beforeAction($action) | |
59 | - { | |
60 | - if (!parent::beforeAction($action)) { | |
61 | - return false; | |
62 | - } | |
63 | - return true; | |
64 | - } | |
65 | 40 | |
66 | - /** | |
67 | - * 获取ClientUserId | |
68 | - * @return int | |
69 | - */ | |
70 | - public function getClientUserId() | |
71 | - { | |
72 | - return Yii::$app->user->id; | |
41 | + ]; | |
73 | 42 | } |
74 | 43 | |
75 | 44 | |
76 | - /** | |
77 | - * @throws Exception | |
78 | - */ | |
79 | - public function init() | |
80 | - { | |
81 | - parent::init(); | |
82 | - $this->request = Yii::$app->getRequest(); | |
83 | - $this->response = Yii::$app->getResponse(); | |
84 | - $this->user = Yii::$app->getUser(); | |
85 | 45 | |
86 | - } | |
87 | 46 | } | ... | ... |
... | ... | @@ -0,0 +1,263 @@ |
1 | +<?php | |
2 | +namespace common\exts; | |
3 | +use common\helpers\Log as AppLog; | |
4 | + | |
5 | +/** | |
6 | + * Class Http | |
7 | + * @package common\exts\wechat | |
8 | + */ | |
9 | +class Http | |
10 | +{ | |
11 | + /** | |
12 | + * GET 请求 | |
13 | + * @param string $url | |
14 | + * @return bool|mixed | |
15 | + */ | |
16 | + public static $postStr = ''; | |
17 | + public static function get($url, $header = array()) | |
18 | + { | |
19 | + $curl = curl_init(); | |
20 | + | |
21 | + if (stripos($url,"https://") !== FALSE) { | |
22 | + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); | |
23 | + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); | |
24 | + } | |
25 | + if (!empty($header)) { | |
26 | + curl_setopt($curl, CURLOPT_HTTPHEADER, $header); | |
27 | + } | |
28 | + curl_setopt($curl, CURLOPT_URL, $url); | |
29 | + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); | |
30 | + | |
31 | + $result = curl_exec($curl); | |
32 | + $status = curl_getinfo($curl); | |
33 | + | |
34 | + curl_close($curl); | |
35 | + | |
36 | + $r = json_decode($result); | |
37 | + if (isset($r->errcode) && $r->errcode >= 40001) { | |
38 | + //Log::init(); | |
39 | + AppLog::DEBUG($result); | |
40 | + } | |
41 | + | |
42 | + if (intval($status["http_code"]) == 200) { | |
43 | + return $result; | |
44 | + } else { | |
45 | + return false; | |
46 | + } | |
47 | + } | |
48 | + | |
49 | + /** | |
50 | + * POST 请求 | |
51 | + * @param string $url | |
52 | + * @param array $param | |
53 | + * @return string content | |
54 | + */ | |
55 | + public static function post($url, $param, $encode = true, $header = array()) | |
56 | + { | |
57 | + $curl = curl_init(); | |
58 | + | |
59 | + if (stripos($url,"https://")!==FALSE) { | |
60 | + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); | |
61 | + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); | |
62 | + curl_setopt($curl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 | |
63 | + } | |
64 | + | |
65 | + if (is_string($param)) { | |
66 | + $strPOST = $param; | |
67 | + } else { | |
68 | + $aPOST = array(); | |
69 | + foreach($param as $key=>$val) { | |
70 | + if ($encode == false) { | |
71 | + $aPOST[] = $key."=".$val; | |
72 | + } else { | |
73 | + $aPOST[] = $key."=".urlencode($val); | |
74 | + } | |
75 | + | |
76 | + } | |
77 | + $strPOST = join("&", $aPOST); | |
78 | + } | |
79 | + | |
80 | + curl_setopt($curl, CURLOPT_URL, $url); | |
81 | + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); | |
82 | + curl_setopt($curl, CURLOPT_POST, true); | |
83 | + if (!empty($header)) { | |
84 | + curl_setopt($curl, CURLOPT_HTTPHEADER, $header); | |
85 | + } | |
86 | + self::$postStr = $strPOST; | |
87 | + curl_setopt($curl, CURLOPT_POSTFIELDS, $strPOST); | |
88 | + | |
89 | + $result = curl_exec($curl); | |
90 | + $status = curl_getinfo($curl); | |
91 | + curl_close($curl); | |
92 | + | |
93 | + if (intval($status["http_code"]) == 200) { | |
94 | + return $result; | |
95 | + } else { | |
96 | + return false; | |
97 | + } | |
98 | + } | |
99 | + | |
100 | + /** | |
101 | + * 上传文件 | |
102 | + * @param $url | |
103 | + * @param $filedata | |
104 | + */ | |
105 | + public static function upload($url, $filedata) | |
106 | + { | |
107 | + $curl = curl_init (); | |
108 | + if (class_exists ( '\CURLFile' )) {//php5.5跟php5.6中的CURLOPT_SAFE_UPLOAD的默认值不同 | |
109 | + curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, true ); | |
110 | + } else { | |
111 | + if (defined ( 'CURLOPT_SAFE_UPLOAD' )) { | |
112 | + curl_setopt ( $curl, CURLOPT_SAFE_UPLOAD, false ); | |
113 | + } | |
114 | + } | |
115 | + curl_setopt ( $curl, CURLOPT_URL, $url ); | |
116 | + curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE ); | |
117 | + curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE ); | |
118 | + if (! empty ( $filedata )) { | |
119 | + curl_setopt ( $curl, CURLOPT_POST, 1 ); | |
120 | + curl_setopt ( $curl, CURLOPT_POSTFIELDS, $filedata ); | |
121 | + } | |
122 | + curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 ); | |
123 | + $output = curl_exec ( $curl ); | |
124 | + curl_close ( $curl ); | |
125 | + return $output; | |
126 | + } | |
127 | + | |
128 | + /** | |
129 | + * 下载网络图片并缓存到指定本地路径 | |
130 | + * @param $url 网络图片地址 | |
131 | + * @param $cachePath 本地缓存路径 | |
132 | + */ | |
133 | + public static function download($url, $cachePath) | |
134 | + { | |
135 | + $curl = curl_init(); | |
136 | + $fp = fopen($cachePath, 'wb'); | |
137 | + curl_setopt($curl, CURLOPT_URL, $url); | |
138 | + curl_setopt($curl, CURLOPT_FILE, $fp); | |
139 | + curl_setopt($curl, CURLOPT_HEADER, 0); | |
140 | + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); | |
141 | + //curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来 | |
142 | + curl_setopt($curl,CURLOPT_TIMEOUT, 60); | |
143 | + curl_exec($curl); | |
144 | + curl_close($curl); | |
145 | + fclose($fp); | |
146 | + } | |
147 | + | |
148 | + /** | |
149 | + * @param $url | |
150 | + * @return array | |
151 | + */ | |
152 | + public static function getImageStream($url) | |
153 | + { | |
154 | + $curl = curl_init(); | |
155 | + | |
156 | + curl_setopt($curl, CURLOPT_HEADER, 0); | |
157 | + curl_setopt($curl, CURLOPT_NOBODY, 0); //只取body头 | |
158 | + if(stripos($url,"https://") !== FALSE){ | |
159 | + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); | |
160 | + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); | |
161 | + } | |
162 | + | |
163 | + curl_setopt($curl, CURLOPT_URL, $url); | |
164 | + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 ); | |
165 | + | |
166 | + $result = curl_exec($curl); | |
167 | + $status = curl_getinfo($curl); | |
168 | + | |
169 | + curl_close($curl); | |
170 | + | |
171 | + $imageAll = array_merge(array('header' => $status ), array('body' => $result )); | |
172 | + return $imageAll; | |
173 | + } | |
174 | + | |
175 | + /** | |
176 | + * GET 请求 | |
177 | + * @param string $url | |
178 | + */ | |
179 | + public static function http_get($url) | |
180 | + { | |
181 | + $oCurl = curl_init(); | |
182 | + if(stripos($url,"https://")!==FALSE){ | |
183 | + curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); | |
184 | + curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE); | |
185 | + curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 | |
186 | + } | |
187 | + curl_setopt($oCurl, CURLOPT_URL, $url); | |
188 | + curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 ); | |
189 | + $sContent = curl_exec($oCurl); | |
190 | + $aStatus = curl_getinfo($oCurl); | |
191 | + curl_close($oCurl); | |
192 | + if(intval($aStatus["http_code"])==200){ | |
193 | + return $sContent; | |
194 | + }else{ | |
195 | + return false; | |
196 | + } | |
197 | + } | |
198 | + | |
199 | + // xml to array | |
200 | + public static function xmlToArr($xml) | |
201 | + { | |
202 | + libxml_disable_entity_loader(true); | |
203 | + $xmlString = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); | |
204 | + $val = json_decode(json_encode($xmlString),true); | |
205 | + return $val; | |
206 | + } | |
207 | + | |
208 | + /** | |
209 | + * POST 请求 | |
210 | + * @param string $url | |
211 | + * @param array $param | |
212 | + * @return string content | |
213 | + */ | |
214 | + public static function post_material($url, $param,$encode=true,$header=array()) | |
215 | + { | |
216 | + $curl = curl_init(); | |
217 | + | |
218 | + if(stripos($url,"https://")!==FALSE){ | |
219 | + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); | |
220 | + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); | |
221 | + curl_setopt($curl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 | |
222 | + } | |
223 | + | |
224 | + if (is_string($param)) { | |
225 | + $strPOST = $param; | |
226 | + } else { | |
227 | + $aPOST = array(); | |
228 | + foreach($param as $key=>$val){ | |
229 | + if(strpos($val, '@') === 0) | |
230 | + { | |
231 | + $filename = ltrim($val, '@'); | |
232 | + $param[$key] = new \CURLFile($filename); | |
233 | + } | |
234 | + if($encode==false){ | |
235 | + $aPOST[] = $key."=".$val; | |
236 | + }else{ | |
237 | + $aPOST[] = $key."=".urlencode($val); | |
238 | + } | |
239 | + | |
240 | + } | |
241 | + $strPOST = join("&", $aPOST); | |
242 | + } | |
243 | + curl_setopt($curl, CURLOPT_URL, $url); | |
244 | + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 ); | |
245 | + curl_setopt($curl, CURLOPT_POST,true); | |
246 | + if(!empty($header)){ | |
247 | + curl_setopt($curl, CURLOPT_HTTPHEADER,$header); | |
248 | + } | |
249 | + self::$postStr = $strPOST; | |
250 | + curl_setopt($curl, CURLOPT_POSTFIELDS, $param); | |
251 | + | |
252 | + $result = curl_exec($curl); | |
253 | + $status = curl_getinfo($curl); | |
254 | + curl_close($curl); | |
255 | + | |
256 | + if(intval($status["http_code"]) == 200){ | |
257 | + return $result; | |
258 | + }else{ | |
259 | + return false; | |
260 | + } | |
261 | + } | |
262 | + | |
263 | +} | |
0 | 264 | \ No newline at end of file | ... | ... |
console/controllers/TestController.php
... | ... | @@ -8,64 +8,10 @@ namespace console\controllers; |
8 | 8 | */ |
9 | 9 | |
10 | 10 | |
11 | - | |
12 | -use app\wx\modules\user\helpers\UserOrderHelper; | |
13 | -use common\business\AdminCloseOrder; | |
14 | -use common\business\CancelOrder; | |
15 | -use common\business\Deduction; | |
16 | - | |
17 | -use common\exts\Invoice\baiwang\InvoiceApi; | |
18 | -use common\exts\privatenumber\PrivateNumber; | |
19 | -use common\exts\wechat\Http; | |
20 | - | |
21 | -use common\helpers\DeviceSearch; | |
22 | -use common\helpers\Distance; | |
23 | -use common\helpers\FileManager; | |
24 | - | |
25 | -use common\helpers\ImageManager; | |
26 | -use common\helpers\MinaHelper; | |
27 | -use common\helpers\OrderSqlHelper; | |
28 | -use common\helpers\UserMPHelper; | |
29 | -use common\helpers\WxHelper; | |
30 | -use common\models\BindDeviceApply; | |
31 | -use common\models\Engineer; | |
32 | -use common\models\EngineerEvent; | |
33 | -use common\models\EngineerPickOrder; | |
34 | -use common\models\Invoice; | |
35 | -use common\models\PrivateNumberBindRecord; | |
36 | -use common\models\PrivateNumberVoice; | |
37 | -use common\models\RepairOrder; | |
38 | - | |
39 | -use common\models\RepairOrderDeduction; | |
40 | - | |
41 | - | |
42 | -use common\services\wxs\SmsMessage; | |
43 | -use console\models\ClearFileTask; | |
44 | -use console\models\EngineerTask; | |
45 | - | |
46 | -use domain\data\EngineerReport; | |
47 | -use domain\device\BindQrcodeApplyRepository; | |
48 | -use domain\engineer\EngineerAchievementPro; | |
49 | -use domain\engineer\EngineerRepository; | |
50 | -use domain\finance\EngineerCashFlow; | |
51 | -use domain\finance\EngineerCashFlowStatus; | |
52 | -use domain\finance\EngineerCashFlowType; | |
53 | -use domain\marketing\activity\DeductionActivityRepository; | |
54 | - | |
55 | -use domain\marketing\subsidy\ApplyAwardRule; | |
56 | -use domain\marketing\thankfee\ThankFee; | |
57 | -use domain\system\message\CustomMessage; | |
58 | -use domain\trade\dob\DispatchOrder; | |
59 | - | |
60 | -use domain\trade\OnsiteOrder; | |
61 | -use domain\trade\privateorder\PrivateOrderUserOp; | |
62 | -use domain\trade\RepairOrderRepository; | |
11 | +use common\exts\Http; | |
63 | 12 | use GuzzleHttp\Psr7; |
64 | -use Workerman\Worker; | |
65 | 13 | use yii\console\Controller; |
66 | -use yii\db\Query; | |
67 | -use yii\base\Exception; | |
68 | - | |
14 | +use GuzzleHttp\Psr7\Request; | |
69 | 15 | use function chr; |
70 | 16 | use yii\helpers\ArrayHelper; |
71 | 17 | |
... | ... | @@ -77,6 +23,31 @@ class TestController extends Controller |
77 | 23 | echo sprintf('%04x', 1); |
78 | 24 | } |
79 | 25 | |
26 | + public function actionDeviceAuth() | |
27 | + { | |
28 | + $url = 'http://kingb:8012/app-api/web/authDevice'; | |
29 | + $manufactureNo = '0002'; | |
30 | + $device_id = 'SZDEVICE000036'; | |
31 | + $projectNo = '002'; | |
32 | + $modelNo = '002'; | |
33 | + $productionNo = '0001'; | |
34 | + | |
35 | + $timestamp = time(); | |
36 | + $salt = 13456; | |
37 | + $sign = md5($manufactureNo. $projectNo. $modelNo . $productionNo . $timestamp . $salt); | |
38 | + $params = [ | |
39 | + 'manufacture' => $manufactureNo, | |
40 | + 'device_id' => $device_id, | |
41 | + 'project' => $projectNo, | |
42 | + 'model' => $modelNo, | |
43 | + 'production' => $productionNo, | |
44 | + 'timestamp' => $timestamp, | |
45 | + 'sign' => $sign, | |
46 | + ]; | |
47 | + $postResult = Http::POST($url, $params); | |
48 | + echo $postResult; | |
49 | + | |
50 | + } | |
80 | 51 | |
81 | 52 | } |
82 | 53 | ... | ... |
domain/device/Device.php
... | ... | @@ -38,18 +38,33 @@ class Device |
38 | 38 | $batchModel = CreateBatchRepository::findOne(['batch_no' => $batchNo]); |
39 | 39 | if (empty($batchModel)) { |
40 | 40 | $e->message = '没有该批次'; |
41 | + return $e; | |
41 | 42 | } |
42 | - $count = DeviceRepository::rowsCount(['batch_id' => $batchModel->batch_id, 'is_delete' => 0]); | |
43 | - if ($count > $batchModel->num) { | |
43 | + $batchId = $batchModel->id; | |
44 | + $count = DeviceRepository::rowsCount(['batch_id' => $batchId, 'is_delete' => 0]); | |
45 | + | |
46 | + if (($count *1) >= ($batchModel->num * 1)) { | |
44 | 47 | // 超过了限制数,记录到另外一个表里面 |
45 | 48 | // to do 记录到表里面 |
46 | - | |
49 | + $failRecord = DeviceAuthFailRepository::findOne(['device_id' => $deviceId]); | |
50 | + if (!$failRecord) { | |
51 | + $item = [ | |
52 | + 'manufacture_no' => $manufactureNo, | |
53 | + 'project_no' => $projectNo, | |
54 | + 'model_no' => $modelNo, | |
55 | + 'production_no' => $productionNo, | |
56 | + 'device_id' => $deviceId, | |
57 | + ]; | |
58 | + DeviceAuthFail::create($item); | |
59 | + } | |
47 | 60 | $e->message = '授权失败'; |
48 | 61 | return $e; |
49 | 62 | } |
50 | - $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'is_delete' => 0]); | |
63 | + | |
64 | + | |
65 | + $deviceModel = DeviceRepository::findOne(['device_id' => $deviceId, 'batch_id' => $batchId, 'is_delete' => 0]); | |
51 | 66 | if (empty($deviceModel)) { |
52 | - $newDeviceModel = DeviceRepository::findOne(['device_id'=> null, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | |
67 | + $newDeviceModel = DeviceRepository::findOne(['device_id'=> null,'batch_id' => $batchId, 'is_delete' => 0, 'status' => DeviceStatus::NO_AUTH]); | |
53 | 68 | $newDeviceModel->device_id = $deviceId; |
54 | 69 | $newDeviceModel->status = DeviceStatus::HAS_AUTH; |
55 | 70 | $newDeviceModel->apply_at = $tt ; | ... | ... |
domain/device/DeviceAuthFail.php
... | ... | @@ -2,13 +2,31 @@ |
2 | 2 | |
3 | 3 | namespace domain\device; |
4 | 4 | |
5 | -use yii\behaviors\TimestampBehavior; | |
6 | -use yii\db\ActiveRecord; | |
5 | +use Yii; | |
6 | +use domain\device\models\DeviceAuthFail as DeviceAuthFailModel; | |
7 | 7 | |
8 | 8 | class DeviceAuthFail |
9 | 9 | { |
10 | + /** | |
11 | + * @param $item | |
12 | + * @return null|object | |
13 | + * @throws \yii\base\InvalidConfigException | |
14 | + */ | |
10 | 15 | static function create($item) |
11 | 16 | { |
12 | - | |
17 | + $failModel = Yii::createObject([ | |
18 | + 'class' => DeviceAuthFailModel::className(), | |
19 | + 'manufacture_no' => $item['manufacture_no'], | |
20 | + 'project_no' => $item['project_no'], | |
21 | + 'model_no' => $item['model_no'], | |
22 | + 'production_no' => $item['production_no'], | |
23 | + 'device_id' => $item['device_id'], | |
24 | + 'apply_at' => time(), | |
25 | + ]); | |
26 | + if ($failModel->save()) { | |
27 | + return $failModel; | |
28 | + } else { | |
29 | + return null; | |
30 | + } | |
13 | 31 | } |
14 | 32 | } |
15 | 33 | \ No newline at end of file | ... | ... |