diff --git a/app/api/logic/order/OrderLogic.php b/app/api/logic/order/OrderLogic.php
index a243ad507..9b8416efa 100644
--- a/app/api/logic/order/OrderLogic.php
+++ b/app/api/logic/order/OrderLogic.php
@@ -39,6 +39,8 @@ use Yansongda\Pay\Event\PayEnd;
 class OrderLogic extends BaseLogic
 {
     public static $total;
+    public static $cost;
+    public static $profit;
 
     /**
      * @notes 获取购物车商品信息
@@ -56,16 +58,24 @@ class OrderLogic extends BaseLogic
         }
         try {
             self::$total = 0;
+            self::$cost = 0;//成本
+            self::$profit = 0;//利润
+
             /** 计算价格 */
-            $check = DictType::where('type','activities')->find();
+            $check = DictType::where('type', 'activities')->find();
             foreach ($cart_select as $k => $v) {
                 $find = StoreBranchProduct::where(['id' => $v['goods']])->field('store_name,image,unit,price,product_id')->find();
                 if (!$find) {
                     continue;
                 }
-                if(isset($check) && $check['status'] == 1){
-                    $find['price'] = StoreProduct::where('id',$find['product_id'])->withTrashed()->value('ot_price');
+                $productBase = StoreProduct::where('id', $find['product_id'])->withTrashed()->field('price,ot_price,cost')->find();
+                if (isset($check) && $check['status'] == 1) {
+                    $find['price'] = $productBase['ot_price'];
                 }
+                //利润
+                $onePrice = bcsub($productBase['price'], $productBase['ot_price'], 2);
+                $cart_select[$k]['profit'] = bcmul($v['cart_num'], $onePrice, 2);//利润
+                $cart_select[$k]['cost'] = bcmul($v['cart_num'], $productBase['cost'], 2) ?? 0;
                 $cart_select[$k]['total'] = bcmul($v['cart_num'], $find['price'], 2);//钱
                 $cart_select[$k]['price'] = $find['price'];
                 $cart_select[$k]['product_id'] = $v['goods'];
@@ -77,63 +87,69 @@ class OrderLogic extends BaseLogic
                 $cartInfo['image'] = $find['image'];
                 //计算好vip价格
                 $vipPrice = self::dealVip($find['price']);
-                if($vipPrice){
+                if ($vipPrice) {
                     $cartInfo['price'] = $vipPrice;
                 }
-                $cartInfo['vip_price'] = $cart_select[$k]['total'] - $vipPrice??0;
+                $cartInfo['vip_price'] = $cart_select[$k]['total'] - $vipPrice ?? 0;
                 $cart_select[$k]['cart_info'] = json_encode($cartInfo);
                 //理论上每笔都是拆分了
                 $cart_select[$k]['name'] = $find['store_name'];
                 $cart_select[$k]['imgs'] = $find['image'];
                 $cart_select[$k]['unit_name'] = StoreProductUnit::where(['id' => $find['unit']])->value('name');
                 self::$total = bcadd(self::$total, $cart_select[$k]['total'], 2);
+                self::$cost = bcadd(self::$cost, $cart_select[$k]['cost'], 2);
+                self::$profit = bcadd(self::$profit, $cart_select[$k]['profit'], 2);
             }
             //TODO 收单打9.9折 会员按照比例打折  等级按照充值去升级
             $pay_price = self::$total;
 //            $check = StoreOrder::where('uid',\request()->userId)->count();//首单逻辑
             $vipPrice = 0;
-            if(isset($check) && $check['status'] == 1){
+            if (isset($check) && $check['status'] == 1) {
 //                $discountRate = '0.99';//首单逻辑
 //                $pay_price 是价格
                 $discountRate = $check['remark'];//折扣
                 $discountRate = bcdiv($discountRate, '10', 2);
-                $pay_price =  bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
-            }else{
-                $userVip = User::where('id',\request()->userId)->value('user_ship');
-                if($userVip){
-                    switch ($userVip){
+                $pay_price = bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
+            } else {
+                $userVip = User::where('id', \request()->userId)->value('user_ship');
+                if ($userVip) {
+                    switch ($userVip) {
                         case UserShipEnum::VIP1:
-                            $discountRate = UserShip::where('id',UserShipEnum::VIP1)->value('discount');
+                            $discountRate = UserShip::where('id', UserShipEnum::VIP1)->value('discount');
                             break;
                         case UserShipEnum::VIP2:
-                            $discountRate = UserShip::where('id',UserShipEnum::VIP2)->value('discount');
+                            $discountRate = UserShip::where('id', UserShipEnum::VIP2)->value('discount');
                             break;
                         case UserShipEnum::VIP3:
-                            $discountRate = UserShip::where('id',UserShipEnum::VIP3)->value('discount');
+                            $discountRate = UserShip::where('id', UserShipEnum::VIP3)->value('discount');
                             break;
                         case UserShipEnum::VIP4:
-                            $discountRate = UserShip::where('id',UserShipEnum::VIP4)->value('discount');
+                            $discountRate = UserShip::where('id', UserShipEnum::VIP4)->value('discount');
                             break;
                         case UserShipEnum::VIP5:
-                            $discountRate = UserShip::where('id',UserShipEnum::VIP5)->value('discount');
+                            $discountRate = UserShip::where('id', UserShipEnum::VIP5)->value('discount');
                             break;
                         default:
                             $discountRate = 1;
                     }
                     $discountRate = bcdiv($discountRate, '100', 2);
-                    $pay_price =  bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
+                    $pay_price = bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
                 }
             }
-            if(!empty(self::$total) && !empty($pay_price)){
+            if (!empty(self::$total) && !empty($pay_price)) {
                 bcscale(2);
                 $vipPrice = bcsub(self::$total, $pay_price, 2);
             }
+
+            //成本价  收益
             $order = [
                 'create_time' => time(),
                 'order_id' => getNewOrderId('PF'),
                 'total_price' => self::$total,//总价
+                'cost' => self::$cost,//成本价
+                'profit' => self::$profit,//利润
                 'pay_price' => $pay_price,//后期可能有降价抵扣
-                'vip_price'=>$vipPrice,
+                'vip_price' => $vipPrice,
                 'total_num' => count($cart_select),//总数
                 'pay_type' => $params['pay_type'] ?? 0,
                 'reservation_time' => $params['reservation_time'] ?? '',
@@ -168,6 +184,7 @@ class OrderLogic extends BaseLogic
         $_order['mobile'] = $user['mobile'];
         $_order['pay_type'] = $orderInfo['order']['pay_type'];
         $_order['verify_code'] = $verify_code;
+        $_order['reservation_time'] = null;
         if (isset($params['reservation_time'])) {
             $_order['reservation_time'] = $params['reservation_time'];
             $_order['reservation'] = YesNoEnum::YES;
@@ -453,11 +470,11 @@ class OrderLogic extends BaseLogic
     //取消售后
     public static function cancelSell($where)
     {
-       return StoreOrder::where($where)->update(
+        return StoreOrder::where($where)->update(
             [
-                'refund_status'=>OrderEnum::CANCEL_SALE,
-                'status'=>OrderEnum::CANCEL_ORDER,
-                'refund_cancle_time'=>date('Y-m-d H:i:s',time())
+                'refund_status' => OrderEnum::CANCEL_SALE,
+                'status' => OrderEnum::CANCEL_ORDER,
+                'refund_cancle_time' => date('Y-m-d H:i:s', time())
             ]
         );
 
@@ -512,149 +529,151 @@ class OrderLogic extends BaseLogic
     }
 
 
-    public static function write_count($info,$params)
+    public static function write_count($info, $params)
     {
-        $store_id = SystemStoreStaff::where('phone',$info['mobile'])->value('store_id');
-        if(empty($store_id)){
+        $store_id = SystemStoreStaff::where('phone', $info['mobile'])->value('store_id');
+        if (empty($store_id)) {
             throw new \Exception('该用户未绑定店铺请查看');
         }
         $query = StoreOrderCartInfo::alias('o')
-            ->leftJoin('store_branch_product p','p.id = o.product_id')
-            ->leftJoin('store_order s','s.id = o.oid')
+            ->leftJoin('store_branch_product p', 'p.id = o.product_id')
+            ->leftJoin('store_order s', 's.id = o.oid')
             ->field('o.oid,p.store_name,s.order_id')
-            ->where('o.store_id',$store_id);
+            ->where('o.store_id', $store_id);
 
-        if(isset($params['name']) && $params['name']){
-            if($params['name'] && preg_match('/[\x{4e00}-\x{9fff}]+/u', $params['name'])==1){
-                $query->where('p.store_name','like','%'.$params['name'].'%');
-            }else{
-                $query->where('s.order_id',$params['name']);
+        if (isset($params['name']) && $params['name']) {
+            if ($params['name'] && preg_match('/[\x{4e00}-\x{9fff}]+/u', $params['name']) == 1) {
+                $query->where('p.store_name', 'like', '%' . $params['name'] . '%');
+            } else {
+                $query->where('s.order_id', $params['name']);
             }
         }
         $product = $query->select();
-        if(empty($product)){
+        if (empty($product)) {
             return [
-                'no_send'=>0,
-                'send'=>0
+                'no_send' => 0,
+                'send' => 0
             ];
         }
         $oids = array_column($product->toArray(), 'oid');
         $uniqueOids = array_unique($oids);
-        $no_send = StoreOrder::whereIn('id',$uniqueOids)
-            ->where('status',1)->count();
-        $send = StoreOrder::whereIn('id',$uniqueOids)
-            ->where('status',2)->count();
+        $no_send = StoreOrder::whereIn('id', $uniqueOids)
+            ->where('status', 1)->count();
+        $send = StoreOrder::whereIn('id', $uniqueOids)
+            ->where('status', 2)->count();
         return [
-            'no_send'=>$no_send,
-            'send'=>$send
+            'no_send' => $no_send,
+            'send' => $send
         ];
 
     }
 
     public static function getOne($code)
     {
-        return StoreOrder::with(['store'])->where('verify_code',$code)
+        return StoreOrder::with(['store'])->where('verify_code', $code)
             ->select()->each(function ($item) {
-                $item['goods_list']=StoreOrderCartInfo::where('oid',$item['id'])->with('goodsName')->field('product_id,cart_num,verify_code,is_writeoff,writeoff_time')->limit(3)->select();
-                $item['goods_count']=count(explode(',',$item['cart_id']));
+                $item['goods_list'] = StoreOrderCartInfo::where('oid', $item['id'])->with('goodsName')->field('product_id,cart_num,verify_code,is_writeoff,writeoff_time')->limit(3)->select();
+                $item['goods_count'] = count(explode(',', $item['cart_id']));
                 return $item; //返回处理后的数据。
             })
             ->toArray();
 
     }
 
-    public static function write_list($info,$status,$params)
+    public static function write_list($info, $status, $params)
     {
 
-        $store_id = SystemStoreStaff::where('phone',$info['mobile'])->value('store_id');
-        if(empty($store_id)){
+        $store_id = SystemStoreStaff::where('phone', $info['mobile'])->value('store_id');
+        if (empty($store_id)) {
             throw new \Exception('该用户未绑定店铺请查看');
         }
 
         //先查商品相似
         $query = StoreOrderCartInfo::alias('o')
-            ->leftJoin('store_branch_product p','p.id = o.product_id')
-            ->leftJoin('store_order s','s.id = o.oid')
+            ->leftJoin('store_branch_product p', 'p.id = o.product_id')
+            ->leftJoin('store_order s', 's.id = o.oid')
             ->field('o.oid,p.store_name,s.order_id')
-            ->where('o.store_id',$store_id);
+            ->where('o.store_id', $store_id);
 
-        if(isset($params['name']) && $params['name']){
-            if($params['name'] && preg_match('/[\x{4e00}-\x{9fff}]+/u', $params['name'])==1){
-                $query->where('p.store_name','like','%'.$params['name'].'%');
-            }else{
-                $query->where('s.order_id',$params['name']);
+        if (isset($params['name']) && $params['name']) {
+            if ($params['name'] && preg_match('/[\x{4e00}-\x{9fff}]+/u', $params['name']) == 1) {
+                $query->where('p.store_name', 'like', '%' . $params['name'] . '%');
+            } else {
+                $query->where('s.order_id', $params['name']);
             }
         }
         $product = $query->select();
-        if(empty($product)){
+        if (empty($product)) {
             return [
-                'list'=>[],
-                'count'=>0
+                'list' => [],
+                'count' => 0
             ];
         }
-         $oids = array_column($product->toArray(), 'oid');
-         $uniqueOids = array_unique($oids);
-         $query = StoreOrder::with(['store'])
-             ->whereIn('id',$uniqueOids)
-            ->where('status',$status);
+        $oids = array_column($product->toArray(), 'oid');
+        $uniqueOids = array_unique($oids);
+        $query = StoreOrder::with(['store'])
+            ->whereIn('id', $uniqueOids)
+            ->where('status', $status);
         $count = $query->count();
         $list = $query
             ->page($params['page_no'], $params['page_size'])
             ->order(['id' => 'desc'])
             ->select()
-            ->each(function($item){
-                $item['goods_list']=StoreOrderCartInfo::where('oid',$item['id'])->with('goodsName')->field('product_id,cart_num,verify_code,is_writeoff,writeoff_time')->limit(3)->select();
-                $item['goods_count']=count(explode(',',$item['cart_id']));
+            ->each(function ($item) {
+                $item['goods_list'] = StoreOrderCartInfo::where('oid', $item['id'])->with('goodsName')->field('product_id,cart_num,verify_code,is_writeoff,writeoff_time')->limit(3)->select();
+                $item['goods_count'] = count(explode(',', $item['cart_id']));
             })
             ->toArray();
         return [
-            'list'=>$list,
-            'count'=>$count
+            'list' => $list,
+            'count' => $count
         ];
     }
 
-    public static function dealRefund($uid,$params)
+    public static function dealRefund($uid, $params)
     {
         //todo 单子不是完成的不允许退款
         //单笔不拆单子直接修改状态
-        $order = StoreOrder::where('id',$params['id'])->withTrashed()->findOrEmpty();
-        if(count($params['old_cart_id']) ==1){
+        $order = StoreOrder::where('id', $params['id'])->withTrashed()->findOrEmpty();
+        $params['refund_num'] = 1;//todo 拿实际数量
+        if (count($params['old_cart_id']) == 1) {
             $order->refund_status = OrderEnum::REFUND_STATUS_YES;
             $order->status = OrderEnum::ALREADY_REFUND;
-            $order->refund_reason_wap_explain =$params['refund_message']??'';
-            $order->refund_num = $params['refund_num'];
-            $refund_price_cart = StoreOrderCartInfo::where('oid',$params['id'])
+            $order->refund_reason_wap_explain = $params['refund_message'] ?? '';
+            $order->mark = $params['mark'] ?? '';
+            $order->refund_num = $params['refund_num'] ?? 1;
+            $refund_price_cart = StoreOrderCartInfo::where('oid', $params['id'])
                 ->field('id,oid,cart_info')
                 ->find()->toArray();
             $vipPrice = $order['vip_price'];
             $price = $refund_price_cart['cart_info']['price'] * $params['refund_num'];
             $onePrice = 0;
             bcscale(2);
-            if($vipPrice){
+            if ($vipPrice) {
                 //每单的vip价格
                 $onePrice = bcdiv($vipPrice, $refund_price_cart['cart_info']['cart_num']);
             }
-            if($price > $onePrice){
-                $price =bcsub($price, $onePrice);
+            if ($price > $onePrice) {
+                $price = bcsub($price, $onePrice);
             }
             $order->refund_price = $price;
             $order->refund_type = $params['refund_type'];
             $order->save();
-        }else{
+        } else {
             // 多单的情况 拆主订单为新的2单 修改新的2单的核销码 修改cart_info的核销码 和订单id 退款直接退一单的钱
             $order->delete_time = time();
             $order->save();
             Db::startTrans();
             try {
                 $order = $order->toArray();
-                $cart_info  = StoreOrderCartInfo::where('oid',$params['id'])
-                    ->whereNotIn('old_cart_id',$params['old_cart_id'])
+                $cart_info = StoreOrderCartInfo::where('oid', $params['id'])
+                    ->whereNotIn('old_cart_id', $params['old_cart_id'])
                     ->select()->toArray();
-                if($cart_info){
-                    $leftOrder =  self::dealCreateLeftOrder($order,$cart_info,$params);
+                if ($cart_info) {
+                    $leftOrder = self::dealCreateLeftOrder($order, $cart_info, $params);
                     self::dealChangeCartInfo($leftOrder);
                 }
-                $refundOrder =  self::dealCreateRefundOrder($order,$params);
+                $refundOrder = self::dealCreateRefundOrder($order, $params);
                 self::dealChangeCartInfo($refundOrder);
 //                d($leftOrder,$refundOrder);
                 Db::commit();
@@ -675,28 +694,27 @@ class OrderLogic extends BaseLogic
         $code = $leftOrder->verify_code;
         $new_oid = $leftOrder->id;
         $old_id = $leftOrder->pid;
-        $car_id = explode(',',$leftOrder->cart_id);
-        return  StoreOrderCartInfo::where('oid',$old_id)
-            ->whereIn('old_cart_id',$car_id)
+        $car_id = explode(',', $leftOrder->cart_id);
+        return StoreOrderCartInfo::where('oid', $old_id)
+            ->whereIn('old_cart_id', $car_id)
             ->update([
-                'oid'=>$new_oid,
-                'verify_code'=>$code
+                'oid' => $new_oid,
+                'verify_code' => $code
             ]);
     }
-    
 
 
-    public static function dealCreateLeftOrder($order,$cart_info,$params)
+    public static function dealCreateLeftOrder($order, $cart_info, $params)
     {
         //查出不在这个退货中的数据
-        $order['order_id'] = $order['order_id'].'-2';
+        $order['order_id'] = $order['order_id'] . '-2';
         $order['pid'] = $order['id'];
         unset($order['id']);
-        $allOldCartIds =[];
+        $allOldCartIds = [];
         $totalTotal = 0;
         $totalPrice = 0;
         $totalVipPrice = 0;
-        foreach ($cart_info as $value){
+        foreach ($cart_info as $value) {
             if (isset($value['old_cart_id'])) {
                 $allOldCartIds[] = $value['old_cart_id'];
             }
@@ -712,7 +730,7 @@ class OrderLogic extends BaseLogic
                 }
             }
         }
-        $order['cart_id'] = implode(',',$allOldCartIds);
+        $order['cart_id'] = implode(',', $allOldCartIds);
         $order['total_num'] = count($cart_info);
         $order['refund_type'] = $params['refund_type'];
         $order['total_price'] = number_format($totalTotal, 2);
@@ -722,24 +740,24 @@ class OrderLogic extends BaseLogic
         $order['create_time'] = time();
         $order['update_time'] = null;
         $order['delete_time'] = null;
-        return  StoreOrder::create($order);
+        return StoreOrder::create($order);
     }
 
 
-
-    public static function dealCreateRefundOrder($order,$params)
+    public static function dealCreateRefundOrder($order, $params)
     {
-        $order['order_id'] = $order['order_id'].'-1';
+        $order['order_id'] = $order['order_id'] . '-1';
         $order['pid'] = $order['id'];
         unset($order['id']);
-        $order['cart_id'] = implode(',',$params['old_cart_id']);
+        $order['cart_id'] = implode(',', $params['old_cart_id']);
 
-        $order['refund_status'] =  OrderEnum::REFUND_STATUS_YES;
-        $order['status'] =  OrderEnum::ALREADY_REFUND;
-        $order['refund_num'] =  $params['refund_num'];//按数量整单退剩余的
-        $order['refund_reason_wap_explain'] =  $params['refund_message']??'';
+        $order['refund_status'] = OrderEnum::REFUND_STATUS_YES;
+        $order['status'] = OrderEnum::ALREADY_REFUND;
+        $order['refund_num'] = $params['refund_num'];//按数量整单退剩余的
+        $order['refund_reason_wap_explain'] = $params['refund_message'] ?? '';
+        $order['mark'] = $params['mark'] ?? '';
         $order['total_num'] = count($params['old_cart_id']);
-        $refund_price_cart = StoreOrderCartInfo::whereIn('old_cart_id',$params['old_cart_id'])
+        $refund_price_cart = StoreOrderCartInfo::whereIn('old_cart_id', $params['old_cart_id'])
             ->field('id,oid,cart_info')
             ->select()->toArray();
         $totalTotals = array_column(array_column($refund_price_cart, 'cart_info'), 'total');
@@ -759,49 +777,49 @@ class OrderLogic extends BaseLogic
         $order['total_price'] = number_format($totalTotal, 2);
         $order['pay_price'] = number_format($totalPrice, 2);
         $order['vip_price'] = number_format($totalVipPrices, 2);
-        $order['refund_price'] =  number_format($totalPrice, 2);
+        $order['refund_price'] = number_format($totalPrice, 2);
         $order['verify_code'] = verificationCode();
         $order['refund_reason_time'] = time();
-        $order['create_time'] = time()+1;
+        $order['create_time'] = time() + 1;
         $order['update_time'] = null;
         $order['delete_time'] = null;
-        return  StoreOrder::create($order);
+        return StoreOrder::create($order);
 
     }
 
 
     public static function dealVip($pay_price)
     {
-        $check = DictType::where('type','activities')->find();
-        if(isset($check) && $check['status'] == 1){
+        $check = DictType::where('type', 'activities')->find();
+        if (isset($check) && $check['status'] == 1) {
 //                $discountRate = '0.99';//首单逻辑
             $discountRate = $check['remark'];
             $discountRate = bcdiv($discountRate, '100', 2);
-            $pay_price =  bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
-        }else{
-            $userVip = User::where('id',\request()->userId)->value('user_ship');
-            if($userVip){
-                switch ($userVip){
+            $pay_price = bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
+        } else {
+            $userVip = User::where('id', \request()->userId)->value('user_ship');
+            if ($userVip) {
+                switch ($userVip) {
                     case UserShipEnum::VIP1:
-                        $discountRate = UserShip::where('id',UserShipEnum::VIP1)->value('discount');
+                        $discountRate = UserShip::where('id', UserShipEnum::VIP1)->value('discount');
                         break;
                     case UserShipEnum::VIP2:
-                        $discountRate = UserShip::where('id',UserShipEnum::VIP2)->value('discount');
+                        $discountRate = UserShip::where('id', UserShipEnum::VIP2)->value('discount');
                         break;
                     case UserShipEnum::VIP3:
-                        $discountRate = UserShip::where('id',UserShipEnum::VIP3)->value('discount');
+                        $discountRate = UserShip::where('id', UserShipEnum::VIP3)->value('discount');
                         break;
                     case UserShipEnum::VIP4:
-                        $discountRate = UserShip::where('id',UserShipEnum::VIP4)->value('discount');
+                        $discountRate = UserShip::where('id', UserShipEnum::VIP4)->value('discount');
                         break;
                     case UserShipEnum::VIP5:
-                        $discountRate = UserShip::where('id',UserShipEnum::VIP5)->value('discount');
+                        $discountRate = UserShip::where('id', UserShipEnum::VIP5)->value('discount');
                         break;
                     default:
                         $discountRate = 1;
                 }
                 $discountRate = bcdiv($discountRate, '100', 2);
-                $pay_price =  bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
+                $pay_price = bcdiv(bcmul($pay_price, $discountRate, 4), '1', 2);
             }
         }
         return $pay_price;
diff --git a/app/common/enum/OrderEnum.php b/app/common/enum/OrderEnum.php
index 35f3e685f..fb11a30b8 100644
--- a/app/common/enum/OrderEnum.php
+++ b/app/common/enum/OrderEnum.php
@@ -18,6 +18,7 @@ class OrderEnum
      * @SUPPLIER_ORDER_OBTAINS 供应链订单获得
      * @PLATFORM_ORDER_PAY 平台订单支付
      * @SYSTEM_SET 系统设置
+     * @OWN_GET 平台收入
      */
     const USER_ORDER_PAY = 1;
     const MERCHANT_ORDER_OBTAINS = 2;
@@ -30,6 +31,8 @@ class OrderEnum
     const CASHIER_ORDER_PAY  = 9;
     const CASHIER_CASH_ORDER_PAY  = 10;
 
+    const OWN_GET = 3;
+
 
     /**
      * 收入支出类型