diff --git a/.gitignore b/.gitignore
index 15944a6..1533499 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@
/storage/framework
/storage/debugbar/
/bootstrap/cache
+/upload
diff --git a/app/Http/Controllers/SkyxuController.php b/app/Http/Controllers/SkyxuController.php
index 7ddca6e..46c02f8 100644
--- a/app/Http/Controllers/SkyxuController.php
+++ b/app/Http/Controllers/SkyxuController.php
@@ -2,330 +2,63 @@
namespace App\Http\Controllers;
-use App\Models\Coupon;
-use App\Models\TestLog;
-use App\Models\User;
-use Illuminate\Queue\Jobs\Job;
-use XuanChen\Coupon\Action\pingan\Query;
-use XuanChen\Coupon\Action\ysd\YsdQuery;
+use Illuminate\Http\Request;
+use League\Flysystem\Sftp\SftpAdapter;
+use League\Flysystem\Filesystem;
-class SkyxuController
+class SkyxuController extends Controller
{
- public $user;
-
- public $jiemi;
-
- public $query_coupon;
-
- public $ticket;
-
- public $type;
-
- public function index()
+ /**
+ * Notes: 链接sftp
+ * @Author: 玄尘
+ * @Date : 2021/1/26 8:18
+ */
+ public function sftp()
{
- $list = Job::get();
- dd($list);
- Coupon::whereBetween('id', ['70091', '70513'])
- ->orderBy('created_at', 'ASC')
- ->chunk(100, function ($logs) {
- foreach ($logs as $log) {
- if (preg_match('/^YSD/', $log->redemptionCode, $matches)) {
- $type = Coupon::TYPE_YSD;
- } else {
- $type = Coupon::TYPE_PINGAN;
- }
+ $path = '/home/wwwroot/pingan/upload/';
+ $name = 'JYMX66007320190722.txt';
+ $adapter = new SftpAdapter([
+ 'host' => '123.57.16.212',
+ 'port' => 22,
+ 'username' => 'root',
+ 'password' => 'Anetadmin1',
+ 'privateKey' => '',
+ 'passphrase' => '',
+ 'root' => $path,
+ 'timeout' => 10,
+ 'directoryPerm' => 0755,
+ ]);
- $log->type = $type;
- $log->save();
- }
- });
+ $filesystem = new Filesystem($adapter);
+ $lists = $filesystem->listContents();
- dd();
- $count = TestLog::whereBetween('created_at', ['2020-11-10 11:06:40', '2020-11-11 10:42:26'])
- ->where('type', 'freezecoupon')
- ->where('back', '0')
- ->orderBy('created_at', 'ASC')
- ->count();
- dump($count);
- // $list = TestLog::whereBetween('created_at', ['2020-11-10 11:06:40', '2020-11-11 10:42:26'])
- // ->where('type', 'freezecoupon')
- // ->where('back', '0')
- // ->orderBy('created_at', 'ASC')
- // ->get();
- //
- //// $data = [];
- //// foreach ($list as $cou) {
- //// $data[] = $cou->in_source['jiemi']['redemptionCode'];
- //// }
- //// dump($data);
+ $content = $filesystem->read($name);
- if ($count > 1) {
- try {
- TestLog::whereBetween('created_at', ['2020-11-10 11:06:40', '2020-11-11 10:42:26'])
- ->where('type', 'freezecoupon')
- ->where('back', '0')
- ->orderBy('created_at', 'ASC')
- ->chunk(100, function ($logs) {
- $su = $er = [];
+ $content = str_replace("\n", "br", $content);
+ dump($content);
- foreach ($logs as $log) {
+ $content = explode("br", $content);
- $this->jiemi = $log->in_source['jiemi'];
- $this->user = User::where('outlet_id', $this->jiemi['outletId'])->first();
- $this->getQuery();
-
- if (is_string($this->queryData)) {
- $er[$this->jiemi['redemptionCode']] = $this->queryData;
- continue;
- }
-
- if ($this->jiemi['redemptionCode'] == '157922465040') {
- dump($this->jiemi);
- dump($this->ticket);
- dump($this->queryData);
- }
-
- $this->checkCode();
- if (is_string($this->ticket)) {
- $er[$this->jiemi['redemptionCode']] = $this->ticket;
-
- $er[] = $this->jiemi['redemptionCode'];
-
- continue;
- }
-
- $status = isset($log->out_source['code']) ? 2 : 3;
- $exists = Coupon::where('status', $status)
- ->where('redemptionCode', $this->jiemi['redemptionCode'])->exists();
- if ($exists && $status != 3) {
- $er[$this->jiemi['redemptionCode']] = [
- $log->out_source,
- ];
-
- continue;
- }
-
- $couponData = [
- 'user_id' => $this->user->parent->id,
- 'type' => Coupon::TYPE_YSD,
- 'outletId' => $this->user->outlet_id,
- 'orderid' => '',
- 'PaOutletId' => $this->queryData['PaOutletId'],
- 'redemptionCode' => $this->jiemi['redemptionCode'],
- 'thirdPartyGoodsId' => $this->queryData['thirdPartyGoodsId'],
- 'couponName' => $this->queryData['couponName'],
- 'price' => $this->ticket['price'],
- 'total' => $this->jiemi['total'],
- 'profit' => $this->ticket['profit'],
- 'status' => $status,
- 'remark' => isset($log->out_source['code']) ? '核销成功!' : $log->out_source[0],
- 'startTime' => $this->queryData['startTime'],
- 'endTime' => $this->queryData['endTime'],
- 'created_at' => $log->created_at->format('Y-m-d H:i:s'),
- ];
-
- // dump($this->jiemi);
- // dump($this->ticket);
- // dump($couponData);
- // dd($this->queryData);
-
- $coupon = Coupon::create($couponData);
- $coupon->profit();
-
- $log->back = 1;
- $log->save();
-
- }
-
- if (count($er) > 1) {
- dump($er);
- }
- });
- } catch (\Exception $e) {
- dd($e->getMessage());
+ foreach ($content as $item) {
+ $array = explode('|', $item);
+ foreach ($array as $item) {
+ echo $item . "
";
}
+ echo '----------------------------------------' . "
";
}
-
+ dd($content);
}
- public function getQuery()
+ public function index(Request $request)
{
- if (preg_match('/^YSD/', $this->jiemi['redemptionCode'], $matches)) {
- $this->query_coupon = (new YsdQuery)->setOutletId($this->jiemi['outletId'])
- ->setCode($this->jiemi['redemptionCode'])
- ->start();
- $this->type = 'ysd';
- } else {
- $this->query_coupon = (new Query)->setOutletId($this->jiemi['outletId'])
- ->setCode($this->jiemi['redemptionCode'])
- ->start();
- $this->type = 'pingan';
+ if (method_exists($this, $request->action)) {
- }
-
- if ($this->type == 'ysd') {
- return $this->getYsdPro();
+ return call_user_func_array([$this, $request->action], [$request->all()]);
} else {
- return $this->getPro();
+ dd('未找到方法');
}
-
}
- public function getYsdPro()
- {
- $rule_code = $this->query_coupon->activity->rule->code;
- $code = $this->user->parent->code->where('code', $rule_code)->first();
-
- if (!$code) {
- $this->queryData = "核销失败,您没有权限使用此卡券优惠活动。";
- }
-
- $ticket = explode('-', $rule_code);
- if (!is_array($ticket) || count($ticket) != 3) {
- $this->queryData = "核销失败,卡券规则格式不正确";
- }
-
- $full = $ticket[1]; //full100
- $price = $ticket[2];
- // preg_match('/(\d{3}(\.\d+)?)/is', $full, $match);
- preg_match('/\d+/', $full, $match);
-
- if (!is_array($match)) {
- $this->queryData = "核销失败,卡券规则格式不正确。";
- }
-
- if (!is_numeric($this->jiemi['total'])) {
- $this->queryData = "核销失败,订单金额必须是数字";
- }
-
- if ($match[0] > $this->jiemi['total']) {
- $this->queryData = '核销失败,订单金额不足。';
- }
-
- $this->queryData = [
- 'couponName' => $this->query_coupon->activity->title,
- 'thirdPartyGoodsId' => $rule_code,
- 'productId' => '',
- 'PaOutletId' => '',
- 'startTime' => $this->query_coupon->start_at->format('Y-m-d H:i:s'),
- 'endTime' => $this->query_coupon->end_at->format('Y-m-d H:i:s'),
- ];
-
- return $this->ticket = [
- 'total' => $match[0],
- 'price' => $price,
- 'profit' => $code->profit,
- ];
- }
-
- public function getPro()
- {
-
- if (is_string($this->query_coupon)) {
- return $this->query_coupon;
- }
-
- $profitOfferItemVersion = $this->query_coupon['profitOfferItemVersion'];
-
- $productItemList = $this->query_coupon['productItemList'];
-
- if (!is_array($productItemList) || !is_array($productItemList[0])) {
- $this->queryData = '核销失败,平安券数据有误,可能是未配置网点。';
- }
-
- //循环查找
- $first = '';
- foreach ($productItemList as $key => $item) {
- $productId = $item['productId'];
- $thirdPartyGoodsId = $item['thirdPartyGoodsId'];
- $outletList = $item['outletList'];
- if (!is_array($outletList) || !is_array($outletList[0])) {
- $this->queryData = '核销失败,网点信息有误!请检查平安券配置信息。';
- break;
- }
-
- $outletList = collect($outletList);
- //判断是新版还是旧版
- if ($profitOfferItemVersion) {
- //新版通过第三方查询
- $first = $outletList->firstWhere('thirdOutletNo', $this->user->outlet_id);
-
- if ($first) {
- break;
- }
- } else {
- //旧版通过平安网点查询
- $first = $outletList->firstWhere('outletNo', $this->user->PaOutletId);
- if ($first) {
- break;
- }
- }
- }
-
- if (!$first) {
- $this->queryData = '核销失败,未找到可用网点信息。';
- }
-
- if (!$thirdPartyGoodsId) {
- $this->queryData = '核销失败,平安券编号规则有误。';
- }
-
- if (!$productId) {
- $this->queryData = '核销失败,未查询到平安券商品id。';
- }
-
- return $this->queryData = [
- 'couponName' => $this->query_coupon['couponName'],
- 'thirdPartyGoodsId' => $thirdPartyGoodsId,
- 'productId' => $productId,
- 'PaOutletId' => $first['outletNo'],
- 'startTime' => $this->query_coupon['startTime'],
- 'endTime' => $this->query_coupon['endTime'],
- ];
-
- }
-
- public function checkCode()
- {
- if ($this->type == 'ysd') {
- return $this->ticket;
- }
-
- $code = $this->user->parent->code->where('code', $this->queryData['thirdPartyGoodsId'])->first();
- if (!$code) {
- $this->ticket = "核销失败,未找到此项平安券规则,请联系管理人员检查渠道配置。";
- }
-
- $ticket = explode('-', $this->queryData['thirdPartyGoodsId']);
-
- if (!is_array($ticket) || count($ticket) != 3) {
- $this->ticket = "核销失败,平安券规则格式不正确。";
- }
-
- $full = $ticket[1]; //full100
- $price = $ticket[2];
- preg_match('/\d+/', $full, $result);
-
- if (empty($result) || !is_array($result)) {
- $this->ticket = "核销失败,平安券规则格式不正确。";
- }
-
- if (!is_numeric($this->jiemi['total'])) {
- $this->ticket = "核销失败,订单金额必须是数字";
- }
- if ($result[0] > $this->jiemi['total']) {
- $this->ticket = '核销失败,订单金额不足,平安券不可使用。';
- }
-
- $this->ticket = [
- 'total' => $result[0],
- 'price' => $price,
- 'profit' => $code->profit,
- ];
-
- return $this->ticket;
- }
-
-}
+}
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 30b691f..f03b7c4 100644
--- a/composer.json
+++ b/composer.json
@@ -17,6 +17,7 @@
"laravel-admin-ext/wang-editor": "^1.1",
"laravel/framework": "^6.2",
"laravel/tinker": "^1.0",
+ "league/flysystem-sftp": "1.0.22",
"maatwebsite/excel": "^3.1",
"php-parallel-lint/php-console-color": "^0.3.0",
"php-parallel-lint/php-console-highlighter": "^0.5.0",
diff --git a/composer.lock b/composer.lock
index dcb8026..c68d6df 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "788568f7f8b8a7cf65cee74489ef958c",
+ "content-hash": "77c9572f4ee66fb91028f756bb43f217",
"packages": [
{
"name": "bacon/bacon-qr-code",
@@ -1730,6 +1730,54 @@
],
"time": "2020-08-23T07:39:11+00:00"
},
+ {
+ "name": "league/flysystem-sftp",
+ "version": "1.0.22",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem-sftp.git",
+ "reference": "cab59dd2277e02fe46f5f23195672a02ed49774d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-sftp/zipball/cab59dd2277e02fe46f5f23195672a02ed49774d",
+ "reference": "cab59dd2277e02fe46f5f23195672a02ed49774d",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "league/flysystem": "~1.0",
+ "php": ">=5.6.0",
+ "phpseclib/phpseclib": "~2.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "0.9.*",
+ "phpunit/phpunit": "^5.7.25"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\Sftp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
+ }
+ ],
+ "description": "Flysystem adapter for SFTP",
+ "time": "2019-10-16T20:05:49+00:00"
+ },
{
"name": "league/mime-type-detection",
"version": "1.5.1",
@@ -2883,6 +2931,117 @@
],
"time": "2020-07-20T17:29:33+00:00"
},
+ {
+ "name": "phpseclib/phpseclib",
+ "version": "2.0.30",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpseclib/phpseclib.git",
+ "reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/136b9ca7eebef78be14abf90d65c5e57b6bc5d36",
+ "reference": "136b9ca7eebef78be14abf90d65c5e57b6bc5d36",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phing/phing": "~2.7",
+ "phpunit/phpunit": "^4.8.35|^5.7|^6.0|^9.4",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "suggest": {
+ "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
+ "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.",
+ "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
+ "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "phpseclib/bootstrap.php"
+ ],
+ "psr-4": {
+ "phpseclib\\": "phpseclib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jim Wigginton",
+ "email": "terrafrost@php.net",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Patrick Monnerat",
+ "email": "pm@datasphere.ch",
+ "role": "Developer"
+ },
+ {
+ "name": "Andreas Fischer",
+ "email": "bantu@phpbb.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Hans-Jürgen Petrich",
+ "email": "petrich@tronic-media.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.",
+ "homepage": "http://phpseclib.sourceforge.net",
+ "keywords": [
+ "BigInteger",
+ "aes",
+ "asn.1",
+ "asn1",
+ "blowfish",
+ "crypto",
+ "cryptography",
+ "encryption",
+ "rsa",
+ "security",
+ "sftp",
+ "signature",
+ "signing",
+ "ssh",
+ "twofish",
+ "x.509",
+ "x509"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/terrafrost",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpseclib",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpseclib/phpseclib",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-12-17T05:42:04+00:00"
+ },
{
"name": "predis/predis",
"version": "v1.1.6",
@@ -5959,16 +6118,16 @@
},
{
"name": "xuanchen/unionpay",
- "version": "2.4",
+ "version": "2.5",
"source": {
"type": "git",
"url": "https://github.com/xuanchen120/unionpay.git",
- "reference": "906c9c7f45d7d3c1b095de5deb24127692c28c7d"
+ "reference": "84a4ddde232db360d8acdd3156d0e9cf7cf163c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/xuanchen120/unionpay/zipball/906c9c7f45d7d3c1b095de5deb24127692c28c7d",
- "reference": "906c9c7f45d7d3c1b095de5deb24127692c28c7d",
+ "url": "https://api.github.com/repos/xuanchen120/unionpay/zipball/84a4ddde232db360d8acdd3156d0e9cf7cf163c9",
+ "reference": "84a4ddde232db360d8acdd3156d0e9cf7cf163c9",
"shasum": "",
"mirrors": [
{
@@ -6005,7 +6164,11 @@
}
],
"description": "第三方银联对接",
- "time": "2021-01-14T02:13:55+00:00"
+ "support": {
+ "issues": "https://github.com/xuanchen120/unionpay/issues",
+ "source": "https://github.com/xuanchen120/unionpay/tree/2.5"
+ },
+ "time": "2021-01-22T09:53:03+00:00"
}
],
"packages-dev": [
@@ -8289,12 +8452,12 @@
"version": "1.9.1",
"source": {
"type": "git",
- "url": "https://github.com/webmozart/assert.git",
+ "url": "https://github.com/webmozarts/assert.git",
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
"shasum": "",
"mirrors": [