From 31b8a4b3787ee3487bf0de9f99072d4a5aba266f Mon Sep 17 00:00:00 2001 From: chuan <2154243450@qq.com> Date: Tue, 14 Jan 2025 14:36:49 +0800 Subject: [PATCH] =?UTF-8?q?p1=E6=9C=8D=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/OrderService.php | 29 +++--- app/model/MoneyTradeModel.php | 144 +++++++++++++++++++++++++++++ 2 files changed, 159 insertions(+), 14 deletions(-) create mode 100644 app/model/MoneyTradeModel.php diff --git a/app/admin/service/OrderService.php b/app/admin/service/OrderService.php index 8a91f7c..726a952 100644 --- a/app/admin/service/OrderService.php +++ b/app/admin/service/OrderService.php @@ -8,6 +8,7 @@ use app\model\ContractSecTradeModel; use app\model\ContractTradeModel; use app\model\DigitalTradeModel; use app\model\ForexTradeModel; +use app\model\MoneyTradeModel; use app\model\PreBrlStockModel; use app\model\PreEurStockModel; use app\model\PreFundStockModel; @@ -379,18 +380,18 @@ class OrderService extends AdminBaseService } // 列表 - $list = ForexTradeModel::where('status', ForexTradeModel::STATUS_HOLD)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ForexTradeModel::where('status', ForexTradeModel::STATUS_HOLD) + $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) ->where($where)->where($whereU) ->count(); // 持仓总金额 - $totalModel = ForexTradeModel::where('status', ForexTradeModel::STATUS_HOLD) + $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) ->field('SUM(order_money) as total') ->where($where)->where($whereU)->find(); // 持仓总手续费 - $totalServiceCost = ForexTradeModel::where('status', ForexTradeModel::STATUS_HOLD) + $totalServiceCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) ->where($where)->where($whereU) ->sum('service_cost'); @@ -477,13 +478,13 @@ class OrderService extends AdminBaseService } // 列表 - $list = ForexTradeModel::where('status', ForexTradeModel::STATUS_PLACE)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_PLACE)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ForexTradeModel::where('status', ForexTradeModel::STATUS_PLACE) + $total = MoneyTradeModel::where('status', ForexTradeModel::STATUS_PLACE) ->where($where)->where($whereU) ->count(); // 持仓总金额 - $totalModel = ForexTradeModel::where('status', ForexTradeModel::STATUS_PLACE) + $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_PLACE) ->field('SUM(order_money) as total')->where($whereU) ->where($where)->find(); @@ -569,13 +570,13 @@ class OrderService extends AdminBaseService } // 列表 - $list = ForexTradeModel::where('status', ForexTradeModel::STATUS_BACK)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ForexTradeModel::where('status', ForexTradeModel::STATUS_BACK) + $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK) ->where($where)->where($whereU) ->count(); // 持仓总金额 - $totalModel = ForexTradeModel::where('status', ForexTradeModel::STATUS_BACK) + $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK) ->field('SUM(order_money) as total')->where($whereU) ->where($where)->find(); @@ -662,19 +663,19 @@ class OrderService extends AdminBaseService } // 列表 - $list = ForexTradeModel::where('status', ForexTradeModel::STATUS_CLEAR)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ForexTradeModel::where('status', ForexTradeModel::STATUS_CLEAR)->where($whereU) + $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR)->where($whereU) ->where($where) ->count(); // 持仓总手续费 - $totalClosingCost = ForexTradeModel::where('status', ForexTradeModel::STATUS_CLEAR) + $totalClosingCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) ->where($whereU) ->where($where) ->sum('closing_cost'); - $totalFloat = ForexTradeModel::where('status', ForexTradeModel::STATUS_CLEAR) + $totalFloat = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) ->where($whereU) ->where($where) ->field("SUM( CASE WHEN trade_type = 1 THEN ( closing_price - deal_price )* order_number ELSE ( deal_price - closing_price )* order_number END ) AS total")->find(); diff --git a/app/model/MoneyTradeModel.php b/app/model/MoneyTradeModel.php new file mode 100644 index 0000000..e859776 --- /dev/null +++ b/app/model/MoneyTradeModel.php @@ -0,0 +1,144 @@ +$user_id, + 'status'=>1, + 'contract_id'=>$contract_id, + 'trade_type'=>$trade_type + ])->field('order_number,deal_price,service_cost')->select(); + $con_list=ContractListMode::getMarketFaceList(1); + if(!empty($list)) { + $list_arr=$list->toArray(); + foreach ($list_arr as $val){ + $order_num=$val['order_number']*$val['deal_price'] ;//+ $val['service_cost']; + $money+=$order_num; + $num+=$val['order_number']; + } + } + return [ + 'buy_num'=>$num, + 'face_value'=>isset($con_list[$contract_id]) ? $con_list[$contract_id]:0, + 'buy_money'=>$money + ]; + } + public static function getUserEarnestMmoney(int $user_id) + { + $num=self::where([ + 'user_id'=>$user_id, + 'status'=>1 + ])->sum('earnest_money'); + return $num >0 ? $num:0; + } + public static function getUserTradeNum(int $user_id) + { + //查询持仓订单总成本 + $count=self::where([ + ['user_id','=',$user_id], + ['status','>',0] + ])->count(); + return $count>0; + } + + /** + * 获取累计盈亏 + */ + public static function getTradeOrderDailyNum(int $user_id) + { + $num=0; + //查询持仓订单总成本 + $list=self::where([ + 'user_id'=>$user_id, + 'status'=>3 + ])->field('order_number,closing_price,deal_price,closing_cost,service_cost,trade_type,contract_id,face_value')->select(); + + //$con_list=ContractListMode::getMarketFaceList(1); + if(!empty($list)) { + $list_arr=$list->toArray(); + foreach ($list_arr as $val){ + if(empty($val['face_value'])){ + $face_value=1; + }else{ + $face_value=$val['face_value']; + } + if($val['trade_type']==1){ + //$order_num=$val['order_number']*($val['closing_price']-$val['deal_price'])-$val['closing_cost']-$val['service_cost']; + $order_num=$val['order_number']*($val['closing_price']-$val['deal_price'])*$face_value; + }else{ + //$order_num=$val['order_number']*($val['deal_price']-$val['closing_price'])-$val['closing_cost']-$val['service_cost']; + $order_num=$val['order_number']*($val['deal_price']-$val['closing_price'])*$face_value; + } + $num+=$order_num; + } + } + return $num; + } + public static function getTradeOrderFee(int $user_id) + { + $info=self::where([ + ['user_id','=',$user_id], + ['status','in',[1,3]] + ])->field('sum(service_cost+closing_cost) as fee')->find(); + if(empty($info)){ + return 0; + }else{ + $info=$info->toArray(); + return empty($info['fee']) ? 0 : $info['fee']; + } + } + public static function getTradeList($trade_name,$num) + { + $trade_list=[]; + $list=self::where([ + ['status','in','1,3'], + ['contract_id','=',strtoupper($trade_name)] + ])->field('deal_price,order_number,closing_price,open_time,closing_time,status')->order('trade_id desc')->limit($num)->select(); + if(!empty($list)) { + $list_arr=$list->toArray(); + foreach ($list_arr as $val){ + if($val['status']==1){ + $trade_data['order_number']=$val['order_number']; + $trade_data['deal_price']=$val['deal_price']; + $trade_data['order_time']=strtotime($val['open_time'])*1000; + $trade_data['trade_type']=1; + array_push($trade_list,$trade_data); + } + if($val['status']==3){ + $trade_data['order_number']=$val['order_number']; + $trade_data['deal_price']=$val['deal_price']; + $trade_data['order_time']=strtotime($val['open_time'])*1000; + $trade_data['trade_type']=1; + array_push($trade_list,$trade_data); + + $sale_data['order_number']=$val['order_number']; + $sale_data['deal_price']=$val['closing_price']; + $sale_data['order_time']=strtotime($val['closing_time'])*1000; + $sale_data['trade_type']=2; + array_push($trade_list,$sale_data); + + } + } + } + return $trade_list; + } +} \ No newline at end of file