diff --git a/app/Admin/Controllers/Coupon/IndexController.php b/app/Admin/Controllers/Coupon/IndexController.php
index 1a33a86..bef4e56 100644
--- a/app/Admin/Controllers/Coupon/IndexController.php
+++ b/app/Admin/Controllers/Coupon/IndexController.php
@@ -36,12 +36,12 @@ class IndexController extends AdminController
]);
$filter->between('created_at', '核销时间')->datetime();
$users = User::query()
- ->whereHas('identity', function ($query) {
- $query->where('identity_id', 1);
- })
- ->where('type', 'pingan')
- ->get()
- ->pluck('nickname', 'id');
+ ->whereHas('identity', function ($query) {
+ $query->where('identity_id', 1);
+ })
+ ->where('type', 'pingan')
+ ->get()
+ ->pluck('nickname', 'id');
$filter->equal('user_id', '渠道')->select($users);
$filter->equal('thirdPartyGoodsId', '优惠政策')->select(ActivityRule::pluck('title', 'code'));
});
@@ -64,11 +64,11 @@ class IndexController extends AdminController
return $this->user->nickname;
});
$grid->column('type', '类型')
- ->using(Coupon::TYPES)
- ->label([
- '1' => 'info',
- '2' => 'success',
- ]);
+ ->using(Coupon::TYPES)
+ ->label([
+ '1' => 'info',
+ '2' => 'success',
+ ]);
$grid->column('网点名称/编号')->display(function () {
return $this->outlet ? $this->outlet->nickname : $this->outletId;
@@ -118,13 +118,13 @@ class IndexController extends AdminController
$pass = collect($pass);
return ' '
- . ' '
- . ' '
- . ' '
- . ' '
- . ' ';
+ . ' '
+ . ' '
+ . ' '
+ . ' '
+ . ' ';
});
$grid->disableExport(false);
@@ -162,30 +162,30 @@ class IndexController extends AdminController
$form->decimal('recommend', '推荐人佣金')->required()->default(0);
$form->number('hots', '热度/亲密度')->required()->default('1');
$form->text('times', '显示时间')
- ->default('200')
- ->required()
- ->help('礼物显示时间,毫秒');
+ ->default('200')
+ ->required()
+ ->help('礼物显示时间,毫秒');
$form->textarea('description', '礼物说明');
$form->image('cover', '封面')
- ->rules(function ($form) {
- if ($form->model()->cover != '') {
- return 'nullable|image';
- } else {
- return 'required';
- }
- })
- ->move('images/' . date('Y/m/d'))
- ->removable()
- ->uniqueName();
+ ->rules(function ($form) {
+ if ($form->model()->cover != '') {
+ return 'nullable|image';
+ } else {
+ return 'required';
+ }
+ })
+ ->move('images/' . date('Y/m/d'))
+ ->removable()
+ ->uniqueName();
$form->switch('status', '状态')->default(1);
$form->decimal('sort', '排序')->default(0)->help('序号越大越靠前');
$form->saving(function ($form) {
- $sum = (int) $form->pv + (int) $form->bonus + (int) $form->recommend;
- if ((int) $sum > $form->price) {
+ $sum = (int)$form->pv + (int)$form->bonus + (int)$form->recommend;
+ if ((int)$sum > $form->price) {
admin_warning('配置错误', 'PV+佣金+推荐人佣金不能超过礼物价值');
throw new \Exception('配置错误,PV+佣金+推荐人佣金不能超过礼物价值');
}
diff --git a/packages/coupon/src/Action/pingan/Verification.php b/packages/coupon/src/Action/pingan/Verification.php
index 28b02a8..56166ab 100644
--- a/packages/coupon/src/Action/pingan/Verification.php
+++ b/packages/coupon/src/Action/pingan/Verification.php
@@ -1,301 +1,301 @@
-HasCheck();
- if ($res !== false) {
- return $res;
- }
-
- //检查可核销次数
- $ret = $this->CheckCount();
- if ($ret !== true) {
- return $ret;
- }
-
- //查询卡券信息
- $this->query_coupon = (new Query)->setOutletId($this->outletId)
- ->setCode($this->redemptionCode)
- ->start();
- if (is_string($this->query_coupon)) {
- return $this->query_coupon;
- }
-
- //校验卡券
- $ticket = $this->checkCoupon();
- if (!is_array($ticket)) {
- return $ticket;
- }
-
- //增加核销记录
- $coupon = $this->AddCoupon();
- if (is_string($coupon)) {
- return $coupon;
- }
-
- try {
- $params = [
- 'couponNo' => $coupon->redemptionCode,
- 'partnerOrderId' => date('ymdHis') . sprintf("%0" . strlen(999999) . "d", mt_rand(0, 999999)),
- 'outletId' => $coupon->PaOutletId,
- 'productId' => $coupon->productId,
- 'timestamp' => $this->getMsecTime(),
- ];
-
- $url = $this->baseUri . 'partner/redemption';
- $str = $this->encrypt($params);
- $res = $this->getPingAnData($url, [], ['data' => $str]);
-
- if (!is_array($res)) {
- $coupon->remark = $res;
- $coupon->status = 3;
- $coupon->save();
- throw new \Exception($res);
- }
-
- if ($res['code'] != 200) {
- $coupon->remark = $res['code'] . '--' . $res['message'];
- $coupon->status = 3;
- $coupon->save();
- throw new \Exception($res['message']);
- }
-
- $data = $res['data'];
-
- $coupon->remark = $data['message'];
- $coupon->status = ($data['status'] == 1) ? 2 : 3;
- $coupon->save();
-
- //返回的数据
- $resdata = [
- 'price' => $coupon->price,
- 'name' => $coupon->couponName,
- 'total' => $coupon->total,
- ];
-
- //核销成功 执行分润
- $coupon->profit();
-
- return $resdata;
-
- } catch (Exception $e) {
- $coupon->status = 3;
- $coupon->remark = '核销失败 ' . $e->getMessage();
- $coupon->save();
-
- return $coupon->remark;
- }
-
- }
-
- /**
- * Notes: 如可核销记录
- * @Author: 玄尘
- * @Date : 2020/7/21 15:03
- * @return string
- */
- public function AddCoupon()
- {
- try {
- $couponData = [
- 'user_id' => $this->user->id,
- 'type' => Coupon::TYPE_PINGAN,
- 'outletId' => $this->outletId,
- 'orderid' => $this->orderid,
- 'PaOutletId' => $this->queryData['PaOutletId'],
- 'redemptionCode' => $this->redemptionCode,
- 'productId' => $this->queryData['productId'],
- 'thirdPartyGoodsId' => $this->queryData['thirdPartyGoodsId'],
- 'couponName' => $this->query_coupon['couponName'],
- 'price' => $this->ticket['price'],
- 'total' => $this->total,
- 'profit' => $this->ticket['profit'],
- 'status' => 0,
- 'startTime' => $this->query_coupon['startTime'],
- 'endTime' => $this->query_coupon['endTime'],
- ];
-
- return $coupon = Coupon::create($couponData);
-
- } catch (Exception $e) {
- return $e->getMessage();
- }
-
- }
-
- /**
- * Notes: 检查卡券信息
- * @Author: 玄尘
- * @Date : 2020/6/29 16:40
- * @return string
- */
- public function checkCoupon()
- {
-
- //检查卡券是否已被核销
- if ($this->query_coupon['status'] > 0) {
- if (isset(config('pingan.coupon_status')[$this->query_coupon['status']])) {
- return '核销失败,平安券' . config('pingan.coupon_status')[$this->query_coupon['status']];
- }
-
- return '核销失败,平安券不可用。';
- }
-
- $startTime = Carbon::parse($this->query_coupon['startTime']);
- $endTime = Carbon::parse($this->query_coupon['endTime']);
- $now = now();
-
- if ($startTime->gt($now)) {
- return '核销失败,平安券未开始使用。';
- }
-
- if ($now->gt($endTime)) {
- return '核销失败,平安券已过期。';
- }
-
- //查找适配的商品id 和 网点id
- $pinganData = $this->getPinganProduct();
-
- if (is_string($pinganData)) {
- return $pinganData;
- }
-
- //获取相关优惠信息
- return $this->checkCode();
-
- }
-
- /**
- * 校验平安券编号
- * @return array|string [type] [description]
- */
- public function checkCode()
- {
- $code = $this->user->code->where('code', $this->queryData['thirdPartyGoodsId'])->first();
- if (!$code) {
- return "核销失败,未找到此项平安券规则,请联系管理人员检查渠道配置。";
- }
-
- $ticket = explode('-', $this->queryData['thirdPartyGoodsId']);
-
- if (!is_array($ticket) || count($ticket) != 3) {
- return "核销失败,平安券规则格式不正确。";
- }
-
- $full = $ticket[1]; //full100
- $price = $ticket[2];
- preg_match('/\d+/', $full, $result);
-
- if (empty($result) || !is_array($result)) {
- return "核销失败,平安券规则格式不正确。";
- }
-
- if (!is_numeric($this->total)) {
- return "核销失败,订单金额必须是数字";
- }
- if ($result[0] > $this->total) {
- return '核销失败,订单金额不足,平安券不可使用。';
- }
-
- $this->ticket = [
- 'total' => $result[0],
- 'price' => $price,
- 'profit' => $code->profit,
- ];
-
- return $this->ticket;
- }
-
- /**
- * 查找平安商品id
- * @author 玄尘 2020-04-04
- * @return array|string [type] [description]
- */
- public function getPinganProduct()
- {
- //查询网点是否存在
- $outlet = User::where('outlet_id', $this->outletId)->first();
-
- if (!$outlet) {
- return '核销失败,网点编号错误,未查询到网点信息';
- }
-
- $PaOutletId = $outlet->PaOutletId;
- $outlet_id = $outlet->outlet_id;
- $profitOfferItemVersion = $this->query_coupon['profitOfferItemVersion'];
-
- if (!$PaOutletId && $profitOfferItemVersion != 1) {
- return '核销失败,参数错误,渠道信息缺少平安网点id';
- }
-
- $productItemList = $this->query_coupon['productItemList'];
-
- if (!is_array($productItemList) || !is_array($productItemList[0])) {
- return '核销失败,平安券数据有误,可能是未配置网点。';
- }
-
- //循环查找
- $first = '';
- foreach ($productItemList as $key => $item) {
- $productId = $item['productId'];
- $thirdPartyGoodsId = $item['thirdPartyGoodsId'];
- $outletList = $item['outletList'];
- if (!is_array($outletList) || !is_array($outletList[0])) {
- return '核销失败,网点信息有误!请检查平安券配置信息。';
- break;
- }
-
- $outletList = collect($outletList);
- //判断是新版还是旧版
- if ($profitOfferItemVersion) {
- //新版通过第三方查询
- $first = $outletList->firstWhere('thirdOutletNo', $outlet_id);
-
- if ($first) {
- break;
- }
- } else {
- //旧版通过平安网点查询
- $first = $outletList->firstWhere('outletNo', $PaOutletId);
- if ($first) {
- break;
- }
- }
- }
-
- if (!$first) {
- return '核销失败,未找到可用网点信息。';
- }
-
- if (!$thirdPartyGoodsId) {
- return '核销失败,平安券编号规则有误。';
- }
-
- if (!$productId) {
- return '核销失败,未查询到平安券商品id。';
- }
-
- return $this->queryData = [
- 'thirdPartyGoodsId' => $thirdPartyGoodsId,
- 'productId' => $productId,
- 'PaOutletId' => $first['outletNo'],
- ];
-
- }
-
-}
\ No newline at end of file
+HasCheck();
+ if ($res !== false) {
+ return $res;
+ }
+
+ //检查可核销次数
+ $ret = $this->CheckCount();
+ if ($ret !== true) {
+ return $ret;
+ }
+
+ //查询卡券信息
+ $this->query_coupon = (new Query)->setOutletId($this->outletId)
+ ->setCode($this->redemptionCode)
+ ->start();
+ if (is_string($this->query_coupon)) {
+ return $this->query_coupon;
+ }
+
+ //校验卡券
+ $ticket = $this->checkCoupon();
+ if (!is_array($ticket)) {
+ return $ticket;
+ }
+
+ //增加核销记录
+ $coupon = $this->AddCoupon();
+ if (is_string($coupon)) {
+ return $coupon;
+ }
+
+ try {
+ $params = [
+ 'couponNo' => $coupon->redemptionCode,
+ 'partnerOrderId' => date('ymdHis') . sprintf("%0" . strlen(999999) . "d", mt_rand(0, 999999)),
+ 'outletId' => $coupon->PaOutletId,
+ 'productId' => $coupon->productId,
+ 'timestamp' => $this->getMsecTime(),
+ ];
+
+ $url = $this->baseUri . 'partner/redemption';
+ $str = $this->encrypt($params);
+ $res = $this->getPingAnData($url, [], ['data' => $str]);
+
+ if (!is_array($res)) {
+ $coupon->remark = $res;
+ $coupon->status = 3;
+ $coupon->save();
+ throw new \Exception($res);
+ }
+
+ if ($res['code'] != 200) {
+ $coupon->remark = $res['code'] . '--' . $res['message'];
+ $coupon->status = 3;
+ $coupon->save();
+ throw new \Exception($res['message']);
+ }
+
+ $data = $res['data'];
+
+ $coupon->remark = $data['message'];
+ $coupon->status = ($data['status'] == 1) ? 2 : 3;
+ $coupon->save();
+
+ //返回的数据
+ $resdata = [
+ 'price' => $coupon->price,
+ 'name' => $coupon->couponName,
+ 'total' => $coupon->total,
+ ];
+
+ //核销成功 执行分润
+ $coupon->profit();
+
+ return $resdata;
+
+ } catch (Exception $e) {
+ $coupon->status = 3;
+ $coupon->remark = '核销失败 ' . $e->getMessage();
+ $coupon->save();
+
+ return $coupon->remark;
+ }
+
+ }
+
+ /**
+ * Notes: 如可核销记录
+ * @Author: 玄尘
+ * @Date : 2020/7/21 15:03
+ * @return string
+ */
+ public function AddCoupon()
+ {
+ try {
+ $couponData = [
+ 'user_id' => $this->user->id,
+ 'type' => Coupon::TYPE_PINGAN,
+ 'outletId' => $this->outletId,
+ 'orderid' => $this->orderid,
+ 'PaOutletId' => $this->queryData['PaOutletId'],
+ 'redemptionCode' => $this->redemptionCode,
+ 'productId' => $this->queryData['productId'],
+ 'thirdPartyGoodsId' => $this->queryData['thirdPartyGoodsId'],
+ 'couponName' => $this->query_coupon['couponName'],
+ 'price' => $this->ticket['price'],
+ 'total' => $this->total,
+ 'profit' => $this->ticket['profit'],
+ 'status' => 0,
+ 'startTime' => $this->query_coupon['startTime'],
+ 'endTime' => $this->query_coupon['endTime'],
+ ];
+
+ return $coupon = Coupon::create($couponData);
+
+ } catch (Exception $e) {
+ return $e->getMessage();
+ }
+
+ }
+
+ /**
+ * Notes: 检查卡券信息
+ * @Author: 玄尘
+ * @Date : 2020/6/29 16:40
+ * @return string
+ */
+ public function checkCoupon()
+ {
+
+ //检查卡券是否已被核销
+ if ($this->query_coupon['status'] > 0) {
+ if (isset(config('pingan.coupon_status')[$this->query_coupon['status']])) {
+ return '核销失败,平安券' . config('pingan.coupon_status')[$this->query_coupon['status']];
+ }
+
+ return '核销失败,平安券不可用。';
+ }
+
+ $startTime = Carbon::parse($this->query_coupon['startTime']);
+ $endTime = Carbon::parse($this->query_coupon['endTime']);
+ $now = now();
+
+ if ($startTime->gt($now)) {
+ return '核销失败,平安券未开始使用。';
+ }
+
+ if ($now->gt($endTime)) {
+ return '核销失败,平安券已过期。';
+ }
+
+ //查找适配的商品id 和 网点id
+ $pinganData = $this->getPinganProduct();
+
+ if (is_string($pinganData)) {
+ return $pinganData;
+ }
+
+ //获取相关优惠信息
+ return $this->checkCode();
+
+ }
+
+ /**
+ * 校验平安券编号
+ * @return array|string [type] [description]
+ */
+ public function checkCode()
+ {
+ $code = $this->user->code->where('code', $this->queryData['thirdPartyGoodsId'])->first();
+ if (!$code) {
+ return "核销失败,未找到此项平安券规则,请联系管理人员检查渠道配置。";
+ }
+
+ $ticket = explode('-', $this->queryData['thirdPartyGoodsId']);
+
+ if (!is_array($ticket) || count($ticket) != 3) {
+ return "核销失败,平安券规则格式不正确。";
+ }
+
+ $full = $ticket[1]; //full100
+ $price = $ticket[2];
+ preg_match('/\d+/', $full, $result);
+
+ if (empty($result) || !is_array($result)) {
+ return "核销失败,平安券规则格式不正确。";
+ }
+
+ if (!is_numeric($this->total)) {
+ return "核销失败,订单金额必须是数字";
+ }
+ if ($result[0] > $this->total) {
+ return '核销失败,订单金额不足,平安券不可使用。';
+ }
+
+ $this->ticket = [
+ 'total' => $result[0],
+ 'price' => $price,
+ 'profit' => $code->profit,
+ ];
+
+ return $this->ticket;
+ }
+
+ /**
+ * 查找平安商品id
+ * @author 玄尘 2020-04-04
+ * @return array|string [type] [description]
+ */
+ public function getPinganProduct()
+ {
+ //查询网点是否存在
+ $outlet = User::where('outlet_id', $this->outletId)->first();
+
+ if (!$outlet) {
+ return '核销失败,网点编号错误,未查询到网点信息';
+ }
+
+ $PaOutletId = $outlet->PaOutletId;
+ $outlet_id = $outlet->outlet_id;
+ $profitOfferItemVersion = $this->query_coupon['profitOfferItemVersion'];
+
+ if (!$PaOutletId && $profitOfferItemVersion != 1) {
+ return '核销失败,参数错误,渠道信息缺少平安网点id';
+ }
+
+ $productItemList = $this->query_coupon['productItemList'];
+
+ if (!is_array($productItemList) || !is_array($productItemList[0])) {
+ return '核销失败,平安券数据有误,可能是未配置网点。';
+ }
+
+ //循环查找
+ $first = '';
+ foreach ($productItemList as $key => $item) {
+ $productId = $item['productId'];
+ $thirdPartyGoodsId = $item['thirdPartyGoodsId'];
+ $outletList = $item['outletList'];
+ if (!is_array($outletList) || !is_array($outletList[0])) {
+ return '核销失败,网点信息有误!请检查平安券配置信息。';
+ break;
+ }
+
+ $outletList = collect($outletList);
+ //判断是新版还是旧版
+ if ($profitOfferItemVersion) {
+ //新版通过第三方查询
+ $first = $outletList->firstWhere('thirdOutletNo', $outlet_id);
+
+ if ($first) {
+ break;
+ }
+ } else {
+ //旧版通过平安网点查询
+ $first = $outletList->firstWhere('outletNo', $PaOutletId);
+ if ($first) {
+ break;
+ }
+ }
+ }
+
+ if (!$first) {
+ return '核销失败,未找到可用网点信息。';
+ }
+
+ if (!$thirdPartyGoodsId) {
+ return '核销失败,平安券编号规则有误。';
+ }
+
+ if (!$productId) {
+ return '核销失败,未查询到平安券商品id。';
+ }
+
+ return $this->queryData = [
+ 'thirdPartyGoodsId' => $thirdPartyGoodsId,
+ 'productId' => $productId,
+ 'PaOutletId' => $first['outletNo'],
+ ];
+
+ }
+
+}