Browse Source

完善功能

gorden 9 months ago
parent
commit
eaefba64a8

+ 1 - 1
app/admin/controller/marketing/DeptPremisesController.php

@@ -23,7 +23,7 @@ class DeptPremisesController extends Curd
     public function selectList()
     {
         $premisses = SysDept::where('dept_category', '营业场所')
-            ->select('dept_id as key', 'dept_name as label')
+            ->select('dept_id as key', 'dept_name as label','dept_address as address','dept_position as position')
             ->get()
             ->toArray();
 

+ 74 - 6
app/admin/controller/order/WholeController.php

@@ -7,6 +7,7 @@ use app\admin\validate\coupon\CouponValidate;
 use app\admin\validate\device\DeviceValidate;
 use app\admin\validate\order\OrderExpressValidate;
 use app\admin\validate\order\OrderValidate;
+use app\common\payment\Tlpay;
 use app\controller\Curd;
 use app\model\Appointment;
 use app\model\ClientConfig;
@@ -20,6 +21,7 @@ use app\model\MemberBenefit;
 use app\model\MemberRole;
 use app\model\Order;
 use app\model\OrderExpress;
+use app\model\OrderReturn;
 use app\model\OrderSheet;
 use app\model\PayDetail;
 use app\model\Premises;
@@ -27,11 +29,13 @@ use app\model\Supplier;
 use app\model\SysDept;
 use app\model\SysSerial;
 use app\model\SysUser;
+use Payment\Common\PayException;
 use support\Db;
 use support\exception\BusinessException;
 use support\Redis;
 use support\Request;
 use support\Response;
+use function Qiniu\Http\Middleware\compose;
 
 class WholeController extends Curd
 {
@@ -142,10 +146,10 @@ class WholeController extends Curd
         $orderId = $request->get('order_id');
         $orderSheet = OrderSheet::with([
             'member' => function ($query) {
-                $query->select('member_id', 'member_mobile','member_is_owner','join_member_role_id');
+                $query->select('member_id', 'member_mobile', 'member_is_owner', 'join_member_role_id');
             },
             'goods' => function ($query) {
-                $query->select('goods_id', 'goods_name', 'goods_cover', 'goods_market_price', 'goods_sales_price', 'goods_classify','goods_if_express');
+                $query->select('goods_id', 'goods_name', 'goods_cover', 'goods_market_price', 'goods_sales_price', 'goods_classify', 'goods_if_express');
             },
             'memberInfo',
             'cert',
@@ -251,8 +255,8 @@ class WholeController extends Curd
                 }
             }
             $item['member']['level'] = '普通用户';
-            if (!empty($item['member']['join_member_role_id'])){
-                $item['member']['level'] = MemberRole::where('member_role_id',$item['member']['join_member_role_id'])->value('member_role_name');
+            if (!empty($item['member']['join_member_role_id'])) {
+                $item['member']['level'] = MemberRole::where('member_role_id', $item['member']['join_member_role_id'])->value('member_role_name');
             }
         }
 
@@ -702,7 +706,7 @@ class WholeController extends Curd
                 $redis->sadd($key, $params['order_id']);
 
                 $model = OrderExpress::where('join_express_order_id', $params['order_id'])->first();
-                if(!$model){
+                if (!$model) {
                     $model = new OrderExpress();
                     // $sheet = OrderSheet::where('join_sheet_order_id', $request->post('order_id'))
                     //     ->select('join_sheet_goods_id')
@@ -712,7 +716,7 @@ class WholeController extends Curd
                     //     $address = ClientConfig::where('client_config_id',$extendJson['address_id'])->first();
                     //     $params['']
                     // }
-                    
+
                 }
             }
 
@@ -929,4 +933,68 @@ class WholeController extends Curd
 
         }
     }
+
+    public function doRefund(Request $request)
+    {
+        $returnId = $request->post('return_id', '');
+        $amount = $request->post('amount', 0);
+        if (!$returnId || !$amount) {
+            return json_fail('参数异常');
+        }
+
+        $return = OrderReturn::where('join_return_order_id', $returnId)
+            ->first();
+        if (!$return) {
+            return json_fail("退款订单异常");
+        }
+
+        $order = Order::where('order_id', $return->join_return_order_id)->first();
+        if (!$order) {
+            return json_fail("订单异常");
+        }
+        if ($amount > $order->order_amount_pay) {
+            return json_fail('退款金额不能超过订单金额');
+        }
+
+        $payDetail = PayDetail::where('join_pay_order_id', $order->order_groupby)->first();
+        if (!$payDetail) {
+            return json_fail("支付信息异常异常");
+        }
+        $responseJson = [];
+        if (!empty($payDetail->pay_json_response)) {
+            $responseJson = json_decode($payDetail->pay_json_response, true);
+            if (!isset($responseJson['trxid'])) {
+                return json_fail("支付信息异常异常");
+            }
+        }
+
+        $data = [
+            'randomstr' => random_string(32),
+            'reqsn' => $return->join_return_order_id,
+            'oldtrxid' => $responseJson['trxid'],
+            'trxamt' => $amount * 100,
+
+        ];
+
+        try {
+            Db::beginTransaction();
+            $tlpay = new Tlpay();
+            $return = $tlpay->refund($data);
+
+            Db::commit();
+
+            _syslog("退款", "发起退款", $return, $data);
+            return json_success("退款成功");
+        } catch (PayException $e) {
+            Db::rollBack();
+
+            _syslog("退款", "发起退款", $e->getMessage(), $data);
+            return json_fail("发起退款失败");
+        } catch (\Exception $e) {
+            Db::rollBack();
+
+            _syslog("退款", "发起退款", $e->getMessage(), $data);
+            return json_fail("数据更新失败");
+        }
+    }
 }

+ 19 - 6
app/admin/service/goods/GoodsService.php

@@ -623,6 +623,9 @@ class GoodsService
                 if (isset($extendJson['icon'])) {
                     $data['goods_theme_icon'] = getenv('STORAGE_DOMAIN') . $extendJson['icon'];
                 }
+                if (isset($extendJson['service_premises_id'])){
+                    $data['goods_service_premises'] = $extendJson['service_premises_id'];
+                }
             }
 
             $data['appointment_times'] = [];
@@ -643,12 +646,6 @@ class GoodsService
 
                     $data['appointment_times'] = $times;
                 }
-                if (isset($extendJson['address'])) {
-                    $data['address'] = $extendJson['address'];
-                }
-                if (isset($extendJson['min-count'])){
-                    $data['min_count'] = $extendJson['min-count'];
-                }
                 if (isset($extendJson['time'])){
                     $extendJsonTime = explode('至',$extendJson['time']);
                     if(isset($extendJsonTime[0]) && isset($extendJsonTime[1])){
@@ -661,6 +658,12 @@ class GoodsService
                 if (isset($extendJson['teachers'])){
                     $data['teachers'] = $extendJson['teachers'];
                 }
+                if (isset($extendJson['address'])) {
+                    $data['address'] = $extendJson['address'];
+                }
+                if (isset($extendJson['min-count'])){
+                    $data['min_count'] = $extendJson['min-count'];
+                }
                 if (isset($extendJson['position'])) {
                     $data['position'] = $extendJson['position'];
                 }
@@ -1228,6 +1231,8 @@ class GoodsService
                 }
                 if (isset($params['min_count'])){
                     $attributeJson['min-count'] = $params['min_count'];
+                }else{
+                    $attributeJson['min-count'] = 1;
                 }
                 if (isset($params['teachers'])){
                     $attributeJson['teachers'] = $params['teachers'];
@@ -1241,6 +1246,9 @@ class GoodsService
                 if (!empty($params['position'])){
                     $attributeJson['position'] = $params['position'];
                 }
+                if (isset($params['goods_service_premises'])){
+                    $attributeJson['service_premises_id'] = $params['goods_service_premises'];
+                }
                 $model->goods_attribute_json = json_encode($attributeJson, JSON_UNESCAPED_UNICODE);
 
 //                $times = [];
@@ -1601,10 +1609,15 @@ class GoodsService
                 }
                 if (isset($params['min_count'])){
                     $attributeJson['min-count'] = $params['min_count'];
+                }else{
+                    $attributeJson['min-count'] = 1;
                 }
                 if (isset($params['teachers'])){
                     $attributeJson['teachers'] = $params['teachers'];
                 }
+                if (isset($params['goods_service_premises'])){
+                    $attributeJson['service_premises_id'] = $params['goods_service_premises'];
+                }
                 $data['goods_attribute_json'] = json_encode($attributeJson, JSON_UNESCAPED_UNICODE);
             }
 

+ 34 - 0
app/common/payment/Tlpay.php

@@ -0,0 +1,34 @@
+<?php
+namespace app\common\payment;
+
+use Payment\Client\Refund;
+use Payment\Config;
+use Payment\Common\PayException;
+use support\Cache;
+
+class Tlpay
+{
+    protected $config;
+
+    public function __construct()
+    {
+        $this->config = config('payment.tl');
+    }
+
+    public function refund($data)
+    {
+        if (!$data){
+            return json_fail('参数异常');
+        }
+
+        try {
+            $ret = Refund::run(Config::TL_REFUND, $this->config, $data);
+
+            file_put_contents(runtime_path('logs/tlpay.log'),json_encode($ret, JSON_UNESCAPED_UNICODE));
+            return $ret;
+        } catch (PayException $e) {
+            throw new PayException("发起退款失败");
+        }
+
+    }
+}

+ 18 - 0
config/payment.php

@@ -0,0 +1,18 @@
+<?php
+
+return [
+    'tl' => [
+        'app_id' => '00265677',  // 公众账号ID
+        'cus_id' => '660451073920V5E',// 商户id
+        'md5_key' => '55079104816PJXP04',// md5 秘钥
+        'sign_type' => 'MD5',// MD5  HMAC-SHA256
+
+        'limit_pay' => ['no_credit'],
+
+        'notify_url' => 'http://172.16.2.46:8080/vo-apidemo/OrderServlet',
+
+        'redirect_url' => 'https://helei112g.github.io/',// 如果是h5支付,可以设置该值,返回到指定页面
+
+        'return_raw' => false,// 在处理回调时,是否直接返回原始数据,默认为true
+    ]
+];

+ 1 - 0
route/admin.php

@@ -769,6 +769,7 @@ Route::group('/admin', function () {
             Route::get('/myOrder', [\app\admin\controller\order\WholeController::class, 'myOrder']);
             Route::post('/add', [\app\admin\controller\order\WholeController::class, 'insert']);
             Route::post('/delete', [\app\admin\controller\order\WholeController::class, 'delete']);
+            Route::post('/doRefund', [\app\admin\controller\order\WholeController::class, 'doRefund']);
 
         })->middleware([
             \app\middleware\AdminAuthCheck::class