$uid, 'symbol' => $symbol])->value('balance'); $icon = DictCoin::where('symbol', $symbol)->value('icon'); $suc = UserHash::mining_set($uid, [ 'symbol'=> $symbol, 'icon' => $icon, 'price' => 0, 'progress' => $progress, 'total' => $total, 'ts' => time(), 'order_id' => $orderId, ]); if (!$suc) { return JsonService::fail('未成功执行'); } return JsonService::successful(); } /** * 请求转账记录 */ public function history(Request $request) { [$page, $limit] = UtilService::getMore([ ['page', 1], ['limit', 20], ], $request, true); $uid = 1; // TODO $rows = UserCoinTransfer::getUserTransferred($uid, $page, $limit); return JsonService::successful($rows); } /* * 更新钱包地址 */ public function updateAddr(Request $request) { list($symbol, $addr) = UtilService::postMore([ ['symbol', ''], ['addr', ''], ], $request, true); if (!$symbol || !$addr) { return JsonService::fail('参数不可为空'); } if (!DictCoin::where('symbol', $symbol)->select()) { return JsonService::fail('未找到目标'); } $uid = $request->uid(); $suc = UserCoin::upsertAddr($uid, $symbol, $addr); if (!$suc) { return JsonService::fail('执行失败'); } return JsonService::successful(); } /* * 提现 */ public function transfer(Request $request) { list($symbol, $amount) = UtilService::postMore([ ['symbol', ''], ['amount', 0.0] ], $request, true); if(!$symbol) { return JsonService::fail('参数不可为空'); } $meta = DictCoin::where('symbol', $symbol)->select(); if (!$meta) { return JsonService::fail('未找到目标'); } $meta = $meta->toArray(); if ($amount < $meta['min_withdrawal']){ return JsonService::fail('未达到最低限额'); } $uid = $request->uid(); $userCoin = UserCoin::where(['uid'=>$uid, 'symbol'=>$symbol])->select(); if (!$userCoin) { return JsonService::fail('不适用的用户'); } $userCoin = $userCoin->toArray(); if(!$userCoin['addr']) { return JsonService::fail('地址未设置'); } if ($userCoin['balance'] < $amount) { return JsonService::fail('余额不足'); } $transferred = UserCoinTransfer::hasTransferred($uid, $symbol, $userCoin['addr']); if (!$transferred) { return JsonService::fail('首次操作需联系客服进行'); } // transfer UserCoin::beginTrans(); $left = bcsub($userCoin['balance'], $amount, 8); $res1 = UserCoin::where(['uid'=>$uid, 'symbol'=>$symbol])->update(['balance'=>$left]); $res2 = UserCoinTransfer::withdrawal($uid, $symbol, $userCoin['addr'], $amount); $ok = $res1 && $res2; UserCoin::checkTrans($ok); if (!$ok) { return JsonService::fail('执行失败'); } return JsonService::successful('成功,已开始审核'); } }