SportsNoteList.php 99 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Jonlin
  5. * Date: 2019/4/9
  6. * Time: 9:18
  7. */
  8. namespace App\Models;
  9. use Illuminate\Support\Facades\DB;
  10. use App\Lib\Biz\Sport\Common as commonFunction;
  11. use App\Models\MoneyBuyMatchb;
  12. use App\Http\Response\Response;
  13. use App\Http\Model\StZqResult;
  14. use App\Http\Model\StZqMatch as ZqMatchModel;
  15. use App\Http\Model\StLqMatch as LqMatchModel;
  16. use App\Http\Model\StWqMatch as WqMatchModel;
  17. use App\Http\Model\StBqMatch as BqMatchModel;
  18. class SportsNoteList extends BaseModel
  19. {
  20. protected $table = "money_buy_simplex";
  21. public $timestamps = false;
  22. public function matchdatas()
  23. {
  24. return $this->hasMany(MoneyBuyMatch::class, 'order_id', 'order_id');
  25. }
  26. /**
  27. * 获取单式注单 数据
  28. * 测试 使用
  29. */
  30. function getinfo($list = 10, $page, $where = '', $type){
  31. $orderData = $this
  32. ->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')
  33. ->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')
  34. //->join('money_buy_match','money_buy_match.order_id','=','money_buy_simplex.order_id')
  35. ->join('st_' . $type . '_league', 'money_buy_simplex.lg_id', '=', 'st_' . $type . '_league.id')
  36. ->select('money_buy_simplex.id', 'money_buy_simplex.account_name', 'money_buy_simplex.is_champion', 'money_buy_simplex.account_identity', 'money_buy_simplex.order_id', 'money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.status', 'money_buy_simplex.money_time', 'money_buy_simplex.settle_status', 'money_buy_simplex.gain_money', 'money_buy_simplex.game_code', 'money_buy_simplex.match_id', 'money_buy_simplex.game_status','money_buy_simplex.use_mark', 'st_' . $type . '_competition.home_team', 'st_' . $type . '_competition.guest_team', 'st_' . $type . '_competition.match_date', 'st_' . $type . '_competition.match_time', 'st_' . $type . '_competition.lg_id', 'st_' . $type . '_competition.status as match_status', 'money_details.money_cash', 'money_buy_simplex.batch_id', 'st_' . $type . '_league.name_chinese as league', 'st_' . $type . '_league.last_time')
  37. ->whereIn('money_buy_simplex.roll_ratify',array(0,1,-1))
  38. ->where($where)
  39. //->distinct('money_buy_match.order_id')
  40. ->orderby('money_buy_simplex.money_time', 'desc')
  41. ->paginate($list);
  42. if (count($orderData) < 1) {
  43. return -2021052003; //
  44. }
  45. //获取各球类 控制器名
  46. if($type == 'zq'){
  47. $c_name = 'sportsfoot';
  48. }
  49. if($type == 'lq'){
  50. $c_name = 'Sportsbk';
  51. }
  52. if($type == 'wq'){
  53. $c_name = 'Sportswq';
  54. }
  55. if($type == 'bq'){
  56. $c_name = 'Sportsbq';
  57. }
  58. //获取注单 id
  59. $order_ids = [];
  60. //重组 注单数据
  61. foreach($orderData as $k=>$v){
  62. //所有注单 id
  63. $order_ids[] = $v->order_id;
  64. $v->match_id_order = '<a href="/admin/'.$c_name.'/outcome?home_team=' . $v->match_id . '">' . $v->match_id . '</a> (<span>' . $v->account_name . '</span>)<br>' . $v->order_id;
  65. $v->home_guest = $v->home_team . ' VS ' . $v->guest_team;
  66. $v->time = '开赛:' . $v->match_date . ' ' . $v->match_time;
  67. }
  68. //获取 注单 反水 金额变动记录
  69. $select_fs = ['trade_id','money','money_cash'];
  70. $water_return_money = \App\Models\Money_details::SELECT($select_fs)->where('trade_type', '7')->whereIn('trade_id',$order_ids)->get();
  71. //获取 注单 作废 金额变动记录
  72. $select_zf = ['trade_id','money','money_cash'];
  73. $invalid_money = \App\Models\Money_details::SELECT($select_zf)->whereIn('trade_type', [3,4,25])->whereIn('trade_id',$order_ids)->get();
  74. //获取注单 输赢 结果
  75. $select_play = ['order_id','result','matchresult','condition','odds','odds_code','bet_money','home_team','guest_team'];
  76. $content = \App\Models\MoneyBuyMatch::SELECT($select_play)->where('bet_type', '1')->whereIn('order_id',$order_ids)->get();
  77. //获取 注单 玩法
  78. $select_code = ['odds_code','odds_name'];
  79. $result = \App\Models\Matchcode::SELECT($select_code)->where('game_code', $type)->get();
  80. //拼接注单 玩法
  81. foreach($content as $k=>$v){
  82. foreach($result as $kk=>$vv){
  83. if($v->odds_code == $vv->odds_code){
  84. $v->content = $vv->odds_name . '<br>' . $v->condition . '@' . $v->odds . ' ¥' . $v->bet_money . '<br>';
  85. }
  86. }
  87. }
  88. //生成最终数据
  89. foreach($orderData as $k=>$v){
  90. // dd(' <button style="margin-left: 0;" onclick="setScore_v2"("'.$v->order_id.'","'.$v->match_id.'","'.$type.'")" class="layui-btn layui-btn-sm settlement">结算</button>');
  91. //追加输赢结果 /投注详情
  92. $v->content = $this->getOrderC($content,$v);
  93. //下注时间/开赛时间
  94. $v->money_match_time = '下注:' . $v->money_time . $v->time;
  95. if ($v->status == 2 || $v->status == 3) {
  96. }
  97. //未作废/撤单 数据
  98. if($v->status < 2){
  99. //反水
  100. $v->water_return = commonFunction::filter_by_value($water_return_money,'trade_id',$v->order_id)['money'];
  101. //结果金额 反水+中奖金额
  102. $v->result = $v->water_return + $v->gain_money;
  103. //用户投注前账户金额
  104. $v->available_cash = number_format(($v->money_cash + $v->money),2);
  105. //用户投注后账户金额
  106. $v->frozen_cash = commonFunction::filter_by_value($water_return_money,'trade_id',$v->order_id)['money_cash'];
  107. //投注前后账户金额
  108. $v->account_money = $v->available_cash . '<br><span>' . number_format($v->money,2) . '</span><br>' . $v->frozen_cash;
  109. }else{//已作废/撤单
  110. //反水
  111. $v->water_return = 0;
  112. //如果注单已作废 结果金额 = 投注金额
  113. $v->result = $v->money;
  114. //作废资金变动
  115. $money_data = commonFunction::filter_by_value($invalid_money,'trade_id',$v->order_id);
  116. //用户作废后账户金额
  117. $v->frozen_cash = $money_data['money_cash'];
  118. //用户作废前账户金额
  119. $v->available_cash = number_format(($v->frozen_cash - $v->money),2);
  120. //作废前后账户金额
  121. $v->account_money = $v->available_cash . '<br><span>' . number_format($v->money,2) . '</span><br>' . $v->frozen_cash;
  122. }
  123. //===结算/订单状态===
  124. if ($v->settle_status == 1) {
  125. $settle_status = '未结算';
  126. } else{
  127. $settle_status = '已结算';
  128. }
  129. if($v->status==1 && $v->settle_status == 1){
  130. $v->order_status = '投注<br>'.$settle_status;
  131. }
  132. else if ($v->status == 1 && $v->settle_status != 1) {
  133. $v->order_status = '投注<br>'.$settle_status;
  134. } else if ($v->status == 2) {
  135. $v->order_status = '作废<br>'.$v->use_mark;
  136. } else if ($v->status == 3) {
  137. $v->order_status = '撤单<br>'.$settle_status;
  138. }
  139. //操作
  140. if($v->status==1){
  141. $v->game_status = '
  142. <button style="margin-left: 0;" onclick="setScore_v2(\'' . $v->order_id . '\',\''.$v->match_id.'\',\''.$type.'\')" class="layui-btn layui-btn-sm settlement">结算</button>
  143. <br>
  144. <a class="layui-btn layui-btn-sm invalid" style="background-color:red" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/invalid/?id=" href="javascript:invalid(\'/admin/SoccerNoteList/invalid/?id=' . $v->id . '\',\''.$v->order_id.'\',\''.$v->league.'\');"> 作废 </a>';
  145. }else{
  146. $v->game_status = '
  147. <button style="margin-left: 0;" onclick="setScore_v2(\'' . $v->order_id . '\',\''.$v->match_id.'\',\''.$type.'\')" class="layui-btn layui-btn-sm settlement">结算</button>
  148. <br>
  149. <a class="layui-btn layui-btn-sm invalid" style="background-color:red" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/invalid/?id=" href="javascript:invalid(\'/admin/SoccerNoteList/invalid/?id=' . $v->id . '\',\''.$v->order_id.'\',\''.$v->league.'\');"> 作废 </a>';
  150. }
  151. }
  152. return $orderData->toArray();
  153. }
  154. /**
  155. * 拼接 订单详情 字段内容
  156. */
  157. public function getOrderC($content,$order){
  158. $content_str = commonFunction::filter_by_value($content,'order_id',$order->order_id);
  159. dd($content_str);
  160. //===投注详情===
  161. if (!empty($order->match_time)) {
  162. $content1 = '[' . $order->match_time . ']';
  163. } else if (!empty($order->last_time)) {
  164. $datetime = explode(' ', $order->last_time);
  165. $content1 = '[' . $datetime[1] . ']';
  166. }
  167. // 当前赛事 投注 结果 0未处理 1 赢 -1输 2平 3赢半平半 4输半平半
  168. if ($content_str['result'] == 0 || $order->status > 1) {
  169. $content = $content1.$content_str['content'];
  170. }
  171. else if($order->status == 1) {
  172. if ($content_str['result'] == 0) {
  173. $content_str['result'] = '未处理';
  174. }
  175. if ($content_str['result'] == 1) {
  176. $content_str['result'] = '赢';
  177. }
  178. if ($content_str['result'] == -1) {
  179. $content_str['result'] = '输';
  180. }
  181. if ($content_str['result'] == 2) {
  182. $content_str['result'] = '平';
  183. }
  184. if ($content_str['result'] == 3) {
  185. $content_str['result'] = '赢半平半';
  186. }
  187. if ($content_str['result'] == 4) {
  188. $content_str['result'] = '输半平半';
  189. }
  190. $content = $content1.$content_str['content']. '<span>' . $content_str['result'] . '</span>(' . $content_str['matchresult'] . ')<br>';
  191. }
  192. return $content;
  193. }
  194. /**
  195. * 获取单式注单 数据
  196. * 因异常 暂停使用
  197. */
  198. function __getinfo($list = 10, $page, $where = '', $type){
  199. $data = $this
  200. ->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')
  201. ->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')
  202. //->join('money_buy_match','money_buy_match.order_id','=','money_buy_simplex.order_id')
  203. ->join('st_' . $type . '_league', 'money_buy_simplex.lg_id', '=', 'st_' . $type . '_league.id')
  204. ->select('money_buy_simplex.id', 'money_buy_simplex.account_name', 'money_buy_simplex.is_champion', 'money_buy_simplex.account_identity', 'money_buy_simplex.order_id', 'money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.status', 'money_buy_simplex.money_time', 'money_buy_simplex.settle_status', 'money_buy_simplex.gain_money', 'money_buy_simplex.game_code', 'money_buy_simplex.match_id', 'money_buy_simplex.game_status','money_buy_simplex.use_mark', 'st_' . $type . '_competition.home_team', 'st_' . $type . '_competition.guest_team', 'st_' . $type . '_competition.match_date', 'st_' . $type . '_competition.match_time', 'st_' . $type . '_competition.lg_id', 'st_' . $type . '_competition.status as match_status', 'money_details.money_cash', 'money_buy_simplex.batch_id', 'st_' . $type . '_league.name_chinese', 'st_' . $type . '_league.last_time')
  205. ->whereIn('money_buy_simplex.roll_ratify',array(0,1,-1))
  206. ->where($where)
  207. //->distinct('money_buy_match.order_id')
  208. ->orderby('money_buy_simplex.money_time', 'desc')
  209. ->paginate($list);
  210. if (!$data < 0) {
  211. return -2021052003; //
  212. }
  213. //反水
  214. $water_return_money = \App\Models\Money_details::where('trade_type', '7')->get();
  215. //注单作废
  216. $invalid_money = \App\Models\Money_details::where('trade_type', '3')->get();
  217. //订单投注的玩法
  218. $content = \App\Models\MoneyBuyMatch::where('bet_type', '1')->get();
  219. for ($d = 0; $d < count($content); $d++) {
  220. if ($content[$d]->result == 0) {
  221. $content[$d]->result = '未处理';
  222. }
  223. if ($content[$d]->result == 1) {
  224. $content[$d]->result = '赢';
  225. }
  226. if ($content[$d]->result == -1) {
  227. $content[$d]->result = '输';
  228. }
  229. if ($content[$d]->result == 2) {
  230. $content[$d]->result = '平';
  231. }
  232. if ($content[$d]->result == 3) {
  233. $content[$d]->result = '赢半平半';
  234. }
  235. if ($content[$d]->result == 4) {
  236. $content[$d]->result = '输半平半';
  237. }
  238. }
  239. //玩法
  240. $result = \App\Models\Matchcode::where('game_code', $type)->get();
  241. //$result = \App\Model\Matchcode::get();
  242. for ($i = 0; $i < count($data); $i++) {
  243. /*
  244. if($data[$i]->status==1 && $data[$i]->settle_status == 1){
  245. $data[$i]->order_status = '投注'.'<br><a class="layui-btn layui-btn-sm invalid" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/invalid/?id=" href="javascript:invalid(\'/admin/SoccerNoteList/invalid/?id=' . $data[$i]->id . '\',\''.$data[$i]->order_id.'\',\''.$data[$i]->name_chinese.'\');"> 作废 </a>';
  246. }
  247. else if ($data[$i]->status == 1 && $data[$i]->settle_status != 1) {
  248. // $data[$i]->order_status = '投注'.'<br>';
  249. } else if ($data[$i]->status == 2) {
  250. $data[$i]->order_status = '作废';//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已作废 </a>';
  251. } else if ($data[$i]->status == 3) {
  252. $data[$i]->order_status = '撤单';//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已撤单 </a>';
  253. }
  254. if ($data[$i]->settle_status == 1) {
  255. $data[$i]->settle_status = '未结算';
  256. } else{
  257. $data[$i]->settle_status = '已结算';
  258. }
  259. if ($data[$i]->game_status == 0) {
  260. $data[$i]->game_status = '未处理';
  261. } else {
  262. $data[$i]->game_status = '已处理';
  263. }
  264. */
  265. /*
  266. if ($data[$i]->settle_status == 1) {
  267. $data[$i]->settle_status = '未结算';
  268. } else{
  269. $data[$i]->settle_status = '已结算';
  270. }
  271. */
  272. if ($data[$i]->settle_status == 1) {
  273. $settle_status = '未结算';
  274. } else{
  275. $settle_status = '已结算';
  276. }
  277. if($data[$i]->status==1 && $data[$i]->settle_status == 1){
  278. $data[$i]->order_status = '投注<br>'.$settle_status;
  279. }
  280. else if ($data[$i]->status == 1 && $data[$i]->settle_status != 1) {
  281. // $data[$i]->order_status = '投注'.'<br>';
  282. $data[$i]->order_status = '投注<br>'.$settle_status;
  283. } else if ($data[$i]->status == 2) {
  284. $data[$i]->order_status = '作废<br>'.$data[$i]->use_mark;
  285. // $data[$i]->order_status = '作废<br>'.$settle_status;//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已作废 </a>';
  286. } else if ($data[$i]->status == 3) {
  287. $data[$i]->order_status = '撤单<br>'.$settle_status;//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已撤单 </a>';
  288. }
  289. if ($data[$i]->game_status == 0) {
  290. $data[$i]->game_status = '未处理';
  291. } else {
  292. $data[$i]->game_status = '已处理';
  293. }
  294. $data[$i]->league = $data[$i]->name_chinese;
  295. if ($data[$i]->is_champion == 0) {
  296. if ($data[$i]->game_code == 'zq') {
  297. $data[$i]->match_id_order = '<a href="/admin/sportsfoot/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  298. }
  299. if ($data[$i]->game_code == 'lq') {
  300. $data[$i]->match_id_order = '<a href="/admin/Sportsbk/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  301. }
  302. if ($data[$i]->game_code == 'wq') {
  303. $data[$i]->match_id_order = '<a href="/admin/Sportswq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  304. }
  305. if ($data[$i]->game_code == 'bq') {
  306. $data[$i]->match_id_order = '<a href="/admin/Sportsbq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  307. }
  308. $data[$i]->home_guest = $data[$i]->home_team . ' VS ' . $data[$i]->guest_team;
  309. $data[$i]->time = '开赛:' . $data[$i]->match_date . ' ' . $data[$i]->match_time;
  310. } else {
  311. $data[$i]->lg_id_order = $data[$i]->match_id . '(<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  312. $data[$i]->home_guest = '冠军联赛投注';
  313. $data[$i]->time = '结束:' . $data[$i]->last_time;
  314. }
  315. $data[$i]->money_match_time = '下注:' . $data[$i]->money_time . $data[$i]->time;
  316. //反水
  317. $data[$i]->water_return = -1;
  318. for ($a = 0; $a < count($water_return_money); $a++) {
  319. if ($data[$i]->order_id == $water_return_money[$a]->trade_id) {
  320. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  321. $data[$i]->water_return = 0;
  322. } else {
  323. $data[$i]->water_return = $water_return_money[$a]->money;
  324. }
  325. //用户投注后账户金额
  326. $data[$i]->frozen_cash = $water_return_money[$a]->money_cash;
  327. }
  328. }
  329. if ($data[$i]->water_return == -1) {
  330. $data[$i]->water_return = 0;
  331. //用户投注后账户金额
  332. $data[$i]->frozen_cash = $data[$i]->money_cash;
  333. }
  334. //如果注单已作废 结果金额 = 投注金额
  335. if($data[$i]->status == 2){
  336. $data[$i]->result = $data[$i]->money;
  337. }else{
  338. //此时结果金额
  339. $data[$i]->result = $data[$i]->water_return + $data[$i]->gain_money;
  340. }
  341. //用户投注前账户金额
  342. $data[$i]->available_cash = $data[$i]->money_cash + $data[$i]->money;
  343. //投注前后账户金额
  344. $data[$i]->account_money = $data[$i]->available_cash . '<br><span>' . $data[$i]->money . '</span><br>' . $data[$i]->frozen_cash;
  345. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  346. // for ($b = 0; $b < count($invalid_money); $b++) {
  347. // if ($data[$i]->order_id == $invalid_money[$b]->trade_id) {
  348. // $data[$i]->available_cash = $invalid_money[$b]->money_cash;
  349. // $data[$i]->account_money = $data[$i]->available_cash;
  350. // }
  351. // }
  352. $data[$i]->account_money = $data[$i]->available_cash;
  353. }
  354. $data[$i]->str = 0;
  355. for ($b = 0; $b < count($content); $b++) {
  356. $data[$i]->str1 = 0;
  357. $data[$i]->team = '';
  358. if (!empty($content[$b]->odds_code)) {
  359. if (!empty(stristr($content[$b]->odds_code, 'home'))) {
  360. $data[$i]->team = $data[$i]->home_team;
  361. }
  362. if (!empty(stristr($content[$b]->odds_code, 'guest'))) {
  363. $data[$i]->team = $data[$i]->guest_team;
  364. }
  365. if ($content[$b]->p_code == 'half_full') {
  366. $string = str_replace('home', $data[$i]->home_team, $content[$b]->odds_code);
  367. $string = str_replace('guest', $data[$i]->guest_team, $string);
  368. $string = str_replace('dogfall', '和局', $string);
  369. $string = explode('_', $string);
  370. $data[$i]->team = $string['2'] . '/' . $string['3'];
  371. }
  372. }
  373. //处理普通赛事玩法详情
  374. if ($data[$i]->match_id == $content[$b]->match_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 0) {
  375. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  376. $content[$b]->condition = '';
  377. }
  378. $data[$i]->game_status = $data[$i]->game_status;
  379. //投注详情
  380. if (!empty($data[$i]->match_time)) {
  381. $data[$i]->content1 = '[' . $data[$i]->match_time . ']';
  382. //$data[$i]->match_time = $data[$i]->match_time;
  383. } else {
  384. if (!empty($data[$i]->last_time)) {
  385. $datetime = explode(' ', $data[$i]->last_time);
  386. //$data[$i]->match_time = $datetime[1];
  387. $data[$i]->content1 = '[' . $datetime[1] . ']';
  388. }
  389. }
  390. for ($c = 0; $c < count($result); $c++) {
  391. if ($content[$b]->odds_code == $result[$c]->odds_code) {
  392. $data[$i]->str1 = 1;
  393. if ($content[$b]->result == '未处理') {
  394. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  395. } else {
  396. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  397. }
  398. }
  399. }
  400. if ($data[$i]->str1 == 0) {
  401. if ($content[$b]->result == '未处理') {
  402. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  403. } else {
  404. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  405. }
  406. }
  407. }
  408. //处理冠军联赛玩法详情
  409. if ($data[$i]->match_id == $content[$b]->lg_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 1) {
  410. $content[$b]->condition = '';
  411. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  412. $content[$b]->condition = '';
  413. }
  414. $data[$i]->game_status = $data[$i]->game_status;
  415. /*
  416. //投注详情
  417. if(!empty($data[$i]->match_time)){
  418. $data[$i]->content1 = '['.$data[$i]->match_time.']';
  419. //$data[$i]->match_time = $data[$i]->match_time;
  420. }
  421. else{
  422. if(!empty($data[$i]->last_time)){
  423. $datetime = explode(' ',$data[$i]->last_time);
  424. //$data[$i]->match_time = $datetime[1];
  425. $data[$i]->content1 = '['.$datetime[1].']';
  426. }
  427. }
  428. */
  429. /*
  430. for($c=0;$c<count($result);$c++){
  431. if($content[$b]->odds_code == $result[$c]->odds_code){
  432. $data[$i]->str1 = 1;
  433. if($content[$b]->result=='未处理'){
  434. $data[$i]->content = $content[$b]->home_team.'<br>'.$data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br>';
  435. }else{
  436. $data[$i]->content = $content[$b]->home_team.'<br>'.$data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br><span>'.$content[$b]->result.'</span>('.$content[$b]->matchresult.')<br>';
  437. }
  438. }
  439. }
  440. */
  441. if ($data[$i]->str1 == 0) {
  442. if ($content[$b]->result == '未处理') {
  443. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  444. } else {
  445. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  446. }
  447. }
  448. }
  449. }
  450. // if($data[$i]->status == 1){
  451. // if($data[$i]->match_status == 0 || $data[$i]->match_status == 1){
  452. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 结算 </a>';
  453. // }
  454. // if($data[$i]->match_status == 2 || $data[$i]->match_status == 3 || $data[$i]->match_status == 5){
  455. // if($data[$i]->settle_status == '已结算'){
  456. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm resettlement" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/resettlement/?id=" href="javascript:resettlement(\'/admin/SoccerNoteList/resettlement/?id='.$data[$i]->id.'\');"> 重新结算 </a>';
  457. // }else{
  458. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm settlement" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/settlement/?id=" href="javascript:settlement(\'/admin/SoccerNoteList/settlement/?id='.$data[$i]->id.'\');"> 结算 </a>';
  459. // }
  460. // }
  461. // }else{
  462. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 结2算 </a>';
  463. // }
  464. $data[$i]->content = $data[$i]->content1 . $data[$i]->content;
  465. }
  466. return $data->toArray();
  467. }
  468. //投注金额汇总统计
  469. function MoneyCount($where = '', $type)
  470. {
  471. $data = array();
  472. // $data['all_money'] = $this->sum('money');
  473. // $data['all_prize_money'] = $this->sum('prize_money');
  474. // $data['alraedy_prize_money'] = $this->where('settle_status','2')->sum('gain_money');
  475. $data['all_money'] = 0;
  476. $data['all_prize_money'] = 0;
  477. $data['alraedy_prize_money'] = 0;
  478. $all_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')->join('st_' . $type . '_league', 'st_' . $type . '_competition.lg_id', '=', 'st_' . $type . '_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where('money_buy_simplex.status', '1')->get();
  479. for ($a = 0; $a < count($all_money); $a++) {
  480. $data['all_money'] = $data['all_money'] + $all_money[$a]->money;
  481. }
  482. $all_prize_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')->join('st_' . $type . '_league', 'st_' . $type . '_competition.lg_id', '=', 'st_' . $type . '_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where('money_buy_simplex.status', '1')->get();
  483. for ($a = 0; $a < count($all_prize_money); $a++) {
  484. $data['all_prize_money'] = $data['all_money'] + $all_prize_money[$a]->prize_money;
  485. }
  486. $alraedy_prize_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')->join('st_' . $type . '_league', 'st_' . $type . '_competition.lg_id', '=', 'st_' . $type . '_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->where('money_buy_simplex.settle_status', '2')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where('money_buy_simplex.status', '1')->get();
  487. for ($a = 0; $a < count($alraedy_prize_money); $a++) {
  488. $data['alraedy_prize_money'] = $data['all_money'] + $alraedy_prize_money[$a]->gain_money;
  489. }
  490. if (!empty($where) && is_array($where)) {
  491. $data['all_money'] = 0;
  492. $data['all_prize_money'] = 0;
  493. $data['alraedy_prize_money'] = 0;
  494. //$data['all_money'] = $this->where($where)->sum('money');
  495. // $data['all_prize_money'] = $this->where($where)->sum('prize_money');
  496. // $data['alraedy_prize_money'] = $this->where($where)->where('settle_status','2')->sum('gain_money');
  497. $all_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_zq_competition', 'st_zq_competition.id', '=', 'money_buy_simplex.match_id')->join('st_zq_league', 'st_zq_competition.lg_id', '=', 'st_zq_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where($where)->where('money_buy_simplex.status', '1')->get();
  498. for ($a = 0; $a < count($all_money); $a++) {
  499. $data['all_money'] = $data['all_money'] + $all_money[$a]->money;
  500. }
  501. $all_prize_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')->join('st_' . $type . '_league', 'st_' . $type . '_competition.lg_id', '=', 'st_' . $type . '_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where($where)->where('money_buy_simplex.status', '1')->get();
  502. for ($a = 0; $a < count($all_prize_money); $a++) {
  503. $data['all_prize_money'] = $data['all_prize_money'] + $all_prize_money[$a]->prize_money;
  504. }
  505. $alraedy_prize_money = $this->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')->join('st_' . $type . '_league', 'st_' . $type . '_competition.lg_id', '=', 'st_' . $type . '_league.id')->select('money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.gain_money')->whereIn('money_buy_simplex.roll_ratify',array(0,1))->where('money_buy_simplex.settle_status', '2')->where($where)->where('money_buy_simplex.status', '1')->get();
  506. for ($a = 0; $a < count($alraedy_prize_money); $a++) {
  507. $data['alraedy_prize_money'] = $data['alraedy_prize_money'] + $alraedy_prize_money[$a]->gain_money;
  508. }
  509. }
  510. return $data;
  511. }
  512. //修改赛事下的所有单式下注 3199308
  513. function updatesimplex($ssid, $code)
  514. {
  515. $newapp = new \App\Models\MoneyBuyMatch();
  516. $data = $newapp->allsimplexorder($ssid, $code);
  517. if ($data) {
  518. for ($i = 0; $i < count($data); $i++) {
  519. $the = array(
  520. 'status' => 2,
  521. 'game_status' => 3,
  522. 'game_code' => $code,
  523. );
  524. $res = $this->where('order_id', $data[$i]['order_id'])->update($the);
  525. }
  526. if ($res < 0) {
  527. return -7012000302; //操作失败
  528. }
  529. return $res;
  530. } else {
  531. return -111;
  532. }
  533. }
  534. function info($list = 10, $page, $where = '', $type)
  535. {
  536. $data = $this
  537. ->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')
  538. ->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')
  539. // ->join('st_'.$type.'_league','st_'.$type.'_competition.lg_id','=','st_'.$type.'_league.id')
  540. ->join('st_' . $type . '_league', 'money_buy_simplex.lg_id', '=', 'st_' . $type . '_league.id')
  541. ->select('money_buy_simplex.id', 'money_buy_simplex.account_name', 'money_buy_simplex.is_champion', 'money_buy_simplex.account_identity', 'money_buy_simplex.order_id','money_buy_simplex.use_mark', 'money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.status', 'money_buy_simplex.money_time', 'money_buy_simplex.settle_status', 'money_buy_simplex.gain_money', 'money_buy_simplex.game_code', 'money_buy_simplex.match_id', 'money_buy_simplex.game_status', 'st_' . $type . '_competition.home_team', 'st_' . $type . '_competition.guest_team', 'st_' . $type . '_competition.match_date', 'st_' . $type . '_competition.match_time', 'st_' . $type . '_competition.lg_id', 'st_' . $type . '_competition.status as match_status', 'money_details.money_cash', 'money_buy_simplex.batch_id', 'st_' . $type . '_league.name_chinese', 'st_' . $type . '_league.last_time')
  542. ->whereIn('money_buy_simplex.roll_ratify',array(0,1))
  543. ->where($where)
  544. ->orderby('money_buy_simplex.money_time', 'desc')
  545. ->paginate($list);
  546. if (!$data < 0) {
  547. return -2021052003; //
  548. }
  549. //反水
  550. $water_return_money = \App\Models\Money_details::where('trade_type', '7')->get();
  551. //注单作废
  552. $invalid_money = \App\Models\Money_details::where('trade_type', '3')->get();
  553. //订单投注的玩法
  554. $content = \App\Models\MoneyBuyMatch::where('bet_type', '1')->get();
  555. for ($d = 0; $d < count($content); $d++) {
  556. if ($content[$d]->result == 0) {
  557. $content[$d]->result = '未处理';
  558. }
  559. if ($content[$d]->result == 1) {
  560. $content[$d]->result = '赢';
  561. }
  562. if ($content[$d]->result == -1) {
  563. $content[$d]->result = '输';
  564. }
  565. if ($content[$d]->result == 2) {
  566. $content[$d]->result = '平';
  567. }
  568. if ($content[$d]->result == 3) {
  569. $content[$d]->result = '赢半平半';
  570. }
  571. if ($content[$d]->result == 4) {
  572. $content[$d]->result = '输半平半';
  573. }
  574. }
  575. //玩法
  576. $result = \App\Models\Matchcode::where('game_code', $type)->get();
  577. //$result = \App\Model\Matchcode::get();
  578. for ($i = 0; $i < count($data); $i++) {
  579. /*
  580. if ($data[$i]->status == 1 && $data[$i]->settle_status == 1) {
  581. $data[$i]->order_status = '投注' . '<br><a class="layui-btn layui-btn-sm invalid" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/invalid/?id=" href="javascript:invalid(\'/admin/SoccerNoteList/invalid/?id=' . $data[$i]->id . '\',\''.$data[$i]->order_id.'\',\''.$data[$i]->name_chinese.'\');"> 作废 </a>';
  582. } else if ($data[$i]->status == 1 && $data[$i]->settle_status != 1) {
  583. $data[$i]->order_status = '投注';
  584. } else if ($data[$i]->status == 2) {
  585. $data[$i]->order_status = '作废';//
  586. } else if ($data[$i]->status == 3) {
  587. $data[$i]->order_status = '撤单';
  588. }
  589. // if($data[$i]->settle_status==1){
  590. // $data[$i]->settle_status = '未结算';
  591. // }else if($data[$i]->settle_status==2){
  592. // $data[$i]->settle_status = '已结算';
  593. // }
  594. if ($data[$i]->game_status == 0) {
  595. $data[$i]->game_status = '未处理';
  596. } else {
  597. $data[$i]->game_status = '已处理';
  598. }
  599. */
  600. if ($data[$i]->settle_status == 1) {
  601. $settle_status = '未结算';
  602. } else{
  603. $settle_status = '已结算';
  604. }
  605. if($data[$i]->status==1 && $data[$i]->settle_status == 1){
  606. $data[$i]->order_status = '投注<br>'.$settle_status;
  607. }
  608. else if ($data[$i]->status == 1 && $data[$i]->settle_status != 1) {
  609. // $data[$i]->order_status = '投注'.'<br>';
  610. $data[$i]->order_status = '投注<br>'.$settle_status;
  611. } else if ($data[$i]->status == 2) {
  612. $data[$i]->order_status = '作废<br>'.$data[$i]->use_mark;
  613. // $data[$i]->order_status = '作废<br>'.$settle_status;//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已作废 </a>';
  614. } else if ($data[$i]->status == 3) {
  615. $data[$i]->order_status = '撤单<br>'.$settle_status;//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已撤单 </a>';
  616. }
  617. if ($data[$i]->game_status == 0) {
  618. $data[$i]->game_status = '未处理';
  619. } else {
  620. $data[$i]->game_status = '已处理';
  621. }
  622. $data[$i]->league = $data[$i]->name_chinese;
  623. if ($data[$i]->is_champion == 0) {
  624. if ($data[$i]->game_code == 'zq') {
  625. $data[$i]->match_id_order = '<a href="/admin/sportsfoot/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  626. }
  627. if ($data[$i]->game_code == 'lq') {
  628. $data[$i]->match_id_order = '<a href="/admin/Sportsbk/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  629. }
  630. if ($data[$i]->game_code == 'wq') {
  631. $data[$i]->match_id_order = '<a href="/admin/Sportswq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  632. }
  633. if ($data[$i]->game_code == 'bq') {
  634. $data[$i]->match_id_order = '<a href="/admin/Sportsbq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  635. }
  636. $data[$i]->home_guest = $data[$i]->home_team . ' VS ' . $data[$i]->guest_team;
  637. $data[$i]->time = '开赛:' . $data[$i]->match_date . ' ' . $data[$i]->match_time;
  638. } else {
  639. $data[$i]->lg_id_order = $data[$i]->match_id . '(<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  640. $data[$i]->home_guest = '冠军联赛投注';
  641. $data[$i]->time = '结束:' . $data[$i]->last_time;
  642. }
  643. $data[$i]->money_match_time = '下注:' . $data[$i]->money_time . $data[$i]->time;
  644. /*1
  645. $data[$i]->home_guest = $data[$i]->home_team.' VS '.$data[$i]->guest_team;
  646. $data[$i]->time = '开赛:'.$data[$i]->match_date.' '.$data[$i]->match_time;
  647. $data[$i]->money_match_time = '下注:'.$data[$i]->money_time.'<br>'.$data[$i]->time;
  648. */
  649. //反水
  650. $data[$i]->water_return = -1;
  651. for ($a = 0; $a < count($water_return_money); $a++) {
  652. if ($data[$i]->order_id == $water_return_money[$a]->trade_id) {
  653. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  654. $data[$i]->water_return = 0;
  655. } else {
  656. $data[$i]->water_return = $water_return_money[$a]->money;
  657. }
  658. //用户投注后账户金额
  659. $data[$i]->frozen_cash = $water_return_money[$a]->money_cash;
  660. }
  661. }
  662. if ($data[$i]->water_return == -1) {
  663. $data[$i]->water_return = 0;
  664. //用户投注后账户金额
  665. $data[$i]->frozen_cash = $data[$i]->money_cash;
  666. }
  667. //如果是作废/撤单状态 结果金额 为投注金额
  668. if ($data[$i]->status == 2 || $data[$i]->status == 3){
  669. //此时结果金额
  670. $data[$i]->result = $data[$i]->money;
  671. }else{
  672. //此时结果金额
  673. $data[$i]->result = $data[$i]->water_return + $data[$i]->gain_money;
  674. }
  675. //用户投注前账户金额
  676. $data[$i]->available_cash = $data[$i]->money_cash + $data[$i]->money;
  677. //投注前后账户金额
  678. $data[$i]->account_money = $data[$i]->available_cash . '<br><span>' . $data[$i]->money . '</span><br>' . $data[$i]->frozen_cash;
  679. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  680. // for ($b = 0; $b < count($invalid_money); $b++) {
  681. // if ($data[$i]->order_id == $invalid_money[$b]->trade_id) {
  682. // $data[$i]->available_cash = $invalid_money[$b]->money_cash;
  683. // $data[$i]->account_money = $data[$i]->available_cash;
  684. // }
  685. // }
  686. $data[$i]->account_money = $data[$i]->available_cash;
  687. }
  688. $data[$i]->str = 0;
  689. for ($b = 0; $b < count($content); $b++) {
  690. $data[$i]->str1 = 0;
  691. $data[$i]->team = '';
  692. if (!empty($content[$b]->odds_code)) {
  693. if (!empty(stristr($content[$b]->odds_code, 'home'))) {
  694. $data[$i]->team = $data[$i]->home_team;
  695. }
  696. if (!empty(stristr($content[$b]->odds_code, 'guest'))) {
  697. $data[$i]->team = $data[$i]->guest_team;
  698. }
  699. if ($content[$b]->p_code == 'half_full') {
  700. $string = str_replace('home', $data[$i]->home_team, $content[$b]->odds_code);
  701. $string = str_replace('guest', $data[$i]->guest_team, $string);
  702. $string = str_replace('dogfall', '和局', $string);
  703. $string = explode('_', $string);
  704. $data[$i]->team = $string['2'] . '/' . $string['3'];
  705. }
  706. }
  707. //处理普通赛事
  708. if ($data[$i]->match_id == $content[$b]->match_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 0) {
  709. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  710. $content[$b]->condition = '';
  711. }
  712. $data[$i]->game_status = $data[$i]->game_status;
  713. //投注详情
  714. if (!empty($data[$i]->match_time)) {
  715. $data[$i]->content1 = '[' . $data[$i]->match_time . ']';
  716. //$data[$i]->match_time = $data[$i]->match_time;
  717. } else {
  718. if (!empty($data[$i]->last_time)) {
  719. $datetime = explode(' ', $data[$i]->last_time);
  720. //$data[$i]->match_time = $datetime[1];
  721. $data[$i]->content1 = '[' . $datetime[1] . ']';
  722. }
  723. }
  724. for ($c = 0; $c < count($result); $c++) {
  725. if ($content[$b]->odds_code == $result[$c]->odds_code) {
  726. $data[$i]->str1 = 1;
  727. if ($content[$b]->result == '未处理') {
  728. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  729. } else {
  730. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  731. }
  732. }
  733. }
  734. if ($data[$i]->str1 == 0) {
  735. if ($content[$b]->result == '未处理') {
  736. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  737. } else {
  738. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  739. }
  740. }
  741. }
  742. //处理冠军联赛玩法详情
  743. if ($data[$i]->match_id == $content[$b]->lg_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 1) {
  744. $content[$b]->condition = '';
  745. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  746. $content[$b]->condition = '';
  747. }
  748. $data[$i]->game_status = $data[$i]->game_status;
  749. /*
  750. //投注详情
  751. if(!empty($data[$i]->match_time)){
  752. $data[$i]->content1 = '['.$data[$i]->match_time.']';
  753. //$data[$i]->match_time = $data[$i]->match_time;
  754. }
  755. else{
  756. if(!empty($data[$i]->last_time)){
  757. $datetime = explode(' ',$data[$i]->last_time);
  758. //$data[$i]->match_time = $datetime[1];
  759. $data[$i]->content1 = '['.$datetime[1].']';
  760. }
  761. }
  762. */
  763. /*
  764. for($c=0;$c<count($result);$c++){
  765. if($content[$b]->odds_code == $result[$c]->odds_code){
  766. $data[$i]->str1 = 1;
  767. if($content[$b]->result=='未处理'){
  768. $data[$i]->content = $data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br>';
  769. }else{
  770. $data[$i]->content = $data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br><span>'.$content[$b]->result.'</span>('.$content[$b]->matchresult.')<br>';
  771. }
  772. }
  773. }
  774. */
  775. if ($data[$i]->str1 == 0) {
  776. if ($content[$b]->result == '未处理') {
  777. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  778. } else {
  779. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  780. }
  781. }
  782. }
  783. }
  784. $data[$i]->game_status = $data[$i]->settle_status;
  785. $data[$i]->content = $data[$i]->content1 . $data[$i]->content;
  786. }
  787. return $data->toArray();
  788. }
  789. //查询单订单是否存在
  790. function onlyorder($orderid)
  791. {
  792. $order = $this->where('order_id', $orderid)->count();
  793. return $order;
  794. }
  795. //查询单订单是否存在
  796. function getorder($orderid)
  797. {
  798. $order = $this->with("matchdatas")->where('order_id', $orderid)->first();
  799. return $order;
  800. }
  801. function checkinfo($list = 10, $page, $where = '', $type)
  802. {
  803. $data = $this
  804. ->join('money_details', 'money_details.info_identity', '=', 'money_buy_simplex.info_identity')
  805. ->join('st_' . $type . '_competition', 'st_' . $type . '_competition.id', '=', 'money_buy_simplex.match_id')
  806. //->join('money_buy_match','money_buy_match.order_id','=','money_buy_simplex.order_id')
  807. ->join('st_' . $type . '_league', 'money_buy_simplex.lg_id', '=', 'st_' . $type . '_league.id')
  808. ->select('money_buy_simplex.id', 'money_buy_simplex.account_name', 'money_buy_simplex.is_champion', 'money_buy_simplex.account_identity', 'money_buy_simplex.order_id', 'money_buy_simplex.money', 'money_buy_simplex.prize_money', 'money_buy_simplex.status', 'money_buy_simplex.money_time', 'money_buy_simplex.settle_status', 'money_buy_simplex.gain_money', 'money_buy_simplex.game_code', 'money_buy_simplex.match_id', 'money_buy_simplex.game_status', 'money_buy_simplex.roll_ratify', 'st_' . $type . '_competition.home_team', 'st_' . $type . '_competition.guest_team', 'st_' . $type . '_competition.match_date', 'st_' . $type . '_competition.match_time', 'st_' . $type . '_competition.lg_id', 'st_' . $type . '_competition.status as match_status', 'money_details.money_cash', 'money_buy_simplex.batch_id', 'st_' . $type . '_league.name_chinese', 'st_' . $type . '_league.last_time')
  809. ->whereIn('money_buy_simplex.roll_ratify',array(-1,2))
  810. ->where($where)
  811. //->distinct('money_buy_match.order_id')
  812. ->orderby('money_buy_simplex.money_time', 'desc')
  813. ->paginate($list);
  814. if (!$data < 0) {
  815. return -2021052003; //
  816. }
  817. //反水
  818. $water_return_money = \App\Models\Money_details::where('trade_type', '7')->get();
  819. //注单作废
  820. $invalid_money = \App\Models\Money_details::where('trade_type', '3')->get();
  821. //订单投注的玩法
  822. $content = \App\Models\MoneyBuyMatch::where('bet_type', '1')->get();
  823. for ($d = 0; $d < count($content); $d++) {
  824. if ($content[$d]->result == 0) {
  825. $content[$d]->result = '未处理';
  826. }
  827. if ($content[$d]->result == 1) {
  828. $content[$d]->result = '赢';
  829. }
  830. if ($content[$d]->result == -1) {
  831. $content[$d]->result = '输';
  832. }
  833. if ($content[$d]->result == 2) {
  834. $content[$d]->result = '平';
  835. }
  836. if ($content[$d]->result == 3) {
  837. $content[$d]->result = '赢半平半';
  838. }
  839. if ($content[$d]->result == 4) {
  840. $content[$d]->result = '输半平半';
  841. }
  842. }
  843. //玩法
  844. $result = \App\Models\Matchcode::where('game_code', $type)->get();
  845. //$result = \App\Model\Matchcode::get();
  846. for ($i = 0; $i < count($data); $i++) {
  847. if($data[$i]->status==1 && $data[$i]->settle_status == 1){
  848. $data[$i]->order_status = '投注'.'<br><a class="layui-btn layui-btn-sm invalid" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/invalid/?id=" href="javascript:invalid(\'/admin/SoccerNoteList/invalid/?id=' . $data[$i]->id . '\',\''.$data[$i]->order_id.'\',\''.$data[$i]->name_chinese.'\');"> 作废 </a>';
  849. }
  850. if ($data[$i]->status == 1 && $data[$i]->settle_status != 1) {
  851. $data[$i]->order_status = '投注';
  852. } else if ($data[$i]->status == 2) {
  853. $data[$i]->order_status = '作废';//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已作废 </a>';
  854. } else if ($data[$i]->status == 3) {
  855. $data[$i]->order_status = '撤单';//.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 已撤单 </a>';
  856. }
  857. if ($data[$i]->settle_status == 1) {
  858. $data[$i]->settle_status = '未结算';
  859. } else if ($data[$i]->settle_status == 2) {
  860. $data[$i]->settle_status = '已结算';
  861. }
  862. if ($data[$i]->game_status == 0) {
  863. $data[$i]->game_status = '未处理';
  864. } else {
  865. $data[$i]->game_status = '已处理';
  866. }
  867. if ($data[$i]->roll_ratify == 2) {
  868. $data[$i]->roll_ratify = '
  869. <a lay-event="detail" pid="id" value="有效" uri="/admin/CheckRolling/check/?id=" href="javascript:check(\'/admin/CheckRolling/check/?id=' . $data[$i]->id . '\');"> 有效 </a>
  870. <br>
  871. <a lay-event="detail" pid="id" style="margin-top:5px;" uri="/admin/CheckRolling/nocheck/?id=" href="javascript:goalNocheck(\'/admin/CheckRolling/nocheck/?id=' . $data[$i]->id . '&type=1\');"> 进球无效 </a>
  872. <br>
  873. <a lay-event="detail" pid="id" style="margin-top:5px;" uri="/admin/CheckRolling/nocheck/?id=" href="javascript:redCardNocheck(\'/admin/CheckRolling/nocheck/?id=' . $data[$i]->id . '&type=2\');"> 红卡无效 </a>
  874. <br>
  875. <a lay-event="detail" pid="id" style="margin-top:5px;" uri="/admin/CheckRolling/nocheck/?id=" href="javascript:nocheck(\'/admin/CheckRolling/nocheck/?id=' . $data[$i]->id . '&type=0\');"> 无效 </a>
  876. ';
  877. // $data[$i]->roll_ratify = '<a class="layui-btn layui-btn-sm lay-btn-diy" lay-event="detail" pid="id" uri="/admin/CheckRolling/check/?id=" href="javascript:check(\'/admin/CheckRolling/check/?id=' . $data[$i]->id . '\');"> 通过 </a><br><a class="layui-btn layui-btn-sm invalid" lay-event="detail" pid="id" style="margin-top:5px;" uri="/admin/CheckRolling/nocheck/?id=" href="javascript:nocheck(\'/admin/CheckRolling/nocheck/?id=' . $data[$i]->id . '\');"> 拒绝 </a>';
  878. }
  879. if ($data[$i]->roll_ratify == -1) {
  880. $data[$i]->roll_ratify = '未通过审核';
  881. }
  882. if ($data[$i]->game_code == 'zq') {
  883. $data[$i]->match_id_order = '<a href="/admin/sportsfoot/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  884. }
  885. if ($data[$i]->game_code == 'lq') {
  886. $data[$i]->match_id_order = '<a href="/admin/Sportsbk/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  887. }
  888. if ($data[$i]->game_code == 'wq') {
  889. $data[$i]->match_id_order = '<a href="/admin/Sportswq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  890. }
  891. if ($data[$i]->game_code == 'bq') {
  892. $data[$i]->match_id_order = '<a href="/admin/Sportsbq/outcome?home_team=' . $data[$i]->match_id . '">' . $data[$i]->match_id . '</a> (<span>' . $data[$i]->account_name . '</span>)<br>' . $data[$i]->order_id;
  893. }
  894. $data[$i]->league = $data[$i]->name_chinese;
  895. if ($data[$i]->is_champion == 0) {
  896. $data[$i]->home_guest = $data[$i]->home_team . ' VS ' . $data[$i]->guest_team;
  897. $data[$i]->time = '开赛:' . $data[$i]->match_date . ' ' . $data[$i]->match_time;
  898. } else {
  899. $data[$i]->home_guest = '冠军联赛投注';
  900. $data[$i]->time = '结束:' . $data[$i]->last_time;
  901. }
  902. $data[$i]->money_match_time = '下注:' . $data[$i]->money_time . $data[$i]->time;
  903. //反水
  904. $data[$i]->water_return = -1;
  905. for ($a = 0; $a < count($water_return_money); $a++) {
  906. if ($data[$i]->order_id == $water_return_money[$a]->trade_id) {
  907. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  908. $data[$i]->water_return = 0;
  909. } else {
  910. $data[$i]->water_return = $water_return_money[$a]->money;
  911. }
  912. //用户投注后账户金额
  913. $data[$i]->frozen_cash = $water_return_money[$a]->money_cash;
  914. }
  915. }
  916. if ($data[$i]->water_return == -1) {
  917. $data[$i]->water_return = 0;
  918. //用户投注后账户金额
  919. $data[$i]->frozen_cash = $data[$i]->money_cash;
  920. }
  921. //此时结果金额
  922. $data[$i]->result = $data[$i]->water_return + $data[$i]->gain_money;
  923. //用户投注前账户金额
  924. $data[$i]->available_cash = $data[$i]->money_cash + $data[$i]->money;
  925. //投注前后账户金额
  926. $data[$i]->account_money = $data[$i]->available_cash . '<br><span>' . $data[$i]->money . '</span><br>' . $data[$i]->frozen_cash;
  927. if ($data[$i]->status == 2 || $data[$i]->status == 3) {
  928. // for ($b = 0; $b < count($invalid_money); $b++) {
  929. // if ($data[$i]->order_id == $invalid_money[$b]->trade_id) {
  930. // $data[$i]->available_cash = $invalid_money[$b]->money_cash;
  931. // $data[$i]->account_money = $data[$i]->available_cash;
  932. // }
  933. // }
  934. $data[$i]->account_money = $data[$i]->available_cash;
  935. }
  936. $data[$i]->str = 0;
  937. for ($b = 0; $b < count($content); $b++) {
  938. $data[$i]->str1 = 0;
  939. $data[$i]->team = '';
  940. if (!empty($content[$b]->odds_code)) {
  941. if (!empty(stristr($content[$b]->odds_code, 'home'))) {
  942. $data[$i]->team = $data[$i]->home_team;
  943. }
  944. if (!empty(stristr($content[$b]->odds_code, 'guest'))) {
  945. $data[$i]->team = $data[$i]->guest_team;
  946. }
  947. if ($content[$b]->p_code == 'half_full') {
  948. $string = str_replace('home', $data[$i]->home_team, $content[$b]->odds_code);
  949. $string = str_replace('guest', $data[$i]->guest_team, $string);
  950. $string = str_replace('dogfall', '和局', $string);
  951. $string = explode('_', $string);
  952. $data[$i]->team = $string['2'] . '/' . $string['3'];
  953. }
  954. }
  955. //处理普通赛事玩法详情
  956. if ($data[$i]->match_id == $content[$b]->match_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 0) {
  957. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  958. $content[$b]->condition = '';
  959. }
  960. $data[$i]->game_status = $data[$i]->game_status;
  961. //投注详情
  962. if (!empty($data[$i]->match_time)) {
  963. $data[$i]->content1 = '[' . $data[$i]->match_time . ']';
  964. //$data[$i]->match_time = $data[$i]->match_time;
  965. } else {
  966. if (!empty($data[$i]->last_time)) {
  967. $datetime = explode(' ', $data[$i]->last_time);
  968. //$data[$i]->match_time = $datetime[1];
  969. $data[$i]->content1 = '[' . $datetime[1] . ']';
  970. }
  971. }
  972. for ($c = 0; $c < count($result); $c++) {
  973. if ($content[$b]->odds_code == $result[$c]->odds_code) {
  974. $data[$i]->str1 = 1;
  975. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  976. /*
  977. if ($content[$b]->result == '未处理') {
  978. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  979. } else {
  980. $data[$i]->content = $data[$i]->content . $result[$c]->odds_name . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  981. }
  982. */
  983. }
  984. }
  985. if ($data[$i]->str1 == 0) {
  986. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  987. /*
  988. if ($content[$b]->result == '未处理') {
  989. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  990. } else {
  991. $data[$i]->content = $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  992. }
  993. */
  994. }
  995. }
  996. //处理冠军联赛玩法详情
  997. if ($data[$i]->match_id == $content[$b]->lg_id && $data[$i]->batch_id == $content[$b]->batch_id && $data[$i]->is_champion == 1) {
  998. $content[$b]->condition = '';
  999. if ($content[$b]->p_code == 'first_last_ball' || $content[$b]->p_code == 'half_full' || $content[$b]->p_code == 'capot' || $content[$b]->p_code == 'two_sides' || $content[$b]->p_code == 'total_goal') {
  1000. $content[$b]->condition = '';
  1001. }
  1002. $data[$i]->game_status = $data[$i]->game_status;
  1003. /*
  1004. //投注详情
  1005. if(!empty($data[$i]->match_time)){
  1006. $data[$i]->content1 = '['.$data[$i]->match_time.']';
  1007. //$data[$i]->match_time = $data[$i]->match_time;
  1008. }
  1009. else{
  1010. if(!empty($data[$i]->last_time)){
  1011. $datetime = explode(' ',$data[$i]->last_time);
  1012. //$data[$i]->match_time = $datetime[1];
  1013. $data[$i]->content1 = '['.$datetime[1].']';
  1014. }
  1015. }
  1016. */
  1017. /*
  1018. for($c=0;$c<count($result);$c++){
  1019. if($content[$b]->odds_code == $result[$c]->odds_code){
  1020. $data[$i]->str1 = 1;
  1021. if($content[$b]->result=='未处理'){
  1022. $data[$i]->content = $content[$b]->home_team.'<br>'.$data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br>';
  1023. }else{
  1024. $data[$i]->content = $content[$b]->home_team.'<br>'.$data[$i]->content.$result[$c]->odds_name.'<br>'.$content[$b]->condition.' '.$data[$i]->team.'@'.$content[$b]->odds.' ¥'.$content[$b]->bet_money.'<br><span>'.$content[$b]->result.'</span>('.$content[$b]->matchresult.')<br>';
  1025. }
  1026. }
  1027. }
  1028. */
  1029. if ($data[$i]->str1 == 0) {
  1030. if ($content[$b]->result == '未处理') {
  1031. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br>';
  1032. } else {
  1033. $data[$i]->content = $content[$b]->home_team . '<br>' . $data[$i]->content . $content[$b]->odds_code . '<br>' . $content[$b]->condition . ' ' . $data[$i]->team . '@' . $content[$b]->odds . ' ¥' . $content[$b]->bet_money . '<br><span>' . $content[$b]->result . '</span>(' . $content[$b]->matchresult . ')<br>';
  1034. }
  1035. }
  1036. }
  1037. }
  1038. // if($data[$i]->status == 1){
  1039. // if($data[$i]->match_status == 0 || $data[$i]->match_status == 1){
  1040. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 结算 </a>';
  1041. // }
  1042. // if($data[$i]->match_status == 2 || $data[$i]->match_status == 3 || $data[$i]->match_status == 5){
  1043. // if($data[$i]->settle_status == '已结算'){
  1044. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm resettlement" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/resettlement/?id=" href="javascript:resettlement(\'/admin/SoccerNoteList/resettlement/?id='.$data[$i]->id.'\');"> 重新结算 </a>';
  1045. // }else{
  1046. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm settlement" lay-event="detail" pid="id" uri="/admin/SoccerNoteList/settlement/?id=" href="javascript:settlement(\'/admin/SoccerNoteList/settlement/?id='.$data[$i]->id.'\');"> 结算 </a>';
  1047. // }
  1048. // }
  1049. // }else{
  1050. // $data[$i]->game_status = $data[$i]->settle_status.'<br><a class="layui-btn layui-btn-sm audit" lay-event="detail" pid="id" uri="" href="javascript:void(0)" style="background-color: grey;"> 结2算 </a>';
  1051. // }
  1052. $data[$i]->content = $data[$i]->content1 . $data[$i]->content;
  1053. }
  1054. return $data->toArray();
  1055. }
  1056. /**
  1057. * 作废赛事下注单处理
  1058. * $matchid int 赛事id
  1059. * $type str 球类代码 zq lq wq bq
  1060. * $orders_sim obj 待处理单式注单数据 非必须
  1061. * $orders_str obj 待处理串式注单数据 非必须
  1062. * $type_handleType int 默认0 通过赛事id处理 1根据注单处理
  1063. */
  1064. function delorder($matchid,$type,$orders_sim=[],$orders_str=[],$type_handleType=0){
  1065. //该赛事的单式注单
  1066. $account_identitys = array();
  1067. if(empty($orders_sim) and $type_handleType == 0){
  1068. //无注单时,按整个赛事查询
  1069. $orders = $this->where(['match_id'=>$matchid,'game_code'=>$type])->get();
  1070. }else{
  1071. //有注单时 按注单处理
  1072. $orders = $orders_sim;
  1073. }
  1074. //去除数组的空值
  1075. foreach( $orders as $k=>$v){
  1076. if( !$v )
  1077. unset( $orders[$k] );
  1078. }
  1079. $order_ids = array();
  1080. if(!empty($orders)){
  1081. foreach( $orders as $k=>$v){
  1082. $account_identitys[] = $v['account_identity'];
  1083. $order_ids[] = $v['order_id'];
  1084. }
  1085. //用戶账户金额
  1086. $account_money = \App\Models\Account_detailed::wherein('account_identity',$account_identitys)->get();
  1087. //反水
  1088. $water_return_money = \App\Models\Money_details::wherein('trade_id',$order_ids)->where('trade_type', '7')->get();
  1089. //订单反水
  1090. foreach($water_return_money as $k=>$v){
  1091. foreach($orders as $kk=>$vv){
  1092. $vv['return_money'] = 0;
  1093. if($v['trade_id'] == $vv['order_id']){
  1094. $vv['return_money'] = $v['money'];
  1095. }
  1096. }
  1097. }
  1098. //用户余额
  1099. foreach($account_money as $k=>$v){
  1100. $account_money = 0;
  1101. foreach($orders as $kk=>$vv){
  1102. if($v['account_identity'] == $vv['account_identity']){
  1103. if($account_money == 0){
  1104. $vv['available_cash'] = $v['available_cash'];
  1105. //当前注单退款后的余额
  1106. $account_money = $v['available_cash']+$vv['money']-$vv['money']-$vv['gain_money'];
  1107. }else{//其他 获取 上个注单处理后的余额
  1108. $vv['available_cash'] = $account_money;
  1109. $account_money = $account_money+$vv['money']-$vv['money']-$vv['gain_money'];
  1110. }
  1111. }
  1112. }
  1113. }
  1114. foreach($orders as $k=>$v){
  1115. $models = new \App\Models\Money_details();
  1116. $models->info_identity = UUID();
  1117. $models->trade_id = $v['order_id'];
  1118. $models->account_name = $v['account_name'];
  1119. $models->account_identity = $v['account_identity'];
  1120. $change_money = $v['money'] - $v['return_money'] - $v['gain_money'];
  1121. $models->money = abs($change_money);
  1122. $models->money_time = date("Y-m-d H:i:s", time());
  1123. if ($change_money > 0) {
  1124. $models->money_type = '1';
  1125. } else {
  1126. $models->money_type = '2';
  1127. }
  1128. $models->money_cash = $v['available_cash'];
  1129. $models->trade_type = '3';
  1130. $models->trade_desc = '赛事作废单式注单回款'.$change_money.'元,订单号'.$v['order_id'];
  1131. $models->status = '1';
  1132. try {
  1133. DB::beginTransaction();//开启事务
  1134. $this->where('order_id', $v['order_id'])->update(['status' => '2']);//'use_mark'=>'通过设置赛事比分作废'
  1135. \App\Models\Account_detailed::where('account_identity', $v['account_identity'])->update(['available_cash' => $v['available_cash'], 'cash' => $v['available_cash']]);
  1136. $models->save();
  1137. DB::commit();//提交
  1138. } catch (Exception $e) {
  1139. DB::rollback();//回滚
  1140. }
  1141. }
  1142. }
  1143. //该赛事相关的的串关注单做平局处理
  1144. if(empty($orders_str) and $type_handleType == 0){
  1145. //无注单时,按整个赛事处理
  1146. \App\Models\MoneyBuyMatch::where('match_id',$matchid)->where('game_code',$type)->where('bet_type',2)->update(['result'=>2]);
  1147. }else{
  1148. //有串式注单时 按注单id处理
  1149. $order_ids_str = array_column($orders_str,'order_id');
  1150. \App\Models\MoneyBuyMatch::where('match_id',$matchid)->where('game_code',$type)->whereIn('order_id',$order_ids_str)->where('bet_type',2)->update(['result'=>2]);
  1151. }
  1152. }
  1153. /**
  1154. * 滚球投注 危险球自动审核
  1155. * $match_id int 赛事id
  1156. * $warn_data arr 危险球数据
  1157. */
  1158. public static function WarnHandle($match_id=0,$warn_data=[]){
  1159. if(!empty($match_id) and !empty($warn_data)){
  1160. $db = new \App\Models\Setinfo();
  1161. //获取设定需审核时间 秒
  1162. $handle_time = $db->getInfo(1003)['infocontent']?:90;
  1163. //获取赛事下 待审核 滚球投注
  1164. $where = [
  1165. ['match_id','=',$match_id],
  1166. ['roll_ratify','=',2]
  1167. ];
  1168. $order_data = self::where($where)->SELECT('id','account_name','account_identity','order_id','money_time','roll_ratify','money','gain_money')->get()->toArray();
  1169. if(!empty($order_data)){
  1170. //获取审核不通过订单 订单号
  1171. $order_ids_n = [];
  1172. //获取审核不通过订单
  1173. $order_data_n = [];
  1174. //获取审核通过订单 订单号
  1175. $order_ids_y = [];
  1176. //获取审核未通过订单 投注人
  1177. $account_identitys = [];
  1178. foreach($order_data as $k=>$v){
  1179. //投注时间 时间戳
  1180. $order_time = strtotime($v['money_time']);
  1181. foreach($warn_data as $kk=>$vv){
  1182. //危险球时间 时间戳
  1183. $warn_time = strtotime($vv['find_time']);
  1184. if($order_time < $warn_time and ($order_time+$handle_time) > $warn_time){
  1185. $order_ids_n[] = $v['order_id'];
  1186. $account_identitys[] = $v['account_identity'];
  1187. $order_data_n[] = $v;
  1188. unset($order_data[$k]);
  1189. }
  1190. }
  1191. }
  1192. if(!empty($order_data)){
  1193. foreach($order_data as $k=>$v){
  1194. $order_ids_y[] = $v['order_id'];
  1195. }
  1196. }
  1197. if(!empty($order_ids_n)){
  1198. //在审核时间内订单 审核不通过
  1199. self::HandleMoney_v2($account_identitys,$order_ids_n,$order_data_n);
  1200. }
  1201. if(!empty($order_ids_y)){
  1202. //在审核时间外订单 审核通过
  1203. $ret_y = self::whereIn('order_id', $order_ids_y)->update(['roll_ratify' => 1,'use_mark'=>trans('handleOrder.handle_order_auto_pass')]);
  1204. //如果更新数量小于订单数量 则返回异常
  1205. if($ret_y < count($order_ids_y)) throw new \Exception( Response::generate('',Response::HANDLE_ORDER_Y_ERR));
  1206. }
  1207. }
  1208. }
  1209. }
  1210. /**
  1211. * 滚球投注 获取指定时间内未审核订单
  1212. */
  1213. public static function __getOrderData($time=60){
  1214. $db = new \App\Models\Setinfo();
  1215. //获取设定需审核时间 秒
  1216. $handle_time = $db->getInfo(1003)['infocontent']?:90;
  1217. //获取需查询 时间条件 时间戳
  1218. //时间区间 开始时间
  1219. $time_unx_s = time() - $time - $handle_time;//-150 秒
  1220. //时间区间 截止时间
  1221. $time_unx_e = time() - $handle_time;//-90 秒
  1222. //拼接查询条件
  1223. $where = [
  1224. ['money_time','>',date('Y-m-d H:i:s',$time_unx_s)],
  1225. ['money_time','<',date('Y-m-d H:i:s',$time_unx_e)],
  1226. ['roll_ratify','=',2]
  1227. ];
  1228. //获取 待处理订单数据
  1229. $order_data = self::where($where)->SELECT('id','match_id','account_name','account_identity','order_id','money_time','roll_ratify','money','gain_money')->get()->toArray();
  1230. if(!empty($order_data)){
  1231. //获取订单所属赛事id
  1232. $match_ids = [];
  1233. foreach($order_data as $k=>$v){
  1234. $match_ids[] = $v['match_id'];
  1235. }
  1236. //去重 获取赛事危险球数据
  1237. $warn_json_data = StZqResult::whereIn('match_id',$match_ids)->SELECT('match_id','warn_more')->get()->toArray();
  1238. //获取审核不通过订单 订单号
  1239. $order_ids_n = [];
  1240. //获取审核不通过订单
  1241. $order_data_n = [];
  1242. //获取审核通过订单 订单号
  1243. $order_ids_y = [];
  1244. //获取审核未通过订单 投注人
  1245. $account_identitys = [];
  1246. foreach($order_data as $k=>$v){
  1247. //获取每个订单的危险球数据
  1248. $warn_data = commonFunction::filter_by_value($warn_json_data,'match_id',$v['match_id']);
  1249. $warn_data_arr = json_decode($warn_data['warn_more'],true);
  1250. //投注时间 时间戳
  1251. $order_time = strtotime($v['money_time']);
  1252. foreach($warn_data_arr as $kk=>$vv){
  1253. //危险球时间 时间戳
  1254. $warn_time = strtotime($vv['timei']);
  1255. if($order_time < $warn_time and ($order_time+$handle_time) > $warn_time){
  1256. $order_ids_n[] = $v['order_id'];
  1257. $account_identitys[] = $v['account_identity'];
  1258. $order_data_n[] = $v;
  1259. unset($order_data[$k]);
  1260. }
  1261. }
  1262. }
  1263. if(!empty($order_data)){
  1264. foreach($order_data as $k=>$v){
  1265. $order_ids_y[] = $v['order_id'];
  1266. }
  1267. }
  1268. if(!empty($order_ids_n)){
  1269. //在审核时间内订单 审核不通过
  1270. self::HandleMoney_v2($account_identitys,$order_ids_n,$order_data_n);
  1271. }
  1272. if(!empty($order_ids_y)){
  1273. //在审核时间外订单 审核通过
  1274. $ret_y = self::whereIn('order_id', $order_ids_y)->update(['roll_ratify' => 1,'use_mark'=>trans('handleOrder.handle_order_auto_pass')]);
  1275. //如果更新数量小于订单数量 则返回异常
  1276. if($ret_y < count($order_ids_y)) throw new \Exception( Response::generate('',Response::HANDLE_ORDER_Y_ERR));
  1277. }
  1278. }
  1279. }
  1280. public static function getOrderData($time=60){
  1281. $db = new \App\Models\Setinfo();
  1282. //获取设定需审核时间 秒
  1283. $handle_time = $db->getInfo(1003)['infocontent']?:90;
  1284. //获取需查询 时间条件 时间戳
  1285. //时间区间 截止时间
  1286. $time_unx_e = time() - (int)$handle_time;//-90 秒
  1287. //时间区间 开始时间
  1288. $time_unx_s = $time_unx_e - $time;//-150 秒
  1289. //拼接查询条件
  1290. $where = [
  1291. ['money_time','>',date('Y-m-d H:i:s',$time_unx_s)],//查询开始时间 大于 当前时间-审核延迟时间-执行间隔时间(默认60秒)
  1292. ['money_time','<',date('Y-m-d H:i:s',$time_unx_e)],//查询结束时间 小于 当前时间-审核延迟时间
  1293. ['roll_ratify','=',2],//查询 时间段内未审核 滚球投注 注单
  1294. ['money_buy_simplex.status','=',1],//查询 时间段内注单 投注状态
  1295. ];
  1296. //获取 待处理订单数据
  1297. $order_data = self::join('money_buy_match','money_buy_match.order_id','=','money_buy_simplex.order_id')
  1298. // ->where(['money_buy_simplex.order_id'=>'S20191025111201242070491'])
  1299. ->where($where)
  1300. ->SELECT('money_buy_simplex.id','money_buy_simplex.match_id','money_buy_simplex.account_name','money_buy_simplex.account_identity','money_buy_simplex.order_id','money_buy_simplex.money_time','money_buy_simplex.roll_ratify','money_buy_simplex.money','money_buy_simplex.gain_money','money_buy_match.p_code')
  1301. ->get()
  1302. ->toArray();
  1303. if(!empty($order_data)){
  1304. //获取订单所属赛事id
  1305. $match_ids = [];
  1306. foreach($order_data as $k=>$v){
  1307. $match_ids[] = $v['match_id'];
  1308. }
  1309. //去重 获取赛事危险球数据
  1310. $warn_json_data = StZqResult::whereIn('match_id',$match_ids)->SELECT('match_id','warn_more')->get()->toArray();
  1311. //获取审核不通过订单 订单号
  1312. $order_ids_n = [];
  1313. //获取审核不通过订单
  1314. $order_data_n = [];
  1315. //获取审核通过订单 订单号
  1316. $order_ids_y = [];
  1317. //获取审核未通过订单 投注人
  1318. $account_identitys = [];
  1319. foreach($order_data as $k=>$v){
  1320. //获取每个订单的危险球数据
  1321. $warn_data = commonFunction::filter_by_value($warn_json_data,'match_id',$v['match_id']);
  1322. $warn_data_arr = json_decode($warn_data['warn_more'],true);
  1323. //去除危险球默认数据
  1324. foreach($warn_data_arr as $key=>$val){
  1325. if($val['rtype'] == 0){
  1326. unset($warn_data_arr[$key]);
  1327. }
  1328. }
  1329. sort($warn_data_arr);
  1330. //当危险球为空,则无需审核,全部通过
  1331. if(!empty($warn_data_arr)){
  1332. //投注时间 时间戳
  1333. $order_time = strtotime($v['money_time']);
  1334. foreach($warn_data_arr as $kk=>$vv){
  1335. //危险球时间 时间戳
  1336. $warn_time = strtotime($vv['timei']);
  1337. //危险球类型 可能的值:1 进球无效 2红卡无效 3无效(用于角球)
  1338. $warn_type = $vv['warn_type'];
  1339. //审核危险球类型
  1340. $v['use_mark'] = '未知类型';
  1341. //确认危险球审核条件
  1342. if($order_time < $warn_time and ($order_time+$handle_time) > $warn_time){
  1343. //根据投注 玩法 确定 危险球审核类型
  1344. if($v['p_code'] == 'CB' and $warn_type== 3){
  1345. $v['use_mark'] = '进球无效';
  1346. }else{
  1347. if($warn_type == 1){
  1348. $v['use_mark'] = '进球无效';
  1349. }
  1350. if($warn_type == 2){
  1351. $v['use_mark'] = '红卡无效';
  1352. }
  1353. }
  1354. $order_ids_n[] = $v['order_id'];
  1355. $account_identitys[] = $v['account_identity'];
  1356. $order_data_n[] = $v;
  1357. unset($order_data[$k]);
  1358. }
  1359. }
  1360. }
  1361. }
  1362. if(!empty($order_data)){
  1363. foreach($order_data as $k=>$v){
  1364. $order_ids_y[] = $v['order_id'];
  1365. }
  1366. }
  1367. if(!empty($order_ids_n)){
  1368. //在审核时间内订单 审核不通过
  1369. self::HandleMoney_v2($account_identitys,$order_ids_n,$order_data_n);
  1370. }
  1371. if(!empty($order_ids_y)){
  1372. //在审核时间外订单 审核通过
  1373. $ret_y = self::whereIn('order_id', $order_ids_y)->update(['roll_ratify' => 1,'use_mark'=>trans('handleOrder.handle_order_auto_pass')]);
  1374. //如果更新数量小于订单数量 则返回异常
  1375. if($ret_y < count($order_ids_y)) throw new \Exception( Response::generate('',Response::HANDLE_ORDER_Y_ERR));
  1376. }
  1377. }
  1378. }
  1379. /**
  1380. * 滚球自动审核 账户资金处理
  1381. * v1
  1382. * 当用户下同时只有一个订单退款时 可用
  1383. *
  1384. */
  1385. public static function HandleMoney($account_identitys=[],$order_ids=[],$orders=[]){
  1386. //用戶账户金额
  1387. $account_money = \App\Models\Account_detailed::whereIn('account_identity',$account_identitys)->SELECT('account_identity','available_cash')->get()->toArray();
  1388. //反水
  1389. $water_return_money = \App\Models\Money_details::whereIn('trade_id',$order_ids)->where('trade_type', '7')->SELECT('trade_id','money')->get()->toArray();
  1390. if(!empty($orders)){
  1391. for($i=0;$i<count($orders);$i++){
  1392. for($a=0;$a<count($account_money);$a++){
  1393. if($orders[$i]['account_identity'] == $account_money[$a]['account_identity']){
  1394. $available_cash = $account_money[$a]['available_cash'];
  1395. }
  1396. }
  1397. for($b=0;$b<count($water_return_money);$b++){
  1398. if($orders[$i]['order_id'] == $water_return_money[$b]['trade_id']){
  1399. $water_return = $water_return_money[$b]['money'];
  1400. } else {
  1401. $water_return = 0;
  1402. }
  1403. }
  1404. //需退回金额 = 投注金额-反水金额
  1405. $money = abs($orders[$i]['money'] - $water_return);
  1406. //用户剩余金额
  1407. $new_available_cash = $available_cash + $money;
  1408. $models = new \App\Models\Money_details();
  1409. $models->info_identity = UUID();
  1410. $models->trade_id = $orders[$i]['order_id'];
  1411. $models->account_name = $orders[$i]['account_name'];
  1412. $models->account_identity = $orders[$i]['account_identity'];
  1413. $models->money = $money;
  1414. $models->money_time = date("Y-m-d H:i:s", time());
  1415. if ($new_available_cash > $available_cash) {
  1416. $models->money_type = '1';
  1417. } else {
  1418. $models->money_type = '2';
  1419. }
  1420. $models->money_cash = $new_available_cash;
  1421. $models->trade_type = '25';
  1422. $models->trade_desc = trans('handleOrder.handle_order_auto_fail').',退回投注资金:¥'.$money.';订单号:'.$orders[$i]['order_id'].'';
  1423. $models->status = '1';
  1424. //更新订单数据
  1425. $ret_order = self::where('id', $orders[$i]['id'])->update(['roll_ratify' => '-1','status' => '2','use_mark'=>trans('handleOrder.handle_order_auto_fail')]);
  1426. if($ret_order < 1) throw new \Exception( Response::generate('',Response::UP_ORDER_ERR));
  1427. //更新用户数据
  1428. $ret_user = \App\Models\Account_detailed::where('account_identity', $orders[$i]['account_identity'])->update(['available_cash' => $new_available_cash, 'cash' => $new_available_cash]);
  1429. if($ret_user < 1) throw new \Exception( Response::generate('',Response::UP_USER_ERR));
  1430. //更新用户资金数据
  1431. if(!$models->save()) throw new \Exception( Response::generate('',Response::UP_MONEY_ERR));
  1432. }
  1433. }
  1434. }
  1435. /**
  1436. * 滚球自动审核 账户资金处理
  1437. * v2
  1438. * 处理多用户下 多个注单退款时的 余额计算
  1439. */
  1440. public static function HandleMoney_v2($account_identitys=[],$order_ids=[],$orders=[],$type = 0){
  1441. //获取 用户 初始余额
  1442. $account_money = \App\Models\Account_detailed::whereIn('account_identity',$account_identitys)->SELECT('account_identity','available_cash')->get()->toArray();
  1443. //获取 指定注单 反水金额
  1444. $water_return_money = \App\Models\Money_details::whereIn('trade_id',$order_ids)->where('trade_type', '7')->SELECT('trade_id','money')->get()->toArray();
  1445. if(!empty($account_money) and !empty($orders) and !empty($water_return_money)){
  1446. //拼接每个注单 反水
  1447. foreach($orders as $k=>$v){
  1448. $v['fanshui'] = self::getFanshui($v['order_id'],$water_return_money);
  1449. $orders[$k] = $v;
  1450. }
  1451. foreach($account_money as $k=>$v){
  1452. //默认 余额 0
  1453. $account_identity = 0;
  1454. foreach($orders as $kk=>$vv){
  1455. //计算当前余额
  1456. if($v['account_identity'] == $vv['account_identity']){
  1457. //第一个注单 获取用户初始余额
  1458. if($account_identity == 0){
  1459. //当前注单余额
  1460. $vv['available_cash'] = $v['available_cash'];
  1461. //当前注单退款后的余额
  1462. $account_identity = $v['available_cash']+$vv['money']-$vv['fanshui'];
  1463. }else{//其他 获取 上个注单处理后的余额
  1464. $vv['available_cash'] = $account_identity;
  1465. $account_identity = $account_identity+$vv['money']-$vv['fanshui'];
  1466. }
  1467. $orders[$kk] = $vv;
  1468. }
  1469. }
  1470. }
  1471. //滚球注单审核 处理
  1472. if($type == 0){
  1473. foreach($orders as $k=>$v){
  1474. //需退回金额 = 投注金额-反水金额
  1475. $money = abs($v['money'] - $v['fanshui']);
  1476. //用户剩余金额
  1477. $new_available_cash = $v['available_cash'] + $money;
  1478. $models = new \App\Models\Money_details();
  1479. $models->info_identity = UUID();
  1480. $models->trade_id = $v['order_id'];
  1481. $models->account_name = $v['account_name'];
  1482. $models->account_identity = $v['account_identity'];
  1483. $models->money = $money;
  1484. $models->money_time = date("Y-m-d H:i:s", time());
  1485. $models->money_type = '1';
  1486. $models->money_cash = $new_available_cash;
  1487. $models->trade_type = '25';
  1488. $models->trade_desc = trans('handleOrder.handle_order_auto_fail').',退回投注资金:¥'.$money.';订单号:'.$v['order_id'].'';
  1489. $models->status = '1';
  1490. //更新订单数据
  1491. $ret_order = self::where('id', $v['id'])->update(['roll_ratify' => '-1','status' => '2','use_mark'=>$v['use_mark']]);//trans('handleOrder.handle_order_auto_fail')
  1492. if($ret_order < 1) throw new \Exception( Response::generate('',Response::UP_ORDER_ERR));
  1493. //更新用户数据
  1494. $ret_user = \App\Models\Account_detailed::where('account_identity', $v['account_identity'])->update(['available_cash' => $new_available_cash, 'cash' => $new_available_cash]);
  1495. if($ret_user < 1) throw new \Exception( Response::generate('',Response::UP_USER_ERR));
  1496. //更新用户资金数据
  1497. if(!$models->save()) throw new \Exception( Response::generate('',Response::UP_MONEY_ERR));
  1498. }
  1499. }
  1500. //已取消赛事注单相关处理
  1501. else{
  1502. foreach($orders as $k=>$v){
  1503. //需退回金额 = 投注金额-反水金额
  1504. $money = abs($v['money'] - $v['fanshui']);
  1505. //用户剩余金额
  1506. $new_available_cash = $v['available_cash'] + $money;
  1507. $models = new \App\Models\Money_details();
  1508. $models->info_identity = UUID();
  1509. $models->trade_id = $v['order_id'];//交易id
  1510. $models->account_name = $v['account_name'];//用户名
  1511. $models->account_identity = $v['account_identity'];//用户uuid
  1512. $models->money = $money;//变动金额
  1513. $models->money_time = date("Y-m-d H:i:s", time());//资金发生时间
  1514. $models->money_type = '1';//1.增加 2.减少
  1515. $models->money_cash = $new_available_cash;//剩余金额
  1516. $models->trade_type = '3';//交易类型 3撤单
  1517. $models->trade_desc = '因赛事取消,退回投注资金:¥'.$money.';订单号:'.$v['order_id'].'';//交易描述
  1518. $models->status = '1';//1成功 2失败
  1519. //更新订单数据
  1520. $ret_order = self::where('id', $v['id'])->update(['status' => '2','use_mark'=>'']);//因赛事取消,作废注单
  1521. if($ret_order < 1) throw new \Exception( Response::generate('',Response::UP_ORDER_ERR));
  1522. //更新用户数据
  1523. $ret_user = \App\Models\Account_detailed::where('account_identity', $v['account_identity'])->update(['available_cash' => $new_available_cash, 'cash' => $new_available_cash]);
  1524. if($ret_user < 1) throw new \Exception( Response::generate('',Response::UP_USER_ERR));
  1525. //更新用户资金数据
  1526. if(!$models->save()) throw new \Exception( Response::generate('',Response::UP_MONEY_ERR));
  1527. }
  1528. }
  1529. }
  1530. }
  1531. /**
  1532. * 获取注单 反水金额
  1533. * $order_id 订单id str
  1534. * $fanshuiData 反水数据 arr
  1535. */
  1536. public static function getFanshui($order_id='',$fanshuiData=[]){
  1537. foreach($fanshuiData as $k=>$v){
  1538. if($v['trade_id'] == $order_id){
  1539. $fanshui = $v['money'];
  1540. }
  1541. }
  1542. return $fanshui;
  1543. }
  1544. /**
  1545. * 定时处理 已取消赛事相关注单
  1546. * $time 查询时间 默认60秒
  1547. */
  1548. public static function HandleOrderInvalid($time = 60){
  1549. //获取指定时间内已取消赛事
  1550. //拼接查询条件
  1551. $time_unx_max = time() - $time ;//查询最大时间 时间戳 5分钟前
  1552. $time_unx_min = $time_unx_max - $time;//查询最小时间 时间戳 10分钟前
  1553. $where = [
  1554. ['utime','>',date('Y-m-d H:i:s',$time_unx_min)],
  1555. ['utime','<',date('Y-m-d H:i:s',$time_unx_max)],
  1556. ['status','=',6]
  1557. ];
  1558. //足球
  1559. $ZqMatchData = ZqMatchModel::where($where)->SELECT('id')->get()->toArray();
  1560. //篮球
  1561. $LqMatchData = LqMatchModel::where($where)->SELECT('id')->get()->toArray();
  1562. //网球
  1563. $WqMatchData = WqMatchModel::where($where)->SELECT('id')->get()->toArray();
  1564. //棒球
  1565. $BqMatchData = BqMatchModel::where($where)->SELECT('id')->get()->toArray();
  1566. //===取消注单处理===
  1567. $moneyBuyMatch = new \App\Models\MoneyBuyMatch();
  1568. //获取赛事下所有单式注单
  1569. $select = ['money_buy_simplex.id','money_buy_simplex.match_id','money_buy_simplex.account_name','money_buy_simplex.account_identity','money_buy_simplex.order_id','money_buy_simplex.money_time','money_buy_simplex.roll_ratify','money_buy_simplex.money','money_buy_simplex.gain_money','money_buy_match.p_code'];
  1570. //足球 单式注单
  1571. $zq_match_order_sim = [];
  1572. if(!empty($ZqMatchData)){
  1573. $zqMatch_ids = array_column($ZqMatchData,'id');
  1574. $zq_match_order_sim = $moneyBuyMatch->allsimplexorder('','zq',$select,$zqMatch_ids)->toArray();
  1575. //将所有赛事下串式注单 作废 (设置为 平)
  1576. \App\Models\MoneyBuyMatch::whereIn('match_id',$zqMatch_ids)->where('game_code','zq')->where('bet_type',2)->update(['result'=>2]);
  1577. }
  1578. //篮球 单式注单
  1579. $lq_match_order_sim = [];
  1580. if(!empty($LqMatchData)){
  1581. $lqMatch_ids = array_column($LqMatchData,'id');
  1582. $lq_match_order_sim = $moneyBuyMatch->allsimplexorder('','lq',$select,$lqMatch_ids)->toArray();
  1583. //将所有赛事下串式注单 作废 (设置为 平)
  1584. \App\Models\MoneyBuyMatch::whereIn('match_id',$lqMatch_ids)->where('game_code','lq')->where('bet_type',2)->update(['result'=>2]);
  1585. }
  1586. //网球 单式注单
  1587. $wq_match_order_sim = [];
  1588. if(!empty($WqMatchData)){
  1589. $wqMatch_ids = array_column($WqMatchData,'id');
  1590. $wq_match_order_sim = $moneyBuyMatch->allsimplexorder('','wq',$select,$wqMatch_ids)->toArray();
  1591. //将所有赛事下串式注单 作废 (设置为 平)
  1592. \App\Models\MoneyBuyMatch::whereIn('match_id',$wqMatch_ids)->where('game_code','wq')->where('bet_type',2)->update(['result'=>2]);
  1593. }
  1594. //棒球 单式注单
  1595. $bq_match_order_sim = [];
  1596. if(!empty($BqMatchData)){
  1597. $bqMatch_ids = array_column($BqMatchData,'id');
  1598. $bq_match_order_sim = $moneyBuyMatch->allsimplexorder('','bq',$select,$bqMatch_ids)->toArray();
  1599. //将所有赛事下串式注单 作废 (设置为 平)
  1600. \App\Models\MoneyBuyMatch::whereIn('match_id',$bqMatch_ids)->where('game_code','bq')->where('bet_type',2)->update(['result'=>2]);
  1601. }
  1602. //合并单式注单
  1603. $order_sim = array_merge($zq_match_order_sim,$lq_match_order_sim,$wq_match_order_sim,$bq_match_order_sim);
  1604. // dd($order_sim);
  1605. //如果有单式注单
  1606. if(!empty($order_sim)){
  1607. //用户uuid
  1608. $account_identitys = array_column($order_sim,'account_identity');
  1609. //注单id
  1610. $order_ids = array_column($order_sim,'order_id');
  1611. //注单作废处理
  1612. self::HandleMoney_v2($account_identitys,$order_ids,$order_sim,1);
  1613. }
  1614. }
  1615. //获取单式注单id,match_id
  1616. public function getsim($game_code){
  1617. $sim = $this->select('id','match_id')->where('game_code',$game_code)->get();
  1618. return $sim;
  1619. }
  1620. }