rabin 1 天之前
父节点
当前提交
8f9cdb7325

+ 1 - 0
src/place/interface/app/Api/Address.php

@@ -6,6 +6,7 @@ class Address extends Core
 {
     protected $login = true;
     protected $entry = true;
+    private $service;
 
     public function init()
     {

+ 1 - 0
src/place/interface/app/Api/Collect.php

@@ -6,6 +6,7 @@ class Collect extends Core
 {
     protected $login = true;
     protected $entry = true;
+    private $act;
 
     public function init()
     {

+ 2 - 0
src/place/interface/app/Api/Order.php

@@ -8,6 +8,8 @@ class Order extends Core
 {
     protected $login = true;
     protected $entry = true;
+    private $service;
+    private $refund;
 
     public function init()
     {

+ 2 - 0
src/place/interface/app/Api/Perk.php

@@ -7,6 +7,8 @@ class Perk extends Core
 {
     protected $login = true;
     protected $entry = true;
+    private $service;
+    private $item;
 
     public function init()
     {

+ 1 - 0
src/place/interface/app/Api/Review.php

@@ -6,6 +6,7 @@ class Review extends Core
 {
     protected $login = true;
     protected $entry = true;
+    private $act;
 
     public function init()
     {

+ 1 - 0
src/place/order/app/Lib/Pay.php

@@ -10,6 +10,7 @@ class Pay
     protected $coupon = [];
     protected $gift = [];
     protected $set = [];
+    private $place;
 
     public function __construct(Place $place)
     {

+ 19 - 5
src/place/order/app/Lib/Source/Refund.php

@@ -95,11 +95,12 @@ class Refund
             # 更新状态
             Dever::db('porder/source_refund')->update($refund['id'], ['status' => 4, 'fdate' => time()]);
 
-            # 查找历史已退款金额
+            # 查找已退款金额
             $history = Dever::db('porder/source_refund')->sum(['order_id' => $order['id'], 'status' => 4], 'cash');
+            $score = Dever::load(\Pscore\Lib\Info::class)->get($order['score_id']);
 
             # 检测订单是否全都退了
-            if ($history + $refund['cash'] >= $order['cash']) {
+            if ($history >= $order['cash']) {
                 Dever::db('porder/source')->update($order['id'], ['status' => 8, 'fdate' => time(), 'refund_status' => 2, 'refund_cash' => $order['cash']]);
                 Dever::load(\Porder\Lib\Source\Log::class)->up(1, $order['uid'], $order['id'], '订单已全额退款');
                 # 退货 恢复库存
@@ -124,7 +125,6 @@ class Refund
                     if ($rebate) {
                         $detail = Dever::db('porder/source_detail')->select(['order_id' => $order['id']]);
                         if ($detail) {
-                            $score = Dever::load(\Pscore\Lib\Info::class)->get($order['score_id']);
                             $rebate = ['rule' => []];
                             Dever::db('porder/rebate')->delete(['table' => 'source', 'table_id' => $order['id']]);
                             Dever::db('pscore/user_log')->delete(['relation' => 'source_order_' . $order['id']]);
@@ -170,7 +170,21 @@ class Refund
             # 退支付金额
             if ($cash['pay_cash'] > 0) {
                 # 走支付退款流程
+                $sector_id = $place_id = 0;
+                if (class_exists('\\Place')) {
+                    $sector_id = Dever::get('Place')->sector['id'];
+                    $place_id = Dever::get('Place')->info['id'];
+                } elseif ($muser = Dever::getData('muser')) {
+                    $sector_id = $muser['select']['info_id'];
+                    $place_id = $muser['select']['data_id'];
+                }
+                $money = Dever::math('mul', $cash['pay_cash'], $score['exp']);
+                $state = Dever::load(\Place\Lib\Account::class)->refund($order['order_num'], $order['pay_money_cash'], $money, $order['order_num'] . '_' . $refund['id'], $sector_id, $place_id, 'source');
+                print_r($state);die;
+
+                Dever::db('porder/source_refund')->update($refund['id'], ['pay_status' => 2]);
             }
+            echo 11;die;
 
             # 退余额
             if ($cash['wallet_cash'] > 0) {
@@ -180,13 +194,13 @@ class Refund
             # 退礼品卡
             if ($cash['gift_cash'] > 0) {
                 $order['gift_cash'] = $cash['gift_cash']*-1;
-                Dever::load(\Puser\Lib\Gift::class)->use('source', $order);
+                Dever::load(\Puser\Lib\Gift::class)->use('source', $order, $score);
             }
 
             # 退优惠券
             if ($cash['coupon_cash'] > 0) {
                 $order['coupon_cash'] = $cash['coupon_cash']*-1;
-                Dever::load(\Puser\Lib\Coupon::class)->use('source', $order);
+                Dever::load(\Puser\Lib\Coupon::class)->use('source', $order, $score);
             }
         }
     }

+ 12 - 0
src/place/order/table/source_refund.php

@@ -102,6 +102,18 @@ return [
             ],
         ],
 
+        'pay_status' => [
+            'name'      => '支付退款状态',
+            'type'      => 'tinyint(1)',
+            'default'   => 1,
+            'value'     => [
+                1 => '未申请',
+                2 => '退款中',
+                3 => '退款成功',
+                4 => '退款失败',
+            ],
+        ],
+
         'address_id'       => [
             'type'      => 'varchar(20)',
             'name'      => '退款地址',

+ 1 - 0
src/place/role/app/Lib/Price.php

@@ -3,6 +3,7 @@ use Dever;
 use Place;
 class Price
 {
+    private $place;
     public function __construct(Place $place)
     {
         $this->place = $place;

+ 18 - 0
src/place/set/app/Lib/Account.php

@@ -28,6 +28,24 @@ class Account
         return Dever::load(\Api\Lib\Account::class)->run($account, 'order', $order, $env, 'run', 'place');
     }
 
+    # 退款操作
+    public function refund($order_num, $total, $pay_cash, $refund_order_num, $sector_id, $place_id, $type)
+    {
+        $account = Dever::input('platform', 'is_string', '账户', 'weixin');
+        $env = Dever::input('env', 'is_numeric', '运行环境', 3);
+        $account = $this->getInfo(['key' => 'pay_' . $account]);
+        if (!$account) {
+            Dever::error('支付账户配置错误');
+        }
+        $order['order_num'] = $order_num;
+        $order['refund_order_num'] = $refund_order_num;
+        $order['total'] = $total*100;
+        $order['pay_cash'] = $pay_cash*100;
+        $order['notify'] = 'Porder/Lib/Notify.refund|' . $sector_id . '|'  . $place_id . '|' . $type . '|' . $refund_order_num;
+
+        return Dever::load(\Api\Lib\Account::class)->run($account, 'order_refund', $order, $env, 'run', 'place');
+    }
+
     # 获取openid
     public function openid($account, $env, $uid, $result = [])
     {

+ 2 - 3
src/place/set/app/Lib/Info.php

@@ -1,6 +1,5 @@
 <?php namespace Place\Lib;
 use Dever;
-use Place;
 use Dever\Helper\Secure;
 class Info
 {
@@ -13,8 +12,8 @@ class Info
             $place_id = $muser['select']['data_id'];
             $place = Dever::db('place/info')->find($place_id);
             $money = Dever::db('sector/money')->find($place['money_id']);
-        } else {
-            $money = Dever::get(Place::class)->money();
+        } elseif (class_exists('\\Place')) {
+            $money = Dever::get('Place')->money();
         }
         Dever::setData('money', $money);
         return $money;

+ 1 - 0
src/place/source/app/Lib/Price.php

@@ -3,6 +3,7 @@ use Dever;
 use Place;
 class Price
 {
+    private $place;
     public function __construct(Place $place)
     {
         $this->place = $place;

+ 1 - 0
src/place/user/app/Lib/Address.php

@@ -3,6 +3,7 @@ use Dever;
 class Address
 {
     private $col = 'id,name,phone,area,address,type,province_id,city_id,county_id,town_id';
+    private $uid;
     # 获取默认地址
     public function init($uid)
     {

+ 4 - 4
src/place/user/app/Lib/Role.php

@@ -2,7 +2,7 @@
 use Dever;
 class Role
 {
-    private static $level = [];
+    private $level = [];
     # 获取当前用户的身份等级列表
     public function getLevel($uid, $info_id = false)
     {
@@ -10,8 +10,8 @@ class Role
         if (!$uid) {
             return $result;
         }
-        if (self::$level) {
-            return self::$level;
+        if ($this->level) {
+            return $this->level;
         }
         $where['uid'] = $uid;
         if ($info_id) {
@@ -30,7 +30,7 @@ class Role
                 }
             }
         }
-        self::$level = $result;
+        $this->level = $result;
         return $result;
     }
 }