fix: API路由补齐+后台全面中文化

This commit is contained in:
testadmin
2026-04-29 03:33:00 +08:00
parent 664d4d9572
commit 6ce7adcbfb
267 changed files with 47059 additions and 0 deletions
@@ -0,0 +1,196 @@
<?php
namespace App\Http\Controllers\Admin;
use App\AccountLog;
use App\Currency;
use App\Users;
use Symfony\Component\HttpFoundation\Request;
class AccountLogController extends Controller
{
public function index()
{
//获取type类型
$type = array(
AccountLog::ADMIN_LEGAL_BALANCE => '法币账户余额',
AccountLog::ADMIN_LOCK_LEGAL_BALANCE => '法币账户锁定余额',
AccountLog::ADMIN_CHANGE_BALANCE => '币币账户余额',
AccountLog::ADMIN_LOCK_CHANGE_BALANCE => '币币账户锁定余额',
AccountLog::ADMIN_LEVER_BALANCE => '杠杆账户余额',
AccountLog::ADMIN_LOCK_LEVER_BALANCE => '杠杆账户锁定余额',
AccountLog::ADMIN_MICRO_BALANCE => '期权账户余额', //后台调节期权账户余额
AccountLog::ADMIN_LOCK_MICRO_BALANCE => '期权账户锁定余额', //后台调节期权账户锁定余额
AccountLog::WALLET_CURRENCY_OUT => '法币账户转出至交易账户',
AccountLog::WALLET_CURRENCY_IN => '交易账户转入至法币账户',
9 => 'c2c划转期权',
10 => '期权划转c2c',
AccountLog::MICRO_TRADE_CLOSE_SETTLE => '期权平仓结算',
AccountLog::USER_BUY_INSURANCE => '用户购买保险',
AccountLog::USER_CLAIM_COMPENSATION => '赔偿用户',
AccountLog::INSURANCE_RESCISSION1 => '保险解约,清除受保金额',
AccountLog::INSURANCE_RESCISSION2 => '保险解约,清除保险金额',
AccountLog::INSURANCE_RESCISSION_ADD => '保险解约,赔付用户',
AccountLog::RETURN_INSURANCE_TRADE_FEE => '释放保险交易手续费',
AccountLog::LOWER_REBATE => '下级返利',
AccountLog::INSURANCE_MONEY => '用户持险生币',
AccountLog::LEGAL_USER_BUY => '用户购买商家法币成功',
AccountLog::LEGAL_SELLER_BUY => '商家购买用户法币成功',
AccountLog::TRANSACTIONOUT_SUBMIT_REDUCE => '提交卖出,扣除',
AccountLog::TRANSACTIONIN_REDUCE => '买入扣除',
AccountLog::INVITATION_TO_RETURN => '邀请返佣金',
AccountLog::ETH_EXCHANGE => '链上充币',
);
$currency_type = Currency::all();
return view("admin.account.index", [
'types' => $type,
'currency_type' => $currency_type
]);
}
public function lists(Request $request)
{
$limit = $request->get('limit', 10);
$account = $request->get('account', '');
$start_time = strtotime($request->get('start_time', 0));
$end_time = strtotime($request->get('end_time', 0));
$currency = $request->get('currency_type', 0);
$type = $request->get('type', 0);
$sign = $request->get('sign', 0);//正负号,0所有,1,正,-1,负号
$list = new AccountLog();
if (!empty($currency)) {
$list = $list->where('currency', $currency);
}
if (!empty($type)) {
$list = $list->where('type', $type);
}
if (!empty($start_time)) {
$list = $list->where('created_time', '>=', $start_time);
}
if (!empty($end_time)) {
$list = $list->where('created_time', '<=', $end_time);
}
if (!empty($sign)) {
if($sign > 0){
$list = $list->where('value', '>', 0);
}else{
$list = $list->where('value', '<', 0);
}
}
//根据关联模型的时间
/*if(!empty($start_time)){
$list = $list->whereHas('walletLog', function ($query) use ($start_time) {
$query->where('create_time','>=',$start_time);
});
}
if(!empty($end_time)){
$list = $list->whereHas('walletLog', function ($query) use ($end_time) {
$query->where('create_time','<=',$end_time);
});
}*/
if (!empty($account)) {
$list = $list->whereHas('user', function ($query) use ($account) {
$query->where("phone", 'like', '%' . $account . '%')->orwhere('email', 'like', '%' . $account . '%');
});
}
/* if (!empty($account_number)) {
$list = $list->whereHas('user', function($query) use ($account_number) {
$query->where('account_number','like','%'.$account_number.'%');
} );
}*/
if (!empty($type)) {
$sum = $list->sum('value');
}else{
$sum = '选择日志类型进行统计';
}
$list = $list->orderBy('id', 'desc')->paginate($limit);
//dd($list->items());
return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total(), 'sum'=>$sum]);
}
public function view(Request $request)
{
$id = $request->get('id', null);
$results = new AccountLog();
$results = $results->where('id', $id)->first();
if (empty($results)) {
return $this->error('无此记录');
}
return view('admin.account.viewDetail', ['results' => $results]);
}
public function indexprofits()
{
$scene_list = AccountLog::where("type", "=", AccountLog::PROFIT_LOSS_RELEASE)->orderBy("created_time", "desc")->get()->toArray();
// var_dump($scene_list);die;
return view('admin.profits.index')->with('scene_list', $scene_list);
}
public function listsprofits(Request $request)
{
$limit = $request->input('limit', 10);
$prize_pool = AccountLog::whereHas('user', function ($query) use ($request) {
$account_number = $request->input('account_number');
if ($account_number) {
$query->where('account_number', $account_number);
}
})->where(function ($query) use ($request) {
// $scene = $request->input('scene', -1);
$start_time = strtotime($request->input('start_time', null));
$end_time = strtotime($request->input('end_time', null));
// $scene != -1 && $query->where('scene', $scene);
$start_time && $query->where('created_time', '>=', $start_time);
$end_time && $query->where('created_time', '<=', $end_time);
})->where("type", AccountLog::PROFIT_LOSS_RELEASE)->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($prize_pool);
}
public function countprofits(Request $request)
{
$count_data = AccountLog::selectRaw('1 as user_count')
->selectRaw('sum(`value`) as value')
->whereHas('user', function ($query) use ($request) {
$account_number = $request->input('account_number');
if ($account_number) {
$query->where('account_number', $account_number)
->orWhere('phone', $account_number)
->orWhere('email', $account_number);
}
})->where(function ($query) use ($request) {
//$scene = $request->input('scene', -1);
$start_time = strtotime($request->input('start_time', null));
$end_time = strtotime($request->input('end_time', null));
//$scene != -1 && $query->where('scene', $scene);
$start_time && $query->where('created_time', '>=', $start_time);
$end_time && $query->where('created_time', '<=', $end_time);
})->where("type", AccountLog::PROFIT_LOSS_RELEASE)->groupBy('user_id')->get();
$user_count = $count_data->pluck('user_count')->sum();
$reward_total = 0;
$count_data->pluck('value')->each(function ($item, $key) use (&$reward_total) {
$reward_total = bc_add($reward_total, $item);
});
return response()->json([
'user_count' => $user_count,
'reward_total' => $reward_total,
]);
}
}
@@ -0,0 +1,168 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use App\AdminRole;
use App\Agent;
use App\Users;
use App\UsersWallet;
use Validator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Earnp\GoogleAuthenticator\GoogleAuthenticator;
use SimpleSoftwareIO\QrCode\BaconQrCodeGenerator;
class AdminController extends Controller{
public function users(){
$adminuser = Admin::where('id', '>', 0);
if(session()->get('admin_is_super') != '1') {
$adminuser->where('role_id', '>', 1);
}
$adminuser = $adminuser->get();
$count = $adminuser -> count();
return response()->json(['code'=>0,'count'=>$count,'msg'=>'','data'=>$adminuser]);
}
public function editAddress(){
$id = Input::get('id',null);
$address = Input::get('address');
$address_2 = Input::get('address_2');
$data = [
'address_2' => $address_2,'address' => $address];
UsersWallet::where('id',$id)->update($data);
return $this->success('编辑成功');
}
public function add()
{
// if(session()->get('admin_is_super') != '1') {
// abort(403);
// }
$id = Input::get('id',null);
$google = ['secret'=>'','qrcode'=>''];
if(empty($id)) {
$adminUser = new Admin();
}else{
$adminUser = Admin::find($id);
if($adminUser == null) {
abort(404);
}
if(session()->get("admin_id") == $id){
$google = GoogleAuthenticator::CreateSecret();
$qrcode = new BaconQrCodeGenerator();
$google['qrcode'] = $qrcode->encoding('UTF-8')->size(180)->margin(1)->generate($google['codeurl']);
}
}
$roles = AdminRole::all();
return view('admin.manager.add', ['admin_user' => $adminUser, 'roles' => $roles,'google'=>$google]);
}
public function postAdd(Request $request)
{
// if(session()->get('admin_is_super') != '1') {
// abort(403);
// }
$id = Input::get('id', null);
$validator = Validator::make(Input::all(), [
'username' => 'required',
'role_id' => 'required|numeric'
], [
'username.required' => '姓名必须填写',
'role_id.required' => '角色必须选择',
'role_id.numeric' => '角色必须为数字'
]);
if(empty($id)) {
$adminUser = new Admin();
}else{
$adminUser = Admin::find($id);
if($adminUser == null) {
return redirect()->back();
}
}
$password = Input::get('password', '');
$authcode = Input::get('authcode', '');
$google = Input::get('google', '');
if(!empty($authcode)){
if(!GoogleAuthenticator::CheckCode($google,$authcode)){
$validator->errors()->add('authcode', '谷歌验证码错误');
}
$adminUser->google = $google;
}
$adminUser->role_id = Input::get('role_id', '0');
if(Input::get('password', '') != '') {
$adminUser->password = Users::MakePassword($password);
}
$validator->after(function($validator) use ($adminUser, $id)
{
if(empty($id)) {
if (Admin::where('username', Input::get('username'))->exists()) {
$validator->errors()->add('username', '用户已经存在');
}
}
});
$adminUser->username = Input::get('username', '');
if($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
$adminUser->save();
}catch (\Exception $ex){
$validator->errors()->add('error', $ex->getMessage());
return $this->error($validator->errors()->first());
}
return $this->success('添加成功');
}
public function del()
{
$admin = Admin::find(Input::get('id'));
if($admin == null) {
abort(404);
}
$bool = $admin->delete();
if($bool){
return $this->success('删除成功');
}else{
return $this->error('删除失败');
}
}
public function agent(){
$admin = Agent::where('is_admin' , 1)->where('level' , 0)->first();
if ($admin != null ){
return redirect(route('agent'));
}else{
$hkok = DB::table('admin')->where('id' , 1)->first();
if ($hkok != null ){
$insertData = [];
$insertData['user_id'] = $hkok->id;
$insertData['username'] = $hkok->username;
$insertData['password'] = $hkok->password;
$insertData['level'] = 0;
$insertData['is_admin'] = 1;
$insertData['reg_time'] = time();
$insertData['pro_loss'] = 100.00;
$insertData['pro_ser'] = 100.00;
$id = DB::table('agent')->insertGetId($insertData);
if ($id>0){
return redirect(route('agent'));
}else{
return $this->error('失败');
}
}
}
}
}
?>
@@ -0,0 +1,89 @@
<?php
namespace App\Http\Controllers\Admin;
use App\AdminRole;
use Illuminate\Support\Facades\Input;
use Symfony\Component\HttpFoundation\Request;
use Validator;
class AdminRoleController extends Controller{
public function users()
{
// if(session()->get('admin_is_super') != '1') {
// abort(403);
// }
$adminUses = AdminRole::all();
return response()->json(['code'=>0,'data'=>$adminUses]);
}
public function add(){
// if(session()->get('admin_is_super') != '1') {
// abort(404);
// }
$id = Input::get('id',null);
if(empty($id)){
$adminRole = New AdminRole();
$adminRole -> is_super = 0;
}else{
$adminRole = AdminRole::find($id);
if($adminRole == null) {
abort(404);
}
}
return view('admin.manager.role_add', ['admin_role' => $adminRole]);
}
public function postAdd(){
// if(session()->get('admin_is_super') != '1') {
// abort(403);
// }
$id = Input::get('id', null);
$validator = Validator::make(Input::all(), [
'name' => 'required',
], [
'name.required' => '角色名称必须填写',
]);
if(empty($id)) {
$adminRole = new AdminRole();
}else{
$adminRole = AdminRole::find($id);
if($adminRole == null) {
return redirect()->back();
}
}
$adminRole->name = Input::get('name', '');
$adminRole->is_super = Input::get('is_super', '');
if($validator->fails()) {
return $this->error($validator->errors()->first());
}
try {
$adminRole->save();
}catch (\Exception $ex){
$validator->errors()->add('error', $ex->getMessage());
return $this->error($validator->errors()->first());
}
return $this->success('添加成功');
}
public function del(Request $request){
$id = $request->get('id');
$admin_role = AdminRole::find($id);
$bool = $admin_role->delete();
if($bool){
return $this->success('删除成功');
}else{
return $this->error('删除失败');
}
}
}
?>
@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Admin;
use App\AdminModule;
use App\AdminModuleAction;
use App\AdminRole;
use App\AdminRolePermission;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
class AdminRolePermissionController extends Controller{
public function update()
{
if(session()->get('admin_is_super') != '1') {
abort(403);
}
$id = Input::get('id', '');
$adminRole = AdminRole::find($id);
if($adminRole == null) {
abort(404);
}
$modules = AdminModule::all();
$modules_data = [];
foreach ($modules as $index=>$m)
{
$action = AdminModuleAction::where("admin_module_id",$m->id)->where("level",">=",0)->get();
if (count($action)){
$m->actions = $action;
$modules_data[$index] = $m;
}
}
$results = AdminRolePermission::where('role_id', $adminRole->id)->get();
if(empty($results)){
$permissions = [];
}else{
$results = $results->toArray();
$permissions = [];
foreach($results as $row) {
$permissions[$row['module']][] = $row['action'];
}
}
return view('admin.manager.role_permission', [
'admin_role' => $adminRole,
'modules' => $modules_data,
'permissions' => $permissions,
'success' => Session::get('success', null)
]);
}
public function postUpdate()
{
if(session()->get('admin_is_super') != '1') {
abort(403);
}
$roleID = Input::get('id', null);
$role = AdminRole::find($roleID);
if($role == null) {
abort(404);
}
AdminRolePermission::where('role_id', $roleID)->delete();
foreach(Input::get('permission') as $module => $actions)
{
foreach($actions as $action)
{
$level = AdminModuleAction::where("action",$action)->first();
$adminRolePermission = new AdminRolePermission();
$adminRolePermission->role_id = $roleID;
$adminRolePermission->module = $module;
$adminRolePermission->action = $action;
$adminRolePermission->level = $level->level;
$adminRolePermission->admin_module_id = $level->admin_module_id;
$adminRolePermission->name = $level->name;
$adminRolePermission->save();
}
}
return $this->success('修改成功');
}
}
?>
+264
View File
@@ -0,0 +1,264 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Symfony\Component\Process\Process;
use App\Admin;
use App\Users;
use App\Currency;
use App\UserLevelModel;
use App\DualCurrency;
use App\DualOrder;
use App\AiCurrency;
use App\AiOrder;
use Illuminate\Support\Facades\DB;
class AiController extends Controller
{
private $Month_E = array('01' => "Jan",
'02' => "Feb",
'03' => "Mar",
'04' => "Apr",
'05' => "May",
'06' => "Jun",
'07' => "Jul",
'08' => "Aug",
'09' => "Sep",
'10' => "Oct",
'11' => "Nov",
'12' => "Dec");
public function index(){
return view('admin.ai.index');
}
public function order(){
return view('admin.ai.order');
}
//订单列表
public function order_lists(Request $request){
$limit = $request->get('limit', 20);
$orderid = $request->get('orderid');
$user_id = $request->get('user_id');
$status = $request->get('status');
$list = DB::table('ai_order')->join('ai_currency', 'ai_currency.id', '=', 'ai_order.ai_id');
if($orderid){
$list->where('ai_order.orderid','LIKE','%'.$orderid.'%');
}
if($status){
$list->where('ai_order.status',$status);
}
if($user_id){
$list->where('ai_order.user_id',$user_id);
}
$list = $list->select('ai_order.*','ai_currency.days')->orderBy('ai_order.id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function add(){
$currencies = Currency::where('is_legal', 1)->get();
$userlevel = UserLevelModel::where('status', 1)->get();
return view('admin.ai.add')->with('currencies', $currencies)->with('userlevel', $userlevel);
}
public function editAiView(Request $request){
$id = $request->get('id');
if(empty($id)){
return $this->error('参数错误');
}
$ai_currency = AiCurrency::where(['id'=>$id])->first();
$invest = $ai_currency->invest;
$currencies = Currency::where('is_legal', 1)->get();
$userlevel = UserLevelModel::where('status', 1)->get();
// dump($dual_currency);die;
return view('admin.ai.edit_ai',['results' => $ai_currency])->with('currencies', $currencies)->with('invest', $invest)->with('userlevel', $userlevel);
}
//编辑项目
public function editAi(Request $request){
$id = $request->post('id');
$name = $request->post('name');
$days = $request->post('days');
$rate = $request->post('rate');
$ratemax = $request->post('ratemax');
$amount = $request->post('amount');
$amax = $request->post('amax');
$status = $request->post('status');
$hot = $request->post('hot');
$commission = $request->post('commission');
// $total_number = $request->post('total_number');
$invest = $request->post('invest');
$investtr ='';
foreach ($invest as $k=>$v){
$investtr .=$v.'+';
}
// $liquidateddamages = $request->post('liquidateddamages');
if(empty($days)){
return $this->error('参数错误');
}
if($rate >= $ratemax){
// return $this->error('起始回报率不能大于最大回报率');
}
if($amount >= $amax){
// return $this->error('起始金额不能大于最大金额');
}
$dual_currency = AiCurrency::where(['id'=>$id])->first();
$dual_currency->invest = substr($investtr, 0, strlen($investtr) - 1);
$dual_currency->total_number = 0;//$total_number;
$dual_currency->remaining_number =0;// $total_number;
$dual_currency->hot = $hot;
$dual_currency->commission = $commission;
$dual_currency->days = $days;
$dual_currency->name = $name;//$days."天";
$dual_currency->rate = $rate;
$dual_currency->ratemax = $ratemax;
$dual_currency->amount = $amount;
$dual_currency->amax = $amax;
$dual_currency->liquidateddamages = 0;//$liquidateddamages;
$dual_currency->status = $status;
$dual_currency->save();
return $this->success('操作成功');
// return $this->success(['data'=>$dual_currency]);
}
//删除项目
public function del(Request $request){
$id = $request->post('id');
// file_put_contents('/www/wwwroot/xb-dex/public/d.txt',time().$id.PHP_EOL,FILE_APPEND);
$Zhiya_lk = AiCurrency::where('id',$id)->first();//->get();
if(empty($Zhiya_lk)){
return $this->error('不存在');
}
if($id){
//whereNotIn
AiCurrency::where('id', $id)->delete();
return $this->success('操作成功');
}else{
return $this->error('失败');
}
}
//新增项目
public function saveAi(Request $request){
$data = $request->all();
$days = $data['days'];
$name = $data['name'];
$amount = $data['amount'];
$amax = $data['amax'];
$rate = $data['rate'];
$ratemax = $data['ratemax'];
$hot = $data['hot'];
$commission = $data['commission'];
//$total_number = $data['total_number'];
$invest = $data['invest'];
$investtr ='';
foreach ($invest as $k=>$v){
$investtr .=$v.'/';
}
// return $this->error($investtr);
if($data['days'] && $data['ratemax'] && $data['rate'] && $data['amount'] && $data['amax']){
if($rate >= $ratemax){
// return $this->error('起始回报率不能大于最大回报率');
}
if($amount >= $amax){
// return $this->error('起始金额不能大于最大金额');
}
// $_tp = $data['type'] =='call'? 'C':'P';
$dual_currency = new AiCurrency();
$dual_currency->invest = substr($investtr, 0, strlen($investtr) - 1);
$dual_currency->total_number = 0;//$total_number;
$dual_currency->remaining_number = 0;//$total_number;
$dual_currency->hot = $hot;
$dual_currency->commission = $commission;
$dual_currency->days = $days;
$dual_currency->name = $name;//$days."天";
$dual_currency->rate = $data['rate'];
$dual_currency->ratemax = $data['ratemax'];
$dual_currency->amount = $data['amount'];
$dual_currency->amax = $data['amax'];
$dual_currency->liquidateddamages = 0;//$data['liquidateddamages'];
$dual_currency->created = date('Y-m-d',time());
$dual_currency->save();
return $this->success('操作成功');
}else{
return $this->error('必填项不能为空');
}
}
//获取实时价格
public function getNewPrice(Request $request){
$currency = $request->get('currency');
$currencys = Currency::where('id',$currency)->get()->toArray();
return $this->success(['data'=>$currencys]);
}
//理财设置
public function lists(Request $request)
{
$limit = $request->get('limit', 20);
$status = $request->get('status');
$results = AiCurrency::where('id','>',1);
if(isset($status)){
$results->where('status',$status);
}
// dump($results);die;
$results = $results->orderBy('id', 'desc')->orderBy('status','desc')->paginate($limit);
return $this->layuiData($results);
}
}
@@ -0,0 +1,131 @@
<?php
namespace App\Http\Controllers\Admin;
use App\AutoList;
use App\Currency;
use App\Users;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\Process\Process;
class AutoController extends Controller
{
public function index(){
return view('admin.auto.index');
}
public function add(Request $request){
$id = $request->get('id',null);
if (empty($id)){
$result = new AutoList();
}else{
$result = AutoList::find($id);
}
$currencies = Currency::where('id','>',0)->orderBy('id','desc')->get();
$legals = Currency::where('is_legal',1)->orderBy('id','desc')->get();
return view('admin.auto.add')->with(['currencies'=>$currencies,'legals'=>$legals,'result'=>$result]);
}
public function postAdd(Request $request){
$id = $request->get('id',null);
$sell_account = $request->get('sell_account',null);
$buy_account = $request->get('buy_account',null);
$currency_id = $request->get('currency_id',null);
$legal_id = $request->get('legal_id',null);
$min_price = $request->get('min_price',null);
$max_price = $request->get('max_price',null);
$min_number = $request->get('min_number',null);
$max_number = $request->get('max_number',null);
$need_second = $request->get('need_second',null);
$messages = [
'sell_account.required' => '卖家账号必填',
'buy_account.required' => '买家账号必填',
'currency_id.required' => '请选择交易币',
'currency_id.integer' => '交易币值必须为整型',
'legal_id.required' => '请选择法币',
'legal_id.integer' => '法币值必须为整型',
'min_price.required' => '请填写最低价格区间',
'min_price.numeric' => '最低价格区间必须为数字',
'max_price.required' => '请填写最高价格区间',
'max_price.numeric' => '最高价格区间必须为数字',
'min_number.required' => '请填写最低随机购买数量',
'min_number.numeric' => '最低随机购买数量必须为数字',
'max_number.required' => '请填写最高随机购买数量',
'max_number.numeric' => '最高随机购买数量必须为数字',
'need_second.required' => '请填写生成频率',
'need_second.integer' => '生成频率必须为整型',
];
//验证
$validator = Validator::make($request->all(), [
'sell_account' => 'required', //正则验证 如有多条不能用| 必须是数组 ['required','regex:/^[a-zA-Z0-9]$/']
'buy_account' => 'required',
'currency_id' => 'required|integer',
'legal_id' => 'required|integer',
'min_price' => 'required|numeric',
'max_price' => 'required|numeric',
'min_number' => 'required|numeric',
'max_number' => 'required|numeric',
'need_second' => 'required|integer',
], $messages);
if ($validator->fails()){
return $this->error($validator->errors()->first());
}
$sell_user = Users::where('account_number',$sell_account)->first();
if (empty($sell_user)) return $this->error('卖家用户不存在');
$buy_user = Users::where('account_number',$buy_account)->first();
if (empty($buy_user)) return $this->error('卖家账号不存在');
$currency = Currency::find($currency_id);
if (empty($currency)) return $this->error('交易币不存在');
$legal = Currency::find($legal_id);
if (empty($legal) || empty($legal->is_legal)) return $this->error('该币不是法币');
if ($min_price >= $max_price) return $this->error('请设置正确的价格区间');
if ($min_number >= $max_number) return $this->error('请填写正确的随机数量');
if ($need_second <= 0) return $this->error('请填写正确的生成秒数');
$is = AutoList::where('currency_id',$currency_id)->where('legal_id',$legal_id)->first();
if (!empty($is) && empty($id)){
return $this->error('该交易对已经有机器人了');
}
if (empty($id)){
$auto_list = new AutoList();
$auto_list->create_time = time();
}else{
$auto_list = AutoList::find($id);
}
try{
$auto_list->buy_user_id = $buy_user->id;
$auto_list->sell_user_id = $sell_user->id;
$auto_list->currency_id = $currency_id;
$auto_list->legal_id = $legal_id;
$auto_list->min_price = $min_price;
$auto_list->max_price = $max_price;
$auto_list->min_number = $min_number;
$auto_list->max_number = $max_number;
$auto_list->need_second = $need_second;
$auto_list->save();
return $this->success('添加成功');
}catch (\Exception $exception){
return $this->error($exception->getMessage());
}
}
public function lists(Request $request){
$limit = $request->get('limit');
$results = AutoList::orderBy('id','desc')->paginate($limit);
return $this->layuiData($results);
}
}
@@ -0,0 +1,755 @@
<?php
namespace App\Http\Controllers\Api;
use App\AccountLog;
use App\LegalDealSend;
use App\LhBankAccount;
use App\LhBankAccountLog;
use App\LhBankTeamMember;
use App\LhDepositOrder;
use App\LhDepositOrderLog;
use App\LhLoanOrder;
use App\Logic\LhBankProfitLogic;
use App\Setting;
use App\Users;
use App\UsersWallet;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Cache\RedisLock;
use Illuminate\Support\Facades\Redis;
class BankController extends Controller
{
public function test(){
$accountId = Input::get('id',171);
LhBankProfitLogic::updateVipLevel($accountId);
//
//
// LhBankProfitLogic::addInProcessingQueue(1);
// LhBankProfitLogic::addInProcessingQueue(2);
// LhBankProfitLogic::addInProcessingQueue(3);
//
// $res = LhBankProfitLogic::getProcessingQueue();
//// var_dump($res);exit;
// DB::beginTransaction();
// try{
// LhBankProfitLogic::saveDeposit($accountId,1000);
// //存钱后更新M等级
// LhBankProfitLogic::teamIncrement($accountId,1000);
//
// DB::commit();
// }catch (\Exception $e){
// DB::rollBack();
// throw $e;
// }
}
public function dispatchInterest(){
//查询开始时间在今天以前,状态是1的 结息时间小于今天的订单
$res = LhDepositOrder::where([
'status' => 1,
])->where('start_at','<',date("Y-m-d"))
->where('last_settle_time','<',date("Y-m-d"))
->orWhere('last_settle_time',null)
->take(20) ->get();
foreach($res as $order){
LhDepositOrder::dispatchInterest($order->id);
// if($order->end_at < date('Y-m-d')){
// //todo 时间到了 释放存款
// LhDepositOrder::where('id',$order->id)->update(['status' => 2]);
// }
}
return $this->success('success');
}
public function weekProfit(){
$user_id = Users::getUserId();
//判断是否有账号
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('还未创建账户');
}
$beginDay = date('Y-m-d',strtotime('-8 day'));
$res = LhDepositOrderLog::where('bank_account_id',$res->id)
->where('interest_day','>',$beginDay)
->groupBy('interest_day')
->selectRaw('sum(interest_amount) as amount, interest_day')
->get();
return $this->success([
'list'=>$res
]);
}
public function bankLog(Request $request){
$user_id = Users::getUserId();
//判断是否有账号
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('还未创建账户');
}
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$type = $request->get('type',null);
$search = $request->get('search','');
$where = [];
if($type){
$where['type'] = $type;
}
if($search){
$where['description'] = $search;
}
$res = LhBankAccountLog::where('account_id',$res->id)
->where($where)
->orderBy('id','desc')
->skip($limit*($page-1))->take($limit)
->get();
return $this->success([
'list' => $res
]);
}
// public function newAccount(){
// $user_id = Users::getUserId();
// $user = Users::find($user_id);
// if (!$user) {
// return $this->error('用户不存在');
// }
// if($user->is_realname != 2){
// return $this->error('请实名制');
// };
// //判断是否有账号
// $res = LhBankAccount::where('uid',$user_id)->first();
// if($res){
// return $this->error('已创建过账户');
// }
// //获取爸爸加过的团队 全部再加一次
// if($user->parent_id){
// $parentTeamList = LhBankTeamMember::getUserTeams($user->parent_id);
// }
// DB::beginTransaction();
// try{
// $model = new LhBankAccount();
// $model->uid = $user_id;
// $model->usdt_balance = LhBankAccount::INIT_BALANCE;
// $model->p_uid = $user->parent_id;
// $model->save();
// if(isset($parentTeamList) && $parentTeamList){
// foreach($parentTeamList as $team){
// LhBankTeamMember::addTeamMember($team->leader_uid,$user_id,$team['generation']+1);
// }
// }
// if($user->parent_id){
// LhBankTeamMember::addTeamMember($user->parent_id,$user_id,1);
// }
// DB::commit();
// }catch (\Exception $e){
// DB::rollBack();
// return $this->error($e->getMessage());
// }
// return $this->success('创建成功');
// }
public function myAccount(){
$user_id = Users::getUserId();
//判断是否有账号
/** @var LhBankAccount $res */
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error(null);
}
else{
$res->total_profit_df =0;
$res->total_profit_usdt = 0;
$res->last_day_profit_df = 0;
$res->last_day_profit_usdt = 0;
$res->total_value = 0;
$res->total_invited = 0;
$res->total_lock_usdt = LhDepositOrder::where('bank_account_id',$res->id)->where('status',1)->sum('usdt_amount');
$res->total_lock_df = LhDepositOrder::where('bank_account_id',$res->id)->where('status',1)->sum('amount');
return $this->success([
'account_info' => $res,
'usdt' => Setting::getValueByKey('AUTU_USDT_NUM',300),
'df' => Setting::getValueByKey('AUTU_UNLOCK_NUM',1000)
]);
}
}
public function saveMoney(){
$user_id = Users::getUserId();
$amount = Input::get('amount','');
//判断是否有账号
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$amount = (float)$amount;
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", 3) //usdt
->lockForUpdate()
->first();
if (!$legal) {
return $this->error("钱包未找到,请先添加钱包");
}
if($legal->change_balance < $amount){
return $this->error('资金钱包余额不足');
}
DB::beginTransaction();
try{
//先扣费
$result = change_wallet_balance(
$legal,
4,
-$amount,
AccountLog::TRANSFER_TO_LH_ACCOUNT,
'转账入余币宝',
false,
0,
0,
serialize([])
);
$res->usdt_balance += $amount;
$res->save();
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,$amount,'转账入金');
Db::commit();
}catch (\Exception $e){
Db::rollBack();
return $this->error($e->getMessage());
}
return $this->success('入金成功');
}
public function config(Request $request){
$page = $request->get('page');
$list = DB::table('lh_deposit_config')->join('currency','currency.id','=','currency_id')
->offset(($page-1)*10)->limit(10)
->select(['currency.name as currency_name','currency.logo as currency_logo','lh_deposit_config.*'])
->get();
return $this->success($list);
}
public function newDeposit(Request $request){
$id = $request->get('config_id');
$amount = $request->get('amount');
$config = DB::table('lh_deposit_config')->where('id',$id)->first();
if(!$config){
return $this->error('项目不存在');
}
if($amount < $config->save_min){
return $this->error('最少存入数量为:'.$config->save_min);
}
//钱包
$user_id = Users::getUserId();
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", $config->currency_id) //usdt
->lockForUpdate()
->first();
DB::beginTransaction();
try{
$result = change_wallet_balance(
$legal,
4,
-$amount,
AccountLog::TRANSFER_TO_LH_ACCOUNT,
'锁仓',
false,
0,
0,
serialize([])
);
$order = LhDepositOrder::newOrder($user_id,$config->currency_id,$amount,$config->day,$config->interest_rate);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('success');
}
/**
* @return \Illuminate\Http\JsonResponse
* @author
*/
public function timeDeposit(){
$user_id = Users::getUserId();
$num = Input::get('num',0);
$num = (int)$num;
if($num <= 0){
return $this->error('数量不可低于0');
}
//判断是否有账号
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$amount = Setting::getValueByKey('AUTU_USDT_NUM',300);
$amount *= $num;
$df_amount = Setting::getValueByKey('AUTU_UNLOCK_NUM',1000);
$df_amount *= $num;
if($res->usdt_balance < $amount){
return $this->error('你的账户余额不足');
}
if($res->df_balance <= 0){
return $this->error('你的冻结余额为0');
}
if($res->df_balance < $df_amount){
$df_amount = $res->df_balance;
// return $this->error('你的冻结余额不足'.$df_amount);
}
$totalDeposit = LhBankAccount::getTotalDeposit($res->id);
DB::beginTransaction();
try{
$res->usdt_balance -= $amount;
$res->df_balance -= $df_amount;
$res->save();
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,-$amount,'解冻申请');
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_DF,-$df_amount,'解冻申请');
$order = LhDepositOrder::newOrder($res->id,$df_amount,$amount);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('存币成功');
}
public function myDepositOrder(Request $request){
$user_id = Users::getUserId();
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$isCancel = $request->get('is_cancel',0);
$status = $request->get('status',null);
$where = [];
if($isCancel){
$where = [
'is_cancel' => 1
];
}
if($status){
$where['status'] = $status;
}
$res = LhDepositOrder::where('user_id',$user_id)
->join('currency','currency.id','=','currency_id')
->where($where)
->orderBy('lh_deposit_order.id','desc')
->skip($limit*($page-1))->take($limit)
->get(['currency.name as currency_name','lh_deposit_order.id','amount','day_rate','total_interest','start_at','end_at','status']);
return $this->success([
'order_list' => $res
]);
}
public function cancelOrderNew(){
$orderId = Input::get('id');
$order = LhDepositOrder::find($orderId);
if(!$order){
return $this->error('找不到存单');
}
$user_id = Users::getUserId();
if($order->user_id != $user_id){
return $this->error('非法操作');
}
if($order->status!=1){
return $this->error('存单状态异常');
}
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", $order->currency_id) //usdt
->lockForUpdate()
->first();
DB::beginTransaction();
try{
//扣钱
$returnAmount = $order->amount-$order->cancel_fee;
$order->status = 2;
$order->is_cancel = 1;
$order->save();
$result = change_wallet_balance(
$legal,
4,
$returnAmount,
AccountLog::BANK_WITHDRAW,
'锁仓返还',
false,
0,
0,
serialize([])
);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('毁约成功');
}
public function cancelOrder(){
return $this->error('功能暂不可用');
$user_id = Users::getUserId();
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$orderId = Input::get('id');
$order = LhDepositOrder::find($orderId);
if(!$order){
return $this->error('找不到存单');
}
if($order->bank_account_id != $res->id){
return $this->error('非法操作');
}
if($order->status != 1){
return $this->error('存单状态异常');
}
$loan = LhLoanOrder::where(['bank_account_id'=>$res->id,'status' => 1])->first();
if($loan) {
return $this->error('你还有质押单,不可毁约');
}
//判断毁约期限
if(strtotime('+30 day',strtotime($order->start_at)) < date("Y-m-d")){
return $this->error('毁约时间已过');
}
DB::beginTransaction();
try{
//扣钱
$costRate = Setting::getValueByKey('CANCEL_DEPOSIT_ORDER_COST',20);
$returnAmount = $order->amount * (1-$costRate/100);
$balance = bc_add($res->usdt_balance,$returnAmount);
$res->usdt_balance = $balance;
$res->save();
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,$returnAmount,'毁约退款');
$order->status = 2;
$order->is_cancel = 1;
$order->save();
//更新自己账号等级
LhBankProfitLogic::cancelOrderUpdate($res->id);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('毁约成功');
}
/**
* 提现至钱包
* @return \Illuminate\Http\JsonResponse
* @throws \Exception
* @author
*/
public function withdraw(){
$user_id = Users::getUserId();
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$depositAmount = LhBankAccount::getTotalDeposit($res->id);
$amount = Input::get('amount',0);
if($amount<10){
return $this->error('最少提币金额为10');
}
$type = Input::get('type',''); //1 usdt 2 dfone
$withdrawFee = Setting::getValueByKey('LH_WITHDRAW_FEE',0);
if($withdrawFee>100){
return $this->error('提现失败,请联系管理员');
}
switch ($type){
case 1:
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", 3) //usdt
->lockForUpdate()
->first();
DB::beginTransaction();
try{
//扣手续费
change_wallet_balance(
$legal,
4,
$amount,
AccountLog::BANK_WITHDRAW,
'理财账户提现',
false,
0,
0,
serialize([])
);
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,-$amount,'理财账户提现');
DB::commit();
}catch (\Exceptionq $e){
DB::rollBack();
return $this->error($e->getMessage());
}
break;
case 2:
return $this->error('维护中');
$DfWallet = UsersWallet::getDF1Wallet($user_id);
if(!$DfWallet){
return $this->error('找不到钱包');
}
if($res->df_balance - $amount < 0){
return $this->error('余额不足');
}
DB::beginTransaction();
try{
$balance = bc_sub($res->df_balance,$amount);
$res->df_balance = $balance;
$res->save();
$amount = bc_mul($amount,(1-($withdrawFee/100)));
change_wallet_balance(
$DfWallet,
1,
$amount,
AccountLog::BANK_WITHDRAW,
'余币宝提现',
false,
0,
0,
serialize([])
);
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_DF,-$amount,'提现');
DB::commit();
}catch (\Exceptionq $e){
DB::rollBack();
return $this->error($e->getMessage());
}
break;
default:
return $this->error('错误类型');
}
return $this->success('提现成功');
}
public function loan(){
$user_id = Users::getUserId();
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$amount = Input::get('amount',0);
if($amount<100){
return $this->error('最少质押金额为100');
}
$type = Input::get('wallet_type',0);
//验证当前质押单总额
$totalLoan = LhLoanOrder::where([
'bank_account_id' => $res->id,
'status' => 1
])->sum('amount');
//查询当前存单金额
$totalDeposit = LhBankAccount::getTotalDeposit($res->id);
$maxLoan = bc_mul($totalDeposit,0.8,0);
if($totalLoan+$amount > $maxLoan){
return $this->error('总质押金额超出,你还可以质押:'.($maxLoan-$totalLoan));
}
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", 3) //usdt
->lockForUpdate()
->first();
$redis = Redis::connection();
$lock = new RedisLock($redis,'user_bank_loan_'.$user_id,10);
if($lock->acquire()) {
DB::beginTransaction();
try{
//创建订单
LhLoanOrder::newOrder($res->id,$amount);
//贷款出账
switch ($type){
case 1:
//资金钱包
change_wallet_balance(
$legal,
1,
+$amount,
AccountLog::LH_LOAN,
'质押入账',
false,
0,
0,
serialize([])
);
break;
case 2:
change_wallet_balance(
$legal,
4,
+$amount,
AccountLog::LH_LOAN,
'质押入账',
false,
0,
0,
serialize([])
);
break;
case 3:
change_wallet_balance(
$legal,
4,
+$amount,
AccountLog::LH_LOAN,
'质押入账',
false,
0,
0,
serialize([])
);
break;
break;
default:
$res->usdt_balance += $amount;
$res->save();
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,$amount,'质押入账');
}
DB::commit();
$lock->release();
}catch (\Exception $e){
DB::rollBack();
return $this->error('质押失败');
}
}
return $this->success('质押成功');
}
public function loanList(Request $request){
$user_id = Users::getUserId();
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$status = $request->get('status',null);
$where = [];
if($status){
$where['status'] = $status;
}
$res = LhLoanOrder::where('bank_account_id',$res->id)
->where($where)
->orderBy('id','desc')
->skip($limit*($page-1))->take($limit)
->get();
return $this->success($res);
}
public function repayment(Request $request){
$user_id = Users::getUserId();
$res = LhBankAccount::where('uid',$user_id)->first();
if(!$res){
return $this->error('您还未创建账户');
}
$is_zj_wallet = Input::get('is_zj_wallet',0);
$amount = Input::get('amount',0);
if($amount <0){
return $this->error('还款金额有误');
}
//usdtWallet
if($is_zj_wallet){
$legal = UsersWallet::where("user_id", $user_id)
->where("currency", 3) //usdt
->lockForUpdate()
->first();
if (!$legal) {
return $this->error("钱包未找到,请先添加钱包");
}
if($legal->legal_balance < $amount){
return $this->error('资金钱包余额不足');
}
}else{
if($amount> $res->usdt_balance){
return $this->error('余币宝账号余额不足');
}
}
$orderId = Input::get('order_id');
if(!$orderId){
return $this->error('参数异常');
}
$order = LhLoanOrder::where(['id' => $orderId,'bank_account_id' => $res->id])->first();
if(!$order){
return $this->error('找不到质押单');
}
$maxReturn = ($order->amount+$order->total_interest)-$order->total_return;
if($maxReturn<=0){
return $this->error('已还清');
}
DB::beginTransaction();
try{
//先判断还款金额是否超过所需还款金额
if($amount - $maxReturn >= 0){
$amount = $maxReturn;
$status = 2;
}else{
$status = 1;
}
//扣款
if(isset($legal)){
change_wallet_balance(
$legal,
1,
-$amount,
AccountLog::TRANSFER_TO_LH_ACCOUNT,
'转账入余币宝',
false,
0,
0,
serialize([])
);
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,+$amount,'资金账户转入余币宝');
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,-$amount,'质押还款');
}else{
$balance = bc_sub($res->usdt_balance,$amount,8);
$res->usdt_balance = $balance;
$res->save();
LhBankAccountLog::newLog($res->id,LhBankAccountLog::LOG_TYPE_USDT,-$amount,'质押还款');
}
//质押单更新
$order->total_return = bc_add($order->total_return,$amount,8);
$order->status = $status;
$order->end_at = date("Y-m-d");
$order->save();
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('还款成功');
}
}
@@ -0,0 +1,436 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\{
Address, AccountLog, Currency,BindBoxSuccessOrder, UsersInsurance, InsuranceType, InsuranceClaimApply, Setting, Users, UserCashInfo, UserReal, UsersWallet,BindBox,BindBoxOrder,BindBoxQuotationLog,BindBoxRaityHouse
};
use App\Utils\Hash;
class BindBoxController extends Controller
{
public function index()
{
return view("admin.bindBox.index");
}
public function lists(Request $request)
{
$limit = $request->get('limit');
$code = $request->get('code', '');
$status = $request->get('status', '');
$pay_type = $request->get('pay_type', '');
$name = $request->get('name', '');
$rarity= $request->get('rarity', '');
$user_id = $request->get('author', null);
$list = BindBox::where(function ($query) use ($code) {
if (!empty($code)) {
$query->where('code', $code);
}
})->where(function ($query) use ($rarity) {
if ($rarity != '') {
$query->where('rarity', $rarity);
}
})->where(function ($query) use ($name) {
if ($name != '') {
$query->where('name', $name);
}
})->where(function ($query) use ($pay_type) {
if ($pay_type != '') {
$query->where('pay_type', $pay_type);
}
})->where(function ($query) use ($status) {
if ($status != '') {
$query->where('status', $status);
}
})->where(function ($query) use ($user_id) {
if (!empty($user_id)) {
$query->where('author', $user_id);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function add(){
$currency = Currency::where('is_display',1)->get();
return view("admin.bindBox.add",['currency'=>$currency]);
}
//添加NFT
public function addNFT(Request $request){
$author = $request->post('author');
$_author = Users::where("id",$author)->first();
if(!$_author){
return $this->error('用户不存在');
}
$type = $request->post('type');
$currency = $request->post('currency');
$name = $request->post('name');
$author_description = $request->post('author_description');
$description = $request->post('description');
$image = $request->post('image');
$price = $request->post('price');
$per_increase = $request->post('per_increase');
$pay_type = $request->post('pay_type');
$start_time = $request->post('start_time');
$end_time = $request->post('end_time');
$rarity = $request->post('rarity');
$margin = $request->post('margin');
$rarity_house_id = $request->post('rarity_house_id');
if(!$type || !$currency || !$name || !$image ||!$price ||!$pay_type ||!$rarity || !$start_time|| !$end_time){
return $this->error('必填项!');
}
if( strtotime($start_time) < time() ){
return $this->error("The start time cannot be less than the current time!");
}
if( strtotime($start_time) > strtotime($end_time) ){
return $this->error("The start time cannot be less than the end_time!");
}
if($pay_type == 1){ //一口价
if($price<=0){
return $this->error('价格不能为空');
}
}elseif($pay_type == 2){//竞拍
if($price<=0){
return $this->error('竞拍起始价不能为0');
}
if($per_increase<=0){
return $this->error('竞拍加价价格不能小于0');
}
if($margin<=0){
return $this->error('竞拍商品未设置保证金!');
}
}elseif($pay_type == 3){ //盲盒
if($price<=0){
return $this->error('价格不能为空');
}
if($rarity_house_id<=0){
return $this->error('未选择开出的盲盒');
}
}else{
return $this->error('交易类型错误');
}
$nft = new BindBox();
$nft->code = $this->getCode();
$nft->type = $type;
$nft->currency_id = $currency;
$nft->name = $name;
$nft->price = $price;
$nft->image = $image;
$nft->author_description = $author_description??'';
$nft->author = $author;
$nft->owner = $author;
$nft->status = 1;
$nft->start_time = $start_time;
$nft->end_time = $end_time;
$nft->created = date('Y-m-d H:i:s');
$nft->updated = date('Y-m-d H:i:s');
$nft->pay_type = $pay_type;
$nft->margin = $margin ?? 0;
$nft->per_increase = $per_increase??0;
$nft->rarity_house_id = $rarity_house_id??0;
if($pay_type == 2){
$nft->resell_nft_status = 1;//新添加的默认为竞拍中
}
if($pay_type == 3){
$nft->rarity_status = 0;//盲盒状态未开启
$bind_box_raity_house = BindBoxRaityHouse::where(['id'=>$rarity_house_id,'status'=>0])->first();
if(!$bind_box_raity_house){
return $this->error('选择的盲盒不可用');
}
$bind_box_raity_house->status =1; //此盲盒已被使用
$bind_box_raity_house->save();
}
$nft->chain = 'HX'; //汇信链
$nft->rarity = $rarity;//稀有度
$nft->save();
return $this->success('操作成功');
}
public function edit(Request $request){
$nft = BindBox::where('id',$request->get('id'))->first();
return view("admin.bindBox.edit",['results'=>$nft]);
}
//编辑NFT
public function editNFT(Request $request){
$code = $request->post('code');
$price = $request->post('price');
$rarity = $request->post('rarity');
$start_time = $request->post('start_time');
$end_time = $request->post('end_time');
$per_increase = $request->post('per_increase');
if(!$price || !$rarity ||!$start_time || !$end_time ||!$code){
return $this->error('参数错误!');
}
$bind_box = BindBox::where('code',$code)->first();
if($bind_box->lock_order ==1 ){
return $this->error('等待支付,不可编辑');
}
if($bind_box->resell_nft_status ==1 ){
return $this->error('NFT竞拍中不可编辑');
}
$bind_box->price = $price;
$bind_box->start_time = $start_time;
$bind_box->end_time = $end_time;
$bind_box->per_increase = $per_increase;
$bind_box->rarity = $rarity;
$bind_box->save();
return $this->success('操作成功');
}
public function order(){
$currency = Currency::where('is_display',1)->get();
return view("admin.bindBox.order",['currency'=>$currency]);
}
//NFT交易记录
public function orderList(Request $request){
$limit = $request->get('limit');
$code = $request->get('code');
$buyer_id = $request->get('buyer_id');
$currency_id = $request->get('currency_id');
$list = BindBoxOrder::where(function ($query) use ($code) {
if (!empty($code)) {
$query->where('code', $code);
}
})->where(function ($query) use ($currency_id) {
if (!empty($currency_id)) {
$query->where('currency_id', $currency_id);
}
})->where(function ($query) use ($buyer_id) {
if (!empty($buyer_id)) {
$query->where('buyer_id', $buyer_id);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function quotation(){
$currency = Currency::where('is_display',1)->get();
return view("admin.bindBox.quotation",['currency'=>$currency]);
}
//出价记录
public function quotationList(Request $request){
$limit = $request->get('limit');
$code = $request->get('code');
$status = $request->get('status');
$buyer_id = $request->get('buyer_id');
$currency_id = $request->get('currency_id');
$list = BindBoxQuotationLog::where(function ($query) use ($code) {
if (!empty($code)) {
$query->where('code', $code);
}
})->where(function ($query) use ($currency_id) {
if (!empty($currency_id)) {
$query->where('currency_id', $currency_id);
}
})->where(function ($query) use ($status) {
if (!empty($status)) {
$query->where('status', $status);
}
})->where(function ($query) use ($buyer_id) {
if (!empty($buyer_id)) {
$query->where('buyer_id', $buyer_id);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
//获取盲盒仓库
public function getRarityHouse(Request $request){
$rarity = $request->post('rarity');//稀有度
$rarity_house = BindBoxRaityHouse::where(['rarity'=>$rarity,'status'=>0])->get();
return json_encode(['rarity_house'=>$rarity_house]);
}
public function rarity_house(){
return view("admin.bindBox.rarity_house");
}
//盲盒列表
public function rarity_house_list(Request $request){
$limit = $request->get('limit');
$name = $request->get('name');
$rarity = $request->get('rarity');
$list = BindBoxRaityHouse::where(function ($query) use ($name) {
if (!empty($name)) {
$query->where('name', 'like' ,"%$name%");
}
})->where(function ($query) use ($rarity) {
if (!empty($rarity)) {
$query->where('rarity', $rarity);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function add_rarity_house_view(){
return view("admin.bindBox.add_rarity_house_view");
}
public function add_rarity_house(Request $request){
$file = $request->post('file');
$rarity = $request->post('rarity');
$name = $request->post('name');
if(!$file || !$rarity){
return $this->error('必填项不能为空');
}
$BindBoxRaityHouse = new BindBoxRaityHouse();
$BindBoxRaityHouse->file= $file;
$BindBoxRaityHouse->rarity = $rarity;
$BindBoxRaityHouse->name = $name??'未命名';
$BindBoxRaityHouse->status = 0;
$BindBoxRaityHouse->created = date('Y-m-d H:i:s',time());
$BindBoxRaityHouse->save();
return $this->success('操作成功');
}
public function edit_rarity_house_view(Request $request){
$id = $request->get('id');
$BindBoxRaityHouse = BindBoxRaityHouse::where('id',$id)->first();
return view("admin.bindBox.edit_rarity_house_view",['results'=>$BindBoxRaityHouse]);
}
public function edit_rarity_house(Request $request){
$id = $request->post('id');
$file = $request->post('file');
$rarity = $request->post('rarity');
$name = $request->post('name');
if(!$file || !$rarity){
return $this->error('必填项不能为空');
}
$BindBoxRaityHouse = BindBoxRaityHouse::where('id',$id)->first();
$bind_box = BindBox::where('rarity_house_id',$id)->where('rarity',$BindBoxRaityHouse->rarity)->first();
if($BindBoxRaityHouse->status == 1 && $bind_box){ // 已被使用 并且开启 不可编辑
return $this->error('盲盒已开启,不可编辑');
}elseif($bind_box && $BindBoxRaityHouse->status == 0){ //盲盒已经被购买 未开启
$BindBoxRaityHouse->file= $file;
$BindBoxRaityHouse->save();
}else{//未被使用
$BindBoxRaityHouse->name= $name;
$BindBoxRaityHouse->file= $file;
$BindBoxRaityHouse->rarity = $rarity;
$BindBoxRaityHouse->save();
}
return $this->layuiData($list);
}
public function success_order(){
return view("admin.bindBox.success_order");
}
public function success_order_list(Request $request){
$limit = $request->get('limit');
$user_id = $request->get('user_id');
$is_pay = $request->get('is_pay');
$code = $request->get('code');
$list = BindBoxSuccessOrder::where(function ($query) use ($user_id) {
if (!empty($user_id)) {
$query->where('user_id', 'like' ,"%$user_id%");
}
})->where(function ($query) use ($code) {
if (!empty($code)) {
$query->where('code', $code);
}
})->where(function ($query) use ($is_pay) {
if (!empty($is_pay)) {
$query->where('is_pay', $is_pay);
}
})->orderBy('id', 'desc')->orderBy('is_expired', 'ASC')->paginate($limit);
return $this->layuiData($list);
}
private function getCode(){
$code = '0x' . Hash::createCode();
$count = BindBox::where('code',$code)->count();
if($count>0){
$this->getCode();
}else{
return $code;
}
}
public function del(Request $request){
$id = $request->post('id');
if(is_array($id)){
$ids = $id;
}else{
$ids = [$id];
}
$bind_boxs = BindBox::whereIn('id',$ids)->get();
if(!$bind_boxs){
return $this->error('NFT不存在');
}
foreach ($bind_boxs as $bind_box){
if($bind_box->lock_order ==1 ){
return $this->error('等待支付,不可删除');
}
if($bind_box->resell_nft_status ==1 ){
return $this->error('NFT竞拍中不可删除');
}
$bind_box->delete();
}
return $this->success('操作成功');
}
}
@@ -0,0 +1,267 @@
<?php
namespace App\Http\Controllers\Admin;
use App\BossAccount;
use App\LhDepositOrder;
use App\LhBankAccount;
use App\LhLoanOrder;
use App\AccountLog;
use App\Currency;
use App\UsersWallet;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class BossController extends Controller
{
//管理员取消订单 存量超过一天结算收益扣除违约金
public function cancelOrder(Request $request){
$orderId = $request->get('id');
$order = LhDepositOrder::find($orderId);
if(!$order){
return $this->error('找不到存单');
}
if($order->status!=1){
return $this->error('存单状态不可操作');
}
$legal = UsersWallet::where("user_id", $order->user_id)
->where("currency", $order->currency_id) //usdt
->lockForUpdate()
->first();
DB::beginTransaction();
try{
//扣钱
$returnAmount = $order->amount-$order->cancel_fee;
$order->status = 2;
$order->is_cancel = 1;
$order->save();
$result = change_wallet_balance(
$legal,
4,
$returnAmount,
AccountLog::MINING_BUY,
'锁仓返还',
false,
0,
0,
serialize([])
);
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('毁约成功');
}
public function bossList(Request $request){
$limit = $request->get('limit', 20);
$account = $request->get('phone','');
$pid = $request->get('p_id','');
$where = [];
if($pid){
$where['p_uid'] = $pid;
}
$res = BossAccount::join('users as u','uid','=','u.id')
->leftJoin('users as dad','dad.id','=','p_uid')
->select(['u.id','boss_account.p_uid','u.account_number','u.email','dad.phone as parent_phone','dad.account_number as parent_account','u.phone','total_invited','total_active','total_profit','balance'])
->where(function($q)use($account){
if($account){
$q->where('u.account_number','=',$account)->orWhere('u.email','=',$account);
}
})->where($where)
->orderBy('p_uid','asc')
->paginate($limit);
return $this->layuiData($res);
return $this->success(['list' => $res]);
}
public function bossListView(){
return view('admin.boss.boss_list');
}
public function depositOrderList(Request $request){
$limit = $request->get('limit', 20);
$where = [];
$account = $request->get('search');
$status = $request->get('status');
$cancel = $request->get('is_cancel',null);
if($status){
$where['lh_deposit_order.status'] = $status;
}
if($cancel !== null){
$where['is_cancel'] = $cancel;
}
$res = LhDepositOrder::join('currency as c','c.id','=','currency_id')
->join('users as u','user_id','=','u.id')
->where(function($q)use($account){
if($account){
$q->where('u.account_number','=',$account)->orWhere('u.email','=',$account);
}
})->where($where)
->select(['u.id as uid','u.account_number','u.email','u.phone','lh_deposit_order.*','c.name as currency_name'])
->orderBy('lh_deposit_order.id','desc')
->paginate($limit);
return $this->layuiData($res);
}
public function depositOrderView(){
return view('admin.boss.lh_order_list');
}
public function depositConfig(Request $request){
$currencyId = $request->get('currency_id');
$limit = $request->get('limit', 20);
// var_dump($currencyId);exit;
$where = [];
if($where){
$where['currency_id'] = $currencyId;
}
$list = DB::table('lh_deposit_config')->join('currency','currency.id','=','currency_id')->where($where)->select(['currency.name as currency_name','lh_deposit_config.*'])->orderBy('lh_deposit_config.id', 'asc')->paginate($limit);
return $this->layuiData($list);
}
public function addConfig(Request $request){
$currencyId = $request->get('currency_id');
$day = $request->get('day');
$rate = $request->get('rate');
$intro = $request->get('intro');
$save_min = $request->get('save_min');
// $output = $request->get('out_currency_id');
$res = DB::table('lh_deposit_config')->where('currency_id',$currencyId)->where('day',$day)->first();
if($res){
return $this->error('存在重复的期限');
}
DB::table('lh_deposit_config')->insert([
'day' => $day,
'interest_rate' => $rate,
'intro' => $intro,
'currency_id' => $currencyId,
'save_min' => $save_min,
'created_at' => date('Y-m-d H:i:s')
]);
return $this->success('创建成功');
}
public function depositConfigView(){
return view('admin.boss.config');
}
public function depositConfigAddView(){
$currency = Currency::all();
return view('admin.boss.config_add',['currencies'=>$currency]);
}
public function depositConfigEditView(Request $request){
$configId = $request->get('id');
$model = DB::table('lh_deposit_config')->where('id',$configId)->first();
$currency = Currency::where('id',$model->currency_id)->first();
$model->currency_name = $currency->name;
return view('admin.boss.config_edit',['model' => $model]);
}
public function depositConfigDelete(Request $request){
$configId = $request->get('id');
DB::table('lh_deposit_config')->where('id',$configId)->delete();
return $this->success('删除成功');
}
public function editConfig(Request $request){
$configId = $request->get('id');
$day = $request->get('day');
$rate = $request->get('rate');
$intro = $request->get('intro');
$save_min = $request->get('save_min');
$model = DB::table('lh_deposit_config')->where('id',$configId)->first();
if(!$model){
return $this->error('找不到此期限');
}
$res = DB::table('lh_deposit_config')->where('id','<>',$configId)->where('currency_id',$model->currency_id)->where('day',$day)->first();
if($res){
return $this->error('存在重复的期限');
}
DB::table('lh_deposit_config')->where('id',$configId)->update([
'day' => $day,
// 'total_rate' => $rate,
'interest_rate' => $rate,
'save_min' => $save_min,
'intro' => $intro
// 'created_at' => date('Y-m-d H:i:s')
]);
return $this->success('编辑成功');
}
public function loanOrderView(){
return view('admin.boss.loan_list');
}
public function loanOrderList(Request $request){
$limit = $request->get('limit', 20);
$where = [];
$account = $request->get('search');
$status = $request->get('status');
if($status){
$where['lh_loan_order.status'] = $status;
}
$res = LhLoanOrder::join('lh_bank_account as b','bank_account_id','=','b.id')
->join('users as u','uid','=','u.id')
->where(function($q)use($account){
if($account){
$q->where('u.account_number','=',$account)->orWhere('u.email','=',$account);
}
})->where($where)
->select(['u.id as uid','u.account_number','u.email','u.phone','lh_loan_order.*'])
->orderBy('lh_loan_order.id','desc')
->paginate($limit);
return $this->layuiData($res);
}
public function lhAccount(Request $request){
$user_id = $request->get('user_id');
$account = LhBankAccount::where('uid',$user_id)->first();
if(!$account){
return [];
}
return $this->success($account);
}
public function editLhAccountView(){
return view('admin.boss.edit_lh_account');
}
public function editLhAccount(Request $request){
$id = $request->get('id');
$account = LhBankAccount::where('id',$id)->first();
if(!$account){
return $this->error('找不到账户');
}
$account->df_balance = $request->get('df_balance');
$account->usdt_balance = $request->get('usdt_balance');
$account->save();
return $this->success('');
}
public function unlockOrder(Request $request){
$account = $request->get('search');
$limit = $request->get('limit', 20);
$res = DB::table('wallet_unlock_order')->join('users as u','user_id','=','u.id')
->where(function($q)use($account){
if($account){
$q->where('u.account_number','=',$account)->orWhere('u.email','=',$account);
}
})->orderBy('wallet_unlock_order.id','desc')
->select(['u.account_number','u.email','u.phone','wallet_unlock_order.*'])
->paginate($limit);
return $this->layuiData($res);
}
public function unlockOrderView(){
return view('admin.boss.unlock_order');
}
}
@@ -0,0 +1,202 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\C2cDeal;
use App\Currency;
use Maatwebsite\Excel\Facades\Excel;
class C2cDealController extends Controller
{
public function index()
{
//买入交易总额
$aaaa=C2cDeal::leftJoin("c2c_deal_send","c2c_deal.legal_deal_send_id","=","c2c_deal_send.id")->where("c2c_deal_send.type","=","sell")->select("c2c_deal.*","c2c_deal_send.type")->get();
$buy_all_number=0;
foreach($aaaa as $key=>$value)
{
$buy_all_number=$buy_all_number+$value->number;
}
//卖出交易总额
$bbbb=C2cDeal::leftJoin("c2c_deal_send","c2c_deal.legal_deal_send_id","=","c2c_deal_send.id")->where("c2c_deal_send.type","=","buy")->select("c2c_deal.*","c2c_deal_send.type")->get();
$sell_all_number=0;
foreach($bbbb as $key=>$value)
{
$sell_all_number=$sell_all_number+$value->number;
}
// $currency = Currency::where('is_legal', 1)->orderBy('id', 'desc')->get();//获取法币
//return view('admin.legal.deal', ['currency' => $currency]);
return view('admin.c2c.deal',['sell_all_number' => $sell_all_number,'buy_all_number'=>$buy_all_number]);
}
public function list(Request $request)
{
$limit = $request->get('limit', 10);
$account_number = $request->get('account_number', '');
$seller_number = $request->get('seller_number', '');
$type = $request->get('type', '');
// $currency_id = $request->get('currency_id', 0);
$result = new C2cDeal();
if (!empty($account_number)) {
$result = $result->whereHas('user', function ($query) use ($account_number) {
$query->where('account_number', 'like', '%' . $account_number . '%');
});
}
if (!empty($seller_number)) {
$result = $result->whereHas('seller', function ($query) use ($seller_number) {
$query->where('account_number', 'like', '%' . $seller_number . '%');
});
}
if (!empty($type)) {
$result = $result->whereHas('legalDealSend', function ($query) use ($type) {
$query->where('type', $type);
});
}
// if (!empty($currency_id)) {
// $result = $result->whereHas('legalDealSend', function ($query) use ($currency_id) {
// $query->where('currency_id', $currency_id);
// });
// }
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
//导出c2c交易信息
public function csv(Request $request)
{
// $limit = $request->get('limit', 10);
$account_number = $request->get('account_number', '');
$seller_number = $request->get('seller_number', '');
$type = $request->get('type', '');
// var_dump($account_number);var_dump($seller_number);var_dump($type);
// $currency_id = $request->get('currency_id', 0);
$result = new C2cDeal();
if (!empty($account_number)) {
$result = $result->whereHas('user', function ($query) use ($account_number) {
$query->where('account_number', 'like', '%' . $account_number . '%');
});
}
if (!empty($seller_number)) {
$result = $result->whereHas('seller', function ($query) use ($seller_number) {
$query->where('account_number', 'like', '%' . $seller_number . '%');
});
}
if (!empty($type)) {
$result = $result->whereHas('legalDealSend', function ($query) use ($type) {
$query->where('type', $type);
});
}
// if (!empty($currency_id)) {
// $result = $result->whereHas('legalDealSend', function ($query) use ($currency_id) {
// $query->where('currency_id', $currency_id);
// });
// }
$data = $result->orderBy('id', 'desc')->get();
// var_dump($data->toArray());die;
// $data = C2cDeal::all()->toArray();
return Excel::create('交易信息', function ($excel) use ($data) {
$excel->sheet('交易信息', function ($sheet) use ($data) {
$sheet->cell('A1', function ($cell) {
$cell->setValue('ID');
});
$sheet->cell('B1', function ($cell) {
$cell->setValue('交易需求id');
});
$sheet->cell('C1', function ($cell) {
$cell->setValue('用户交易账号');
});
$sheet->cell('D1', function ($cell) {
$cell->setValue('真实姓名');
});
$sheet->cell('E1', function ($cell) {
$cell->setValue('买入/卖出');
});
$sheet->cell('F1', function ($cell) {
$cell->setValue('支付方式');
});
$sheet->cell('G1', function ($cell) {
$cell->setValue('单价');
});
$sheet->cell('H1', function ($cell) {
$cell->setValue('交易量');
});
$sheet->cell('I1', function ($cell) {
$cell->setValue('交易币');
});
$sheet->cell('J1', function ($cell) {
$cell->setValue('交易总金额');
});
$sheet->cell('K1', function ($cell) {
$cell->setValue('交易状态');
});
$sheet->cell('L1', function ($cell) {
$cell->setValue('交易时间');
});
$sheet->cell('M1', function ($cell) {
$cell->setValue('确认时间');
});
if (!empty($data)) {
foreach ($data as $key => $value) {
if($value["type"]=="buy")
{
$value["type"]="卖出";
}
elseif($value["type"]=="sell")
{
$value["type"]="买入";
}
if($value["is_sure"]==0)
{
$value["is_sure"]="未完成";
}elseif($value["is_sure"]==1)
{
$value["is_sure"]="已完成";
}
elseif($value["is_sure"]==2)
{
$value["is_sure"]="取消";
}
elseif($value["is_sure"]==3)
{
$value["is_sure"]="已付款";
}
// var_dump($value["type"]);die;
$i = $key + 2;
$sheet->cell('A' . $i, $value['id']);
$sheet->cell('B' . $i, $value['legal_deal_send_id']);
$sheet->cell('C' . $i, $value['account_number']);
$sheet->cell('D' . $i, $value['user_realname']);
$sheet->cell('E' . $i, $value['type']);
$sheet->cell('F' . $i, $value['way_name']);
$sheet->cell('G' . $i, $value['price']);
$sheet->cell('H' . $i, $value['number']);
$sheet->cell('I' . $i, $value['currency_name']);
$sheet->cell('J' . $i, $value['deal_money']);
$sheet->cell('K' . $i, $value['is_sure']);
$sheet->cell('L' . $i, $value['format_create_time']);
$sheet->cell('M' . $i, $value['format_update_time']);
}
}
});
})->download('xlsx');
}
}
@@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\C2cDealSend;
use App\Currency;
use Illuminate\Support\Facades\DB;
class C2cDealSendController extends Controller
{
public function index(){
return view('admin.c2c.index');
}
public function list(Request $request){
$limit = $request->get('limit', 10);
$account_number = $request->get('account_number', '');
//$seller_name = $request->get('seller_name', '');
$type = $request->get('type', '');
// $currency_id = $request->get('currency_id', 0);
$result = new C2cDealSend();
if(!empty($account_number)){
$result = $result->whereHas('user', function ($query) use ($account_number) {
$query->where('account_number', 'like', '%' . $account_number . '%');
});
}
if (!empty($type)) {
$result = $result->where('type', $type);
}
// if (!empty($currency_id)) {
// $result = $result->where('currency_id', $currency_id);
// }
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
//撤销
public function sendBack(Request $request){
$id = $request->get('id',0);
if (empty($id)){
return $this->error('参数错误');
}
$send = C2cDealSend::find($id);
if (empty($send)){
return $this->error('无此记录');
}
DB::beginTransaction();
try{
C2cDealSend::sendBack($id);
DB::commit();
return $this->success('发布撤回成功,此发布改变为已完成状态');
}catch (\Exception $exception){
DB::rollback();
return $this->error($exception->getMessage());
}
}
}
@@ -0,0 +1,90 @@
<?php
namespace App\Http\Controllers\Admin;
use App\C2cMerchant;
use App\C2cMerchantOrder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class C2cMerchantController extends Controller
{
public function index() { return view('manages.c2c_merchant.index'); }
public function orderIndex() { return view('manages.c2c_merchant.orders'); }
public function list(Request $request)
{
$data = C2cMerchant::orderBy('sort', 'desc')->orderBy('id', 'desc')
->paginate($request->input('limit', 20));
return $this->layuiData($data);
}
public function save(Request $request)
{
$id = $request->input('id');
$fields = $request->only([
'name','logo','available_qty','min_amount','max_amount','unit_price',
'crypto_currency','fiat_currency','payment_methods','rating',
'contact_type','contact_link','status','sort'
]);
foreach (['unit_price','available_qty','min_amount','max_amount','rating','sort'] as $k) {
if (!isset($fields[$k]) || $fields[$k] === '') $fields[$k] = 0;
}
if (empty($fields['name'])) return $this->error('Name is required');
if ($id) {
C2cMerchant::where('id', $id)->update($fields);
} else {
C2cMerchant::create($fields);
}
return $this->success('OK');
}
public function delete(Request $request)
{
C2cMerchant::destroy($request->input('id'));
return $this->success('Deleted');
}
public function orderList(Request $request)
{
$query = C2cMerchantOrder::query()
->leftJoin('users', 'c2c_merchant_order.user_id', '=', 'users.id')
->leftJoin('c2c_merchant', 'c2c_merchant_order.merchant_id', '=', 'c2c_merchant.id')
->select(
'c2c_merchant_order.*',
'users.phone as user_phone',
'users.email as user_email',
'c2c_merchant.name as merchant_name'
);
$merchant_id = $request->input('merchant_id');
if ($merchant_id) $query->where('c2c_merchant_order.merchant_id', $merchant_id);
$status = $request->input('status');
if ($status !== null && $status !== '' && $status !== 'all') {
$query->where('c2c_merchant_order.status', intval($status));
}
$data = $query->orderBy('c2c_merchant_order.id', 'desc')
->paginate($request->input('limit', 20));
$statusMap = [0 => 'Pending', 1 => 'Completed', 2 => 'Cancelled', 3 => 'Expired'];
$dirMap = ['buy' => 'Buy', 'sell' => 'Sell'];
foreach ($data as $item) {
$item->status_text = $statusMap[$item->status] ?? '';
$item->direction_text = $dirMap[$item->direction] ?? $item->direction;
}
return $this->layuiData($data);
}
public function completeOrder(Request $request)
{
$id = intval($request->input('id'));
$order = C2cMerchantOrder::find($id);
if (!$order) return $this->error('Order not found');
if ($order->status != 0) return $this->error('Order already processed');
$order->update(['status' => 1]);
return $this->success('Completed');
}
}
@@ -0,0 +1,105 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Currency;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\FeedBack;
use App\Users;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use App\CandyTransfer;
class CandyTransferController extends Controller
{
public function index(){
return view('admin.candytransfer.index');
}
public function candytransfer_List(Request $request){
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$account_number = $request->get('account_number', '');
// var_dump($account_number);die;
$feedback = new CandyTransfer();
if(!empty($account_number)){
$account_number=Users::where("account_number",$account_number)->first()->id;
$feedback = $feedback->where("from_user_id", '=', $account_number)->orwhere("to_user_id", '=', $account_number);
}
$feedbackList = $feedback->orderBy('id', 'desc')->paginate($limit, ['*'], 'page', $page);
// dd($result);
return $this->layuiData($feedbackList);
}
public function feedBackDetail(Request $request){
$id = $request->get('id', '');
$feedback = FeedBack::find($id);
return view('admin.candytransfer.detail',['feedback'=> $feedback]);
}
public function feedBackDel(Request $request){
$id = $request->get('id', '');
$res = FeedBack::deatory($id);
if($res){
return $this->success('删除成功');
}else{
return $this->error('请重试');
}
}
public function reply(Request $request){
$id = $request->get('id', '');
$reply_content = $request->get('reply_content', '');
if(empty($id)||empty($reply_content)){
return $this->error('参数错误');
}
$feedback = FeedBack::find($id);
$feedback->reply_content = $reply_content;
$feedback->is_reply = 1;
$feedback->reply_time = time();
$feedback->save();
return $this->success('回复成功');
}
//导出用户列表至excel
public function csv()
{
$data = FeedBack::all()->toArray();
return Excel::create('反馈数据', function ($excel) use ($data) {
$excel->sheet('反馈数据', function ($sheet) use ($data) {
$sheet->cell('A1', function ($cell) {
$cell->setValue('ID');
});
$sheet->cell('B1', function ($cell) {
$cell->setValue('账户名');
});
$sheet->cell('C1', function ($cell) {
$cell->setValue('反馈内容');
});
$sheet->cell('D1', function ($cell) {
$cell->setValue('回复内容');
});
$sheet->cell('E1', function ($cell) {
$cell->setValue('反馈时间');
});
$sheet->cell('F1', function ($cell) {
$cell->setValue('回复时间');
});
$sheet->cell('G1', function ($cell) {
$cell->setValue('状态');
});
if (!empty($data)) {
foreach ($data as $key => $value) {
$i = $key + 2;
$sheet->cell('A' . $i, $value['id']);
$sheet->cell('B' . $i, $value['account_number']);
$sheet->cell('C' . $i, $value['content']);
$sheet->cell('D' . $i, $value['reply_content']);
$sheet->cell('E' . $i, $value['create_time']);
$sheet->cell('F' . $i, $value['reply_time']);
$sheet->cell('G' . $i, $value['is_reply']);
}
}
});
})->download('xlsx');
}
}
@@ -0,0 +1,268 @@
<?php
/**
* 提币控制器
*/
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Cache;
use App\UsersWalletOut;
use App\UsersWallet;
use App\AccountLog;
use App\Currency;
use App\Setting;
use App\Users;
use App\Utils\RPC;
use App\DAO\BlockChain;
use App\UserCashInfo;
use App\UserCashInfoInternational;
class CashbController extends Controller
{
public function index()
{
return view('admin.cashb.index');
}
public function cashbList(Request $request)
{
$limit = $request->get('limit', 20);
$account_number = $request->input('account_number', '');
$user_id = $request->input('user_id', '');
// file_put_contents('/www/wwwroot/crypto/public/t.txt',$user_id."---".$account_number);
$userWalletOut = new UsersWalletOut();
$userWalletOutList = $userWalletOut->whereHas('user', function ($query) use ($account_number,$user_id) {
if ($account_number != '') {
$query->where('phone', $account_number)
->orWhere('account_number', $account_number)
->orWhere('email', $account_number)
->orWhere('id', $account_number);
}
if ($user_id != '') {
$query->where('id', $user_id);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($userWalletOutList);
}
public function show(Request $request)
{
$id = $request->get('id', '');
if (!$id) {
return $this->error('参数小错误');
}
$walletout = UsersWalletOut::find($id);
$card_info = null;
$card_info_data = [];
if ($walletout->type == 1) { // 提现到银行卡
$card_info = UserCashInfo::where('user_id', $walletout->user_id)->first();
} else if ($walletout->type == 2) { // 提现到国际卡
// 获取表单设置
$forms = Setting::getValueByKey("form_international");
$list = explode("\n", $forms);
$lang = session('lang', 'en');
$langs = ['en', 'zh', 'hk', 'fra', 'jp', 'kor', 'spa', 'th'];
$new_forms = [];
$card_info = UserCashInfoInternational::where('user_id', $walletout->user_id)->first();
$data = explode("\n", $card_info->data);
$card_info_data = [];
foreach ($list as $i => $item) {
$_item = explode('|', $item); // 多语言用|分隔开,分别是en|zh|hk|fra|jp|kor|spa|th
$_values = [];
foreach ($langs as $_k => $_lang) {
try {
$_values[$_lang] = $_item[$_k];
} catch (\Exception $e) {
$_values[$_lang] = $_item[0];
}
}
$new_forms[] = $_values[$lang];
try{
$card_info_data[$_values[$lang]] = $data[$i];
} catch (\Exception $e) {
$card_info_data[$_values[$lang]] = '';
}
}
}
$use_chain_api = Setting::getValueByKey('use_chain_api', 0);
return view('admin.cashb.edit', ['wallet_out' => $walletout,'use_chain_api' => $use_chain_api, 'card_info'=>$card_info, 'card_info_data' => $card_info_data]);
}
//test
public function done(Request $request)
{
set_time_limit(0);
$id = $request->get('id', '');
$method = $request->get('method', '');
$notes = $request->get('notes', '');
$verificationcode = $request->input('verificationcode', '');
$txid = $request->input('txid', '');
if (!$id) {
return $this->error('参数错误');
}
try {
DB::beginTransaction();
$wallet_out = UsersWalletOut::where('status', '<=', 1)->lockForUpdate()->findOrFail($id);
$number = $wallet_out->number;
$real_number = bc_mul($wallet_out->number, bc_sub(1, bc_div($wallet_out->rate, 100)));
$user_id = $wallet_out->user_id;
$currency = 3;//$wallet_out->currency;dapp只有USDC =3
$currency_type = $wallet_out->currency_type;
$currency_model = Currency::find($currency);
$contract_address = $currency_model->contract_address;
$total_account = $currency_model->total_account;
$user_wallet = UsersWallet::where('user_id', $user_id)->where('currency', $currency)->lockForUpdate()->first();
if ($method == 'done') {//确认提币
// $key = $currency_model->origin_key;
// //以太坊确认提币后。返回成功执行后台操作ldh
// $chain_address = $wallet_out->address;
// if (empty($total_account) || empty($key)) {
// throw new \Exception('请检查您的币种设置:(');
// }
// if (!in_array($currency_type, ['eth', 'erc20', 'usdt', 'btc'])) {
// throw new \Exception('币种类型暂不支持:(');
// }
// if ($currency_type == 'erc20') {
// if (empty($contract_address)) {
// throw new \Exception('币种设置缺少合约地址:(');
// }
// }
// $use_chain_api = Setting::getValueByKey('use_chain_api', 0);
// if ($use_chain_api == 1) {
// //调用链上接口
// if ($verificationcode == '') {
// throw new Exception('请填写验证码');
// }
// $params = [
// 'currency_name' => $currency_model->name,
// 'chain_address' => $chain_address,
// 'real_number' => $wallet_out->real_number,
// 'total_account' => $total_account,
// 'key' => $key
// ];
// $query_str = md5(http_build_query($params));
// if (Cache::has($query_str)) {
// throw new \Exception('请勿重复操作,以免给您带来损失,建议用区块链浏览器查询该提币地址的交易记录');
// }
// Cache::put($query_str, 1, 5);
// $transfer_result = BlockChain::transfer($currency_model->name, $currency_model->type, $chain_address, $wallet_out->real_number, $total_account, $key, 3, 0, $verificationcode);
// if (isset($transfer_result['code']) && $transfer_result['code'] == 0) {
// //链上请求成功
// $wallet_out->txid = $transfer_result['txid']; //写入信息
// } else {
// throw new \Exception('链上请求出错:(' . ' 错误信息:' . $transfer_result);
// }
// }else{
// if ($txid == '') {
// throw new Exception('当前提币没有使用接口,请填写交易哈希以便于用户查询');
// }
// $wallet_out->txid = $txid;
// }
$wallet_out->status = 2;//提币成功状态
$wallet_out->notes = $notes;//反馈的信息
$wallet_out->verificationcode = $verificationcode;
$wallet_out->update_time = time();
$wallet_out->save();
$change_result = change_wallet_balance($user_wallet, 4, -$number, AccountLog::WALLETOUTDONE, '提币成功', true);
if ($change_result !== true) {
throw new Exception($change_result);
}
} else {
$wallet_out->status = 3;//提币失败状态
$wallet_out->notes = $notes;//反馈的信息
$wallet_out->verificationcode = $verificationcode;
$wallet_out->update_time = time();
$wallet_out->save();
$change_result = change_wallet_balance($user_wallet, 4, -$number, AccountLog::WALLETOUTBACK, '提币失败,锁定余额减少', true);
if ($change_result !== true) {
throw new Exception($change_result);
}
$change_result = change_wallet_balance($user_wallet, 4, $number, AccountLog::WALLETOUTBACK, '提币失败,锁定余额撤回');
if ($change_result !== true) {
throw new Exception($change_result);
}
}
DB::commit();
return $this->success('操作成功:)');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
//导出用户列表至excel
public function csv()
{
$data = USersWalletOut::all()->toArray();
return Excel::create('提币记录', function ($excel) use ($data) {
$excel->sheet('提币记录', function ($sheet) use ($data) {
$sheet->cell('A1', function ($cell) {
$cell->setValue('ID');
});
$sheet->cell('B1', function ($cell) {
$cell->setValue('账户名');
});
$sheet->cell('C1', function ($cell) {
$cell->setValue('虚拟币');
});
$sheet->cell('D1', function ($cell) {
$cell->setValue('提币数量');
});
$sheet->cell('E1', function ($cell) {
$cell->setValue('手续费');
});
$sheet->cell('F1', function ($cell) {
$cell->setValue('实际提币');
});
$sheet->cell('G1', function ($cell) {
$cell->setValue('提币地址');
});
$sheet->cell('H1', function ($cell) {
$cell->setValue('反馈信息');
});
$sheet->cell('I1', function ($cell) {
$cell->setValue('状态');
});
$sheet->cell('J1', function ($cell) {
$cell->setValue('提币时间');
});
if (!empty($data)) {
foreach ($data as $key => $value) {
$i = $key + 2;
if ($value['status'] == 1) {
$value['status'] = '申请提币';
} else if ($value['status'] == 2) {
$value['status'] = '提币成功';
} else {
$value['status'] = '提币失败';
}
$sheet->cell('A' . $i, $value['id']);
$sheet->cell('B' . $i, $value['account_number']);
$sheet->cell('C' . $i, $value['currency_name']);
$sheet->cell('D' . $i, $value['number']);
$sheet->cell('E' . $i, $value['rate']);
$sheet->cell('F' . $i, $value['real_number']);
$sheet->cell('G' . $i, $value['address']);
$sheet->cell('H' . $i, $value['notes']);
$sheet->cell('I' . $i, $value['status']);
$sheet->cell('I' . $i, $value['create_time']);
}
}
});
})->download('xlsx');
}
}
@@ -0,0 +1,172 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\{
Address, AccountLog, Currency, UsersInsurance, InsuranceType, InsuranceClaimApply, Setting, Users, UserCashInfo, UserReal, UsersWallet
};
class ClaimController extends Controller
{
public function index()
{
//保险类型
$ins_type = InsuranceType::where('status', 1)->get();
return view("admin.claim.index")->with('ins_type', $ins_type);
}
public function lists(Request $request)
{
$limit = $request->get('limit');
$start_time = $request->get('start_time', '');
$end_time = $request->get('end_time', '');
$status = $request->get('apply_status', -1);
$type = $request->get('type', -1);
$mobile = $request->get('mobile', '');
$name = $request->get('name', null);
$list = InsuranceClaimApply::where(function ($query) use ($start_time) {
if (!empty($start_time)) {
$query->where('created_at', '>=', $start_time);
}
})->where(function ($query) use ($end_time) {
if (!empty($end_time)) {
$query->where('created_at', '<=', $end_time);
}
})->where(function ($query) use ($status) {
if ($status != -1) {
$query->where('apply_status', $status);
}
})->where(function ($query) use ($type) {
if ($type != -1) {
$query->where('insurance_type', $type);
}
})->where(function ($query) use ($mobile) {
if (!empty($mobile)) {
$user = Users::where('account_number', $mobile)->first();
if (!empty($user)) {
$query->where('user_id', $user->id);
}
}
})->where(function($query) use ($name){
if(!empty($name)){
$query->whereHas('user',function ($query) use ($name){
$query->whereHas('userReal',function ($query) use ($name){
$query->where('name',$name);
});
});
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
/**
* 确认索赔
*/
public function affirm(Request $request)
{
$claim_apply_id = $request->get('id', 0);
$claim_apply = InsuranceClaimApply::find($claim_apply_id);
$admin = session()->get('admin_username');
if (!$claim_apply) {
return $this->error('错误参数');
}
if ($claim_apply->apply_status) {
return $this->error('该理赔已处理');
}
$user_insurance = UsersInsurance::where('id', $claim_apply->user_insurance_id)->first();
//保险类型
$insurance_type = $user_insurance->insurance_type;
try {
DB::beginTransaction();
$user_wallet = UsersWallet::where('user_id', $claim_apply->user_id)
->where('currency', $insurance_type->currency_id)
->lockForUpdate()
->first();
switch ($insurance_type->claim_direction) {
case 1:
//索赔清除用户受保金额
change_wallet_balance($user_wallet, 5, -$user_wallet->insurance_balance,
AccountLog::USER_CLAIM_COMPENSATION, '保险赔偿用户[清除受保金额]', false);
//将保险受保金额给予用户保险账户
change_wallet_balance($user_wallet, 5, $claim_apply->compensate,
AccountLog::USER_CLAIM_COMPENSATION, '保险赔偿用户[赔偿受保金额]', false);
break;
case 2:
//将用户的保险状态改变
$user_insurance->status = 0;
$user_insurance->rescinded_at = \Carbon\Carbon::now()->toDateTimeString();
$user_insurance->rescinded_type = 1;//解约类型
$user_insurance->save();
//索赔清除用户受保金额
change_wallet_balance($user_wallet, 5, -$user_wallet->insurance_balance,
AccountLog::USER_CLAIM_COMPENSATION, '保险赔偿用户[清除受保金额]', false);
//将保险受保金额给予用户的期权账户
change_wallet_balance($user_wallet, 4, $claim_apply->compensate,
AccountLog::USER_CLAIM_COMPENSATION, '保险赔偿用户[赔偿受保金额]', false);
change_wallet_balance($user_wallet, 5, -$user_wallet->lock_insurance_balance,
AccountLog::INSURANCE_RESCISSION2, '保险解约,扣除保险金额', true);
break;
default:
throw new \Exception('未知受保金额去向状态');
}
//更改索赔状态
$user_insurance->claim_status=0;
$user_insurance->save();
//更改申请状态
$claim_apply->apply_status = 1;
$claim_apply->operator = $admin;
$claim_apply->save();
DB::commit();
return $this->success('处理成功!');
} catch (\Exception $e) {
DB::rollBack();
return $this->error('处理失败:' . $e->getMessage());
}
}
/**
* 拒绝
*/
public function reject(Request $request)
{
$claim_apply_id = $request->get('id', 0);
$claim_apply = InsuranceClaimApply::find($claim_apply_id);
if (!$claim_apply) {
return $this->error('错误参数');
}
$user_insurance = UsersInsurance::find($claim_apply->user_insurance_id);
$refuse_reason = $request->get('refuse_reason', '');
$admin = session()->get('admin_username');
try {
DB::beginTransaction();
$user_insurance->claim_status = 0;
$user_insurance->save();
$claim_apply->refuse_reason = $refuse_reason;
$claim_apply->operator = $admin;
$claim_apply->apply_status = 2;
$claim_apply->save();
DB::commit();
return $this->success('成功');
} catch (\Exception $e) {
DB::rollBack();
return $this->success('失败:' . $e->getMessage());
}
}
}
@@ -0,0 +1,55 @@
<?php
namespace App\Http\Controllers\Admin;
use App\CoinTrade;
use Illuminate\Http\Request;
use App\Logic\CoinTradeLogic;
class CoinTradeController extends Controller
{
public function tradeList(Request $request){
$where = [];
$account = $request->get('search','');
$limit = $request->get('limit', 20);
$status = $request->get('status');
$type = $request->get('type');
if($status){
$where['coin_trade.status'] = $status;
}
if($type){
$where['coin_trade.type'] = $type;
}
$res = CoinTrade::join('users as u','u_id','=','u.id')
->join('currency as c','currency_id' ,'=','c.id')
->join('currency as l','legal_id','=','l.id')
->where($where)
->where(function($q)use($account){
if($account){
$q->where('u.account_number','=',$account)->orWhere('u.email','=',$account);
}})
->select(['u.id','u.account_number','coin_trade.*','l.name as legal_name','c.name as currency_name'])
->orderBy('coin_trade.id','desc')
->paginate($limit);
return $this->layuiData($res);
}
public function finishTrade(Request $request){
$id = $request->get('id');
$coinTrade = CoinTrade::find($id);
if($coinTrade->status != 1){
return $this->error('不在交易中状态');
}
try{
CoinTradeLogic::forceMatchTrade($coinTrade->id);
}catch (\Exception $e){
return $this->error($e->getMessage());
}
return $this->success('操作成功');
}
public function index(){
return view('admin.cointrade.index');
}
}
+51
View File
@@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
public function ajaxReturn($data='', $info='', $status=0)
{
$result = array(
'data' => $data, //数据或其它信息
'info' => $info, //提示信息
'status' => $status //1成功, 0失败
);
return response()->json($result);
}
public function error($message)
{
return response()->json(['type' => 'error', 'message' => $message]);
}
public function success($message)
{
return response()->json(['type' => 'ok', 'message' => $message]);
}
public function layuiData($paginateObj,$extra_data = '')
{
return response()->json([
'code' => 0,
'msg' => '',
'count' => $paginateObj->total(),
'data' => $paginateObj->items(),
'extra_data' => $extra_data,
]);
}
public function layui_table($pagination)
{
$count = $pagination->total();
$items = $pagination->items();
$result = array(
'code' => 0,
'msg' => '',
'count' => $count,
'data' => $items,
);
return json_encode($result);
}
}
@@ -0,0 +1,785 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\Currency;
use App\CurrencyClass;
use App\CurrencyMatch;
use App\CurrencyContact;
use App\Setting;
use App\UsersWallet;
use App\Users;
class CurrencyController extends Controller
{
public function cclass()
{
return view('admin.currency.class');
}
public function index()
{
return view('admin.currency.index');
}
public function add(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new Currency();
} else {
$result = Currency::find($id);
}
// $result->price_max = Setting::getValueByKey($result->name.'_PRICE_MAX', 0);
// $result->price_min = Setting::getValueByKey($result->name.'_PRICE_MIN', 0);
return view('admin.currency.add')->with('result', $result);
}
public function class_transfer(Request $request){
$id = $request->get('id', 0);
$currency = CurrencyClass::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->is_display == 1) {
$currency->is_display = 0;
} else {
$currency->is_display = 1;
}
try {
$currency->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function is_open(Request $request){
$id = $request->get('id', 0);
$currency = Currency::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->is_open == 1) {
$currency->is_open = 0;
$data['is_open'] = 0;
} else {
$currency->is_open = 1;
$data['is_open'] = 1;
}
try {
$currency->save();
CurrencyMatch::where('currency_id', $id)->update($data);
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function is_transfer(Request $request){
$id = $request->get('id', 0);
$currency = Currency::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->is_transfer == 1) {
$currency->is_transfer = 0;
} else {
$currency->is_transfer = 1;
}
try {
$currency->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function postAdd(Request $request)
{
$address_erc=$request->get('address_erc')??"";
$address_omni=$request->get('address_omni')??"";
$issue_num=$request->get('issue_num',0)??0;
$content=$request->get('content','')??'';
$id = $request->get('id', 0);
$name = $request->get('name', '');
$real_name = $request->get('real_name', '');
$vcode= $request->get('vcode', '');
$sort = $request->get('sort', 0) ?? 0;
$logo = $request->get('logo', '') ?? '';
$type = $request->get('type', '') ?? '';
$is_legal = $request->get('is_legal', 0) ?? 0;
$is_lever = $request->get('is_lever', 0) ?? 0;
$is_match = $request->get('is_match', 0) ?? 0;
$is_micro = $request->get('is_micro', 0);
$micro_min = $request->get('micro_min', 0);
$micro_max = $request->get('micro_max', 0);
$micro_holdtrade_max = $request->input('micro_holdtrade_max', 0); //最大下单笔数
$price = $request->get('price', 0);
$min_number = $request->get('min_number',0);
$max_number = $request->get('max_number', 0);
$rate = $request->get('rate', 0) ?? 0;
$rmb_relation = $request->get('rmb_relation', 0) ?? 0;
//$total_account = $request->get('total_account', '') ?? '';
$micro_trade_fee = $request->get('micro_trade_fee', 0)??0;
//$key = $request->get('key', '') ?? '';
$contract_address = $request->get('contract_address', '') ?? '';
$decimal_scale = $request->get('decimal_scale', 18);
$chain_fee = $request->get('chain_fee', 0);
$insurancable = $request->get('insurancable', 0);
$verificationcode = $request->input('verificationcode', '');
$enabled = $request->get('enabled', 0);
$min_unit = $request->get('min_unit', 0);
$count = $request->get('count', 0);
// $price_max = $request->get('price_max',2);
// $price_min = $request->get('price_min',1);
//自定义验证错误信息
$messages = [
'required' => ':attribute 为必填字段',
];
$validator = Validator::make($request->all(), [
'name' => 'required',
'sort' => 'required',
'type' => 'required',
], $messages);
try {
DB::beginTransaction();
$projectname = config('app.name');
//如果验证不通过
if ($validator->fails()) {
throw new \Exception($validator->errors()->first());
}
$currency = Currency::findOrNew($id);
$has = Currency::where('name', $name)->first();
if (empty($id) && !empty($has)) {
throw new \Exception('币种 ' . $name . ' 已存在');
}
// $chain_client = app('LbxChainServer');
// if ($currency->total_account != $total_account) {
// if ($verificationcode == '') {
// throw new \Exception('请先填写验证码再操作');
// } else {
// $uri = '/v3/wallet/changeaddress';
// $response = $chain_client->request('post', $uri, [
// 'form_params' => [
// 'projectname' => $projectname,
// 'coin' => strtoupper($currency->type),
// 'address' => $total_account,
// 'verificationcode' => $verificationcode,
// ],
// ]);
// $result = json_decode($response->getBody()->getContents(), true);
// if (!isset($result['code']) || $result['code'] != 0) {
// throw new \Exception($result['msg'] ?? '请求发生错误');
// }
// }
// }
$currency->address_omni=$address_omni;
$currency->address_erc=$address_erc;
$currency->micro_trade_fee=$micro_trade_fee;
$currency->issue_num=$issue_num;
$currency->content=$content;
$currency->name = $name;
$currency->real_name = $real_name;
$currency->vcode = $vcode;
$currency->sort = intval($sort);
$currency->logo = $logo;
$currency->is_legal = $is_legal;
$currency->is_lever = $is_lever;
$currency->is_match = $is_match;
$currency->is_micro = $is_micro;
$currency->min_number = $min_number;
$currency->max_number = $max_number;
$currency->micro_holdtrade_max = $micro_holdtrade_max;
$currency->rate = $rate;
$currency->price = $price;
$currency->micro_min = $micro_min;
$currency->micro_max = $micro_max;
$currency->rmb_relation = $rmb_relation;
//$currency->total_account = $total_account;
$currency->decimal_scale = $decimal_scale;
$currency->insurancable = $insurancable;
$currency->chain_fee = $chain_fee; //链上手续费
// if ($key != '********' ) {
// $uri = '/v3/wallet/encrypt';
// $response = $chain_client->request('post', $uri, [
// 'form_params' => [
// 'projectname' => $projectname,
// 'p' => $key,
// ],
// ]);
// $result = json_decode($response->getBody()->getContents(), true);
// if (!isset($result['code']) || $result['code'] != 0) {
// throw new \Exception($result['msg'] ?? '请求发生错误');
// }
// $currency->key = $result['data']['k'];
// }
$oldmin_unit=$currency->min_unit;
$oldcount=$currency->count;
$currency->enabled = $enabled;
$currency->min_unit = $min_unit;
$currency->count = $count;
$currency->contract_address = $contract_address;
$currency->type = $type;
$currency->is_display = 1;
if($enabled==1){
if($min_unit!=$oldmin_unit || $count!=$oldcount){
// $currency->yujicontact= bcadd($currency->oncontact,$count,4);
$currency->oncontact=0;
}
}else{
$currency->yujicontact=0;
$currency->oncontact=0;
}
$result = $currency->save();//保存币种
if($result){
CurrencyContact::where('currency_id', $id)->delete();
$data['sort'] = intval($sort);
CurrencyMatch::where('currency_id', $id)->update($data);
}
// Setting::updateValueByKey($currency->name.'_PRICE_MAX', $price_max);
// Setting::updateValueByKey($currency->name.'_PRICE_MIN', $price_min);
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error('操作失败:' . $exception->getMessage());
}
}
public function setInAddress(Request $request)
{
$id = $request->route('id', 0);
$currency = Currency::findOrFail($id);
return view('admin.currency.set_in_address', [
'currency' => $currency,
]);
}
public function setOutAddress(Request $request)
{
$id = $request->route('id', 0);
$currency = Currency::findOrFail($id);
return view('admin.currency.set_out_address', [
'currency' => $currency,
]);
}
/**
* 设置转入钱包地址
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function postSetInAddress(Request $request)
{
try {
$id = $request->input('id', 0);
$verificationcode = $request->input('verificationcode', '');
$collect_account = $request->input('collect_account', '');
$currency = Currency::findOrFail($id);
if ($verificationcode == '') {
throw new \Exception('请先填写验证码再操作');
}
if ($collect_account == '' || $collect_account == $currency->total_account) {
throw new \Exception('转入地址不能为空或与转出地址相同');
}
$projectname = config('app.name');
$chain_client = app('LbxChainServer');
// 更改转入地址
$uri = '/v3/wallet/changeinaddress';
$response = $chain_client->request('post', $uri, [
'form_params' => [
'projectname' => $projectname,
'coin' => strtoupper($currency->type),
'address' => $collect_account,
'verificationcode' => $verificationcode,
],
]);
$result = json_decode($response->getBody()->getContents(), true);
if (!isset($result['code']) || $result['code'] != 0) {
throw new \Exception($result['msg'] ?? '请求发生错误');
}
$currency->collect_account = $collect_account;
$currency->save();
return $this->success('操作完成');
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 设置转出钱包地址
*
* @param Request $request
* @return \Illuminate\Http\Response
*/
public function postSetOutAddress(Request $request)
{
try {
$id = $request->input('id', 0);
$verificationcode = $request->input('verificationcode', '');
$total_account = $request->input('total_account', '');
$key = $request->input('key', '');
$encrypt_key = '';
$currency = Currency::findOrFail($id);
if ($verificationcode == '') {
throw new \Exception('请先填写验证码再操作');
}
if ($total_account == '' || $total_account == $currency->collect_account) {
throw new \Exception('转出地址不能为空或与归拢地址不能相同');
}
$projectname = config('app.name');
$chain_client = app('LbxChainServer');
// 更改转出地址
$uri = '/v3/wallet/changeoutaddress';
$response = $chain_client->request('post', $uri, [
'form_params' => [
'projectname' => $projectname,
'coin' => strtoupper($currency->type),
'address' => $total_account,
'verificationcode' => $verificationcode,
],
]);
$result = json_decode($response->getBody()->getContents(), true);
if (!isset($result['code']) || $result['code'] != 0) {
throw new \Exception($result['msg'] ?? '请求发生错误');
}
$auto_encrypt_private = Setting::getValueByKey('auto_encrypt_private', 1);
if ($key != '********' && $key != '') {
if ($auto_encrypt_private) {
$uri = '/v3/wallet/encrypt';
$response = $chain_client->request('post', $uri, [
'form_params' => [
'projectname' => $projectname,
'p' => $key,
],
]);
$result = json_decode($response->getBody()->getContents(), true);
if (!isset($result['code']) || $result['code'] != 0) {
throw new \Exception($result['msg'] ?? '请求发生错误');
}
$encrypt_key = $result['data']['k'];
} else {
$encrypt_key = '';
}
}
$currency->key = $encrypt_key;
$currency->total_account = $total_account;
$currency->save();
return $this->success('操作完成');
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->get('limit', 20);
$insurable = $request->get('insurancable', null);
$result = new Currency();
if($insurable){
$result->where('insurancable',1);
}
// $account_number = $request->get('account_number','');
$result = $result->orderBy('sort', 'asc')->paginate($limit);
return $this->layuiData($result);
}
public function listsclass(Request $request)
{
$limit = $request->get('limit', 20);
$insurable = $request->get('is_display', null);
$result = new CurrencyClass();
if($insurable){
$result->where('is_display',1);
}
// $account_number = $request->get('account_number','');
$result = $result->orderBy('sort', 'asc')->paginate($limit);
return $this->layuiData($result);
}
public function delete(Request $request)
{
$id = $request->get('id', 0);
$acceptor = Currency::find($id);
if (empty($acceptor)) {
return $this->error('无此币种');
}
try {
$acceptor->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function isDisplay(Request $request)
{
$id = $request->get('id', 0);
$currency = Currency::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->is_display == 1) {
$currency->is_display = 0;
} else {
$currency->is_display = 1;
}
try {
$currency->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function isInsurancable(Request $request)
{
$id = $request->get('id', 0);
$currency = Currency::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->insurancable == 1) {
$currency->insurancable = 0;
} else {
$currency->insurancable = 1;
}
try {
$currency->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function executeCurrency(Request $request)
{
$id = intval($request->get('id', 0));
$is_execute = Setting::getValueByKey('currency_' . $id, 0);
if ($is_execute == 1) {
return $this->error('该币上币程序正在后台执行中');
} elseif ($is_execute == 2) {
return $this->error('该币已经运行过上币程序');
} else {
$path = base_path();
$process = new Process('nohup php artisan execute_currency ' . $id . ' >./execute_currency.log 2>&1 &', $path); //第一个参数是运行的命令,命令方式跟 Linux 一致,第二个参数是可以执行此条命令的路径
//上边那个是交易所的上币逻辑,下边这个是钱包的上币逻辑
//$process = new Process('nohup php artisan make_wallet ' . $id . ' >./execute_currency.log 2>&1 &', $path); //第一个参数是运行的命令,命令方式跟 Linux 一致,第二个参数是可以执行此条命令的路径
$process->run();
return $this->success('开始在后台执行上币脚本');
}
}
/**
* 交易对显示
*
* @return void
*/
public function match()
{
return view('admin.currency.match');
}
public function matchList(Request $request)
{
$legal_id = $request->route('legal_id');
$limit = $request->input('limit', 10);
$legal = Currency::find($legal_id);
$matchs = $legal->quotation()->paginate($limit);
return $this->layuiData($matchs);
}
public function addMatch($legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
abort(403, '指定币种不是法币,不能添加交易对');
}
$currencies = Currency::where('id', '<>', $legal_id)->get();
$market_from_names = CurrencyMatch::enumMarketFromNames();
return view('admin.currency.match_add')->with('currencies', $currencies)
->with('market_from_names', $market_from_names);
}
public function postAddMatch(Request $request, $legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
return $this->error('指定币种不是法币,不能添加交易对');
}
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$open_microtrade = $request->input('open_microtrade', 0);
$open_coin_trade = $request->input('open_coin_trade', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$coin_trade_success = $request->input('coin_trade_success', 0);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
$lever_min_share = $request->input('lever_min_share', 0);
$lever_max_share = $request->input('lever_max_share', 0);
$fluctuate_min = $request->input('fluctuate_min', 0);
$fluctuate_max = $request->input('fluctuate_max', 0);
$risk_group_result = $request->input('risk_group_result', 0);
$cate = $request->input('category');
$min = $request->input('min',0);
//检测交易对是否已存在
$exist = CurrencyMatch::where('currency_id', $currency_id)
->where('legal_id', $legal_id)
->first();
if ($exist) {
return $this->error('对应交易对已存在');
}
CurrencyMatch::unguard();
$currency_match = CurrencyMatch::create([
'legal_id' => $legal_id,
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'open_microtrade' => $open_microtrade,
'open_coin_trade' => $open_coin_trade,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'fluctuate_min' => $fluctuate_min,
'fluctuate_max' => $fluctuate_max,
'risk_group_result' => $risk_group_result,
'spread' => $spread,
'overnight' => $overnight,
'lever_min_share' => $lever_min_share,
'lever_max_share' => $lever_max_share,
'category' => $cate,
'min' => $min,
'create_time' => time(),
'coin_trade_success' => $coin_trade_success,
]);
CurrencyMatch::reguard();
$all=DB::table("currency_matches")->where("market_from",1)->where("is_display",1)->select("id","currency_id","legal_id")->get();
$all=json_decode(json_encode($all),true);
foreach ($all as $k=>$v){
$one=DB::table("currency")->where("id",$v["currency_id"])->select("name")->first();
$legal=DB::table("currency")->where("id",$v["legal_id"])->select("name")->first();
$all[$k]["name"]=$one->name;
$all[$k]["legal_name"]=$legal->name;
}
$str="<?php".PHP_EOL;
$str.='return ['.PHP_EOL;
$str.='"tasks_matches"=>['.PHP_EOL;
foreach ($all as $k=>$v){
if($k>0){
$str.=','.PHP_EOL;
}
$str.='['.PHP_EOL;
$str.='"id"=>'.$v["id"].','.PHP_EOL;
$str.='"currency_id"=>'.$v["currency_id"].','.PHP_EOL;
$str.='"legal_id"=>'.$v["legal_id"].','.PHP_EOL;
$str.='"name"=>"'.$v["name"].'"'.','.PHP_EOL;
$str.='"legal_name"=>"'.$v["legal_name"].'"'.PHP_EOL;
$str.=']';
}
// $str.=json_encode($all).PHP_EOL;
$str.=']'.PHP_EOL.'];'.PHP_EOL;
WFile("../config/tasks_matches.php",$str);
return isset($currency_match->id) ? $this->success('添加成功') : $this->error('添加失败');
}
public function editMatch($id)
{
$currency_match = CurrencyMatch::where('currency_id',$id)->first();
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
$market_from_names = CurrencyMatch::enumMarketFromNames();
$currencies = Currency::where('id', '<>', $currency_match->legal_id)->get();
$var = compact('currency_match', 'currencies', 'market_from_names');
return view('admin.currency.match_add', $var);
}
public function postEditMatch(Request $request, $id)
{
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$open_microtrade = $request->input('open_microtrade', 0);
$open_coin_trade = $request->input('open_coin_trade', 0);
$coin_trade_success = $request->input('coin_trade_success', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
$lever_min_share = $request->input('lever_min_share', 0);
$lever_max_share = $request->input('lever_max_share', 0);
$fluctuate_min = $request->input('fluctuate_min', 0);
$fluctuate_max = $request->input('fluctuate_max', 0);
$risk_group_result = $request->input('risk_group_result', 0);
$cate = $request->input('category');
$min = $request->input('min',0);
$currency_match = CurrencyMatch::where('currency_id',$id)->first();//CurrencyMatch::find($id);
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
CurrencyMatch::unguard();
$result = $currency_match->fill([
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'open_microtrade' => $open_microtrade,
'open_coin_trade' => $open_coin_trade,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'fluctuate_min' => $fluctuate_min,
'fluctuate_max' => $fluctuate_max,
'risk_group_result' => $risk_group_result,
'spread' => $spread,
'overnight' => $overnight,
'lever_min_share' => $lever_min_share,
'lever_max_share' => $lever_max_share,
'category' => $cate,
'min' => $min,
'create_time' => time(),
'coin_trade_success' => $coin_trade_success,
])->save();
CurrencyMatch::reguard();
$all=DB::table("currency_matches")->where("market_from",1)->where("is_display",1)->select("id","currency_id","legal_id")->get();
$all=json_decode(json_encode($all),true);
foreach ($all as $k=>$v){
$one=DB::table("currency")->where("id",$v["currency_id"])->select("name")->first();
$legal=DB::table("currency")->where("id",$v["legal_id"])->select("name")->first();
$all[$k]["name"]=$one->name;
$all[$k]["legal_name"]=$legal->name;
}
$str="<?php".PHP_EOL;
$str.='return ['.PHP_EOL;
$str.='"tasks_matches"=>['.PHP_EOL;
foreach ($all as $k=>$v){
if($k>0){
$str.=','.PHP_EOL;
}
$str.='['.PHP_EOL;
$str.='"id"=>'.$v["id"].','.PHP_EOL;
$str.='"currency_id"=>'.$v["currency_id"].','.PHP_EOL;
$str.='"legal_id"=>'.$v["legal_id"].','.PHP_EOL;
$str.='"name"=>"'.$v["name"].'"'.','.PHP_EOL;
$str.='"legal_name"=>"'.$v["legal_name"].'"'.PHP_EOL;
$str.=']';
}
// $str.=json_encode($all).PHP_EOL;
$str.=']'.PHP_EOL.'];'.PHP_EOL;
WFile("../config/tasks_matches.php",$str);
return $result ? $this->success('保存成功') : $this->error('保存失败');
}
public function delMatch($id)
{
$result = CurrencyMatch::destroy($id);
$all=DB::table("currency_matches")->where("market_from",1)->where("is_display",1)->select("id","currency_id","legal_id")->get();
$all=json_decode(json_encode($all),true);
foreach ($all as $k=>$v){
$one=DB::table("currency")->where("id",$v["currency_id"])->select("name")->first();
$legal=DB::table("currency")->where("id",$v["legal_id"])->select("name")->first();
$all[$k]["name"]=$one->name;
$all[$k]["legal_name"]=$legal->name;
}
$str="<?php".PHP_EOL;
$str.='return ['.PHP_EOL;
$str.='"tasks_matches"=>['.PHP_EOL;
foreach ($all as $k=>$v){
if($k>0){
$str.=','.PHP_EOL;
}
$str.='['.PHP_EOL;
$str.='"id"=>'.$v["id"].','.PHP_EOL;
$str.='"currency_id"=>'.$v["currency_id"].','.PHP_EOL;
$str.='"legal_id"=>'.$v["legal_id"].','.PHP_EOL;
$str.='"name"=>"'.$v["name"].'"'.','.PHP_EOL;
$str.='"legal_name"=>"'.$v["legal_name"].'"'.PHP_EOL;
$str.=']';
}
// $str.=json_encode($all).PHP_EOL;
$str.=']'.PHP_EOL.'];'.PHP_EOL;
WFile("../config/tasks_matches.php",$str);
return $result ? $this->success('删除成功') : $this->error('删除失败');
}
public function microMatch(Request $request)
{
return view('admin.setting.currency_risk');
}
public function microMatchList(Request $request)
{
$limit = $request->input('limit', 10);
$risk = $request->input('risk', -2);
$currency_match = CurrencyMatch::where('open_microtrade', 1)
->when($risk != -2, function ($query) use ($risk) {
$query->where('risk_group_result', $risk);
})
->paginate($limit);
$items = $currency_match->getCollection();
$items->transform(function ($item, $key) {
return $item->append('risk_group_result_name');
});
$currency_match->setCollection($items);
return $this->layuiData($currency_match);
}
public function microRisk(Request $request)
{
$ids = $request->input('ids', []);
$risk = $request->input('risk', 0);
$affect_rows = CurrencyMatch::whereIn('id', $ids)->update(['risk_group_result' => $risk]);
return $this->success($affect_rows . '个交易对设置成功');
}
}
@@ -0,0 +1,130 @@
<?php
namespace App\Http\Controllers\Admin;
use App\CurrencyDepositOrder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Currency;
use App\CurrencyDeposit;
use App\LhDepositOrder;
class CurrencyDepositController extends Controller
{
public function currencyConfig(Request $request){
$currencyId = $request->route('currency_id');
$limit = $request->get('limit', 20);
// var_dump($currencyId);exit;
$list = CurrencyDeposit::where('currency_id',$currencyId)->orderBy('id', 'asc')->paginate($limit);
return $this->layuiData($list);
}
public function newConfig(Request $request){
$currencyId = $request->get('currency_id');
$day = $request->get('day');
$rate = $request->get('rate');
$save_min = $request->get('save_min');
$output = $request->get('out_currency_id');
$res = DB::table('currency_deposit')->where('currency_id',$currencyId)->where('day',$day)->where('output_currency_id',$output)->first();
if($res){
return $this->error('存在重复的期限');
}
DB::table('currency_deposit')->insert([
'day' => $day,
'output_currency_id' => $output,
'total_interest_rate' => $rate,
'currency_id' => $currencyId,
'save_min' => $save_min,
'created_at' => date('Y-m-d H:i:s')
]);
return $this->success('创建成功');
}
public function deleteConfig(Request $request){
$configId = $request->get('id');
DB::table('currency_deposit')->where('id',$configId)->delete();
return $this->success('删除成功');
}
public function editConfig(Request $request){
$configId = $request->get('id');
$day = $request->get('day');
$rate = $request->get('rate');
$save_min = $request->get('save_min');
$model = DB::table('currency_deposit')->where('id',$configId)->first();
if(!$model){
return $this->error('找不到次期限');
}
$res = DB::table('currency_deposit')->where('id','<>',$configId)->where('currency_id',$model->currency_id)->where('day',$day)->first();
if($res){
return $this->error('存在重复的期限');
}
DB::table('currency_deposit')->where('id',$configId)->update([
'day' => $day,
// 'total_rate' => $rate,
'total_interest_rate' => $rate,
'save_min' => $save_min,
// 'created_at' => date('Y-m-d H:i:s')
]);
return $this->success('创建成功');
}
public function orderList(Request $request){
$account = $request->get('account_number');
$currencyId = $request->get('currency_id');
$status = $request->get('status');
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$where = [];
if($currencyId){
$where['currency_id'] = $currencyId;
}
if($status){
$where['lh_deposit_order.status'] = $status;
}
// $model = new CurrencyDepositOrder();
// $list = $model->join('users','users.id','=','u_id')->join('currency','currency.id','=','currency_id')
// ->where(function($q)use($account){
// if($account){
// $q->where('users.account_number','=',$account)->orWhere('users.email','=',$account);
// }
// })->where($where)->orderBy('currency_deposit_order.created_at','desc')
// ->select(['currency.name as currency_name','users.account_number','currency_deposit_order.*'])
// ->paginate($limit);
// $list = LhDepositOrder::join('currency','currency.id','=','currency_id')
// ->where($where)
// ->orderBy('lh_deposit_order.id','desc')
// ->skip($limit*($page-1))->take($limit)
// ->get(['currency.name as currency_name','lh_deposit_order.id','amount','day_rate','total_interest','start_at','end_at','status'])
// ->paginate($limit);
$model = new LhDepositOrder();
$list = $model->join('users','users.id','=','user_id')->join('currency','currency.id','=','currency_id')
->where(function($q)use($account){
if($account){
$q->where('users.account_number','=',$account)->orWhere('users.email','=',$account);
}
})->where($where)->orderBy('lh_deposit_order.created_at','desc')
->select(['currency.name as currency_name','users.account_number','lh_deposit_order.*'])
->paginate($limit);
return $this->layuiData($list);
}
public function orderView(){
return view('admin.currency.order_list');
}
public function addConfigView(Request $request){
$currencies = Currency::where('id', '>', 0)->get();
return view('admin.currency.add_config')->with('currencies', $currencies);
}
public function editConfigView(Request $request){
return view('admin.currency.edit_config');
}
public function configView(){
return view('admin.currency.config');
}
}
@@ -0,0 +1,244 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Currency;
use App\CurrencyProjectOrder;
use App\CurrencyProject;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\UsersWallet;
use App\AccountLog;
use Illuminate\Support\Facades\Input;
class CurrencyProjectController extends Controller
{
public function projectDetail(Request $request){
$id = $request->get('project_id');
$project = CurrencyProject::find($id);
return $this->success($project);
}
public function projectList(Request $request){
$limit = $request->get('limit', 20);
$model = new CurrencyProject();
$currency_id = $request->get('currency_id');
$where = [];
if($currency_id){
$where['currency_id'] = $currency_id;
}
$list = $model->where($where)->paginate($limit);
return $this->layuiData($list);
}
public function newProject(Request $request){
$currencyId = $request->get('currency_id');
$payCurrencyId = $request->get('pay_currency_id');
$title = $request->get('title');
$summary = $request->get('summary');
$content = $request->get('content');
$startAt = $request->get('start_at');
$endAt = $request->get('end_at');
$whiteBook = $request->get('white_book');
$price = $request->get('price');
$link = $request->get('link');
$logo = $request->get('logo');
$min = $request->get('min',0);
$amount = $request->get('amount');
$sellBegin = $request->get('sell_begin',null);
if(empty($amount) ||empty($currencyId) || empty($title) || empty($summary) || empty($content) || empty($startAt) || empty($endAt) || empty($whiteBook) || empty($link)){
return $this->error('内容不能为空');
}
$currency = Currency::find($currencyId);
if(!$currency){
return $this->error('币种不存在');
}
$payCurrency = Currency::find($payCurrencyId);
if(!$payCurrency){
return $this->error('支付币种不存在');
}
// $res = CurrencyProject::where('currency_id',$currencyId)->first();
// if($res){
// return $this->error('该币种已成立项目,不能重复');
// }
if(strtotime($startAt) < time() || strtotime($endAt) < time()){
return $this->error('开始时间与结束时间不得早于当前时间');
}
if($sellBegin && strtotime($sellBegin) < strtotime($endAt)){
return $this->error('配售时间不得早于结束时间');
}
if(empty($request->input('total_apply')) || empty($request->input('win_rate'))){
return $this->error('中奖配置不能为空');
}
CurrencyProject::insert([
'currency_id' => $currencyId,
'title' => $title,
'summary' => $summary,
'content' => $content,
'white_book' => $whiteBook,
'link' => $link,
'price' => $price,
'pay_currency_id' => $payCurrencyId,
'start_at' => $startAt,
'end_at' => $endAt,
'logo' => $logo,
'sell_begin' => $sellBegin,
'min' => $min,
'amount' => $amount,
'sell_amount' => $request->input('sell_amount',0),
'total_apply' => $request->input('total_apply'),
'win_rate' => $request->input('win_rate')
]);
return $this->success('创建成功');
}
public function editProject(Request $request){
$projectId = $request->get('project_id');
$title = $request->get('title');
$summary = $request->get('summary');
$content = $request->get('content');
$startAt = $request->get('start_at');
$price = $request->get('price');
$endAt = $request->get('end_at');
$whiteBook = $request->get('white_book');
$logo = $request->get('logo');
$link = $request->get('link');
$min = $request->get('min',0);
$sellBegin = $request->get('sell_begin',null);
$amount = $request->get('amount',0);
if(empty($amount) || empty($projectId) || empty($title) || empty($summary) || empty($content) || empty($startAt) || empty($endAt) || empty($whiteBook) || empty($link)){
return $this->error('内容不能为空');
}
$project = CurrencyProject::find($projectId);
if(!$project){
return $this->error('找不到此项目');
}
if(strtotime($project->start_at) < time()){
// return $this->error('项目已开启,不可编辑');
}
if($project->status == 2){
return $this->error('此项目已完结');
}
if($sellBegin && strtotime($sellBegin) < strtotime($endAt)){
return $this->error('配售时间不得早于结束时间');
}
$data = [
'title' => $title,
'summary' => $summary,
'content' => $content,
'white_book' => $whiteBook,
'price' => $price,
'link' => $link,
'start_at' => $startAt,
'logo' => $logo,
'end_at' => $endAt,
'sell_begin' => $sellBegin,
'min' => $min,
'amount' =>$amount,
'sell_amount' => $request->input('sell_amount',0),
'total_apply' => $request->input('total_apply'),
'win_rate' => $request->input('win_rate')
];
CurrencyProject::where('id',$projectId)->update($data);
return $this->success('创建成功');
}
public function projectOrderList(Request $request){
$id = $request->get('project_id');
$project = CurrencyProject::find($id);
$limit = $request->get('limit');
$type = $request->get('type');
$search = $request->get('search');
$status = $request->get('status');
if(!$project){
return $this->error('找不到项目');
}
$where = [];
if($type){
$where['currency_project_order.type'] = $type;
}
if($status){
$where['currency_project_order.status'] = $status;
}
$model = CurrencyProjectOrder::join('users','users.id','=','u_id');
if($search){
$model = $model->where("phone", 'like', '%' . $account . '%')
->orwhere('email', 'like', '%' . $account . '%')
->orWhere('account_number', 'like', '%' . $account . '%');
}
$orders =$model->where('project_id',$id)->where($where)
->select(['currency_project_order.*','users.account_number'])->paginate($limit);
return $this->layuiData($orders);
}
public function confirmSell(Request $request){
$order_id = $request->get('order_id');
$amount = $request->get('amount');
if(empty($order_id) || empty($amount)){
return $this->error('参数错误');
}
$order = CurrencyProjectOrder::find($order_id);
if(!$order){
return $this->error('找不到订单');
}
if($order->type != 3){
return $this->error('订单类型异常');
}
if($order->status != 2){
return $this->error('订单状态异常');
}
$price = bc_div($order->total_price,$amount,8);
$op_wallet = UsersWallet::where('user_id',$order->u_id)
->where('currency',$order->currency_id)
->first();
DB::beginTransaction();
try{
$result = change_wallet_balance($op_wallet,
4,
$amount,
AccountLog::IEO_OPERATION,
'ieo order');
$order->price = $price;
$order->coin_amount = $amount;
$order->status = 3;
$order->save();
DB::commit();
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage());
}
return $this->success('success');
}
public function confirmSellView(){
return view('admin.currency.confirm_sell');
}
public function projectOrderView(){
return view('admin.currency.project_orders');
}
public function projectView(){
return view('admin.currency.project_list');
}
public function projectDetailView(){
$id = Input::get('id',0);
$info = null;
if ($id){
$info = CurrencyProject::find($id);
}
$currencies = Currency::where('id', '>', 0)->get();
return view('admin.currency.project_detail')->with('currencies', $currencies)
->with('info',$info);
}
}
@@ -0,0 +1,89 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Symfony\Component\Process\Process;
use App\Admin;
use App\AdminRole;
use App\AdminRolePermission;
use App\Users;
class DefaultController extends Controller
{
public function login()
{
$username = Input::get('username', '');
$password = Input::get('password', '');
if (empty($username)) {
return $this->error('用户名必须填写');
}
if (empty($password)) {
return $this->error('密码必须填写');
}
$password = Users::MakePassword($password);
$admin = Admin::where('username', $username)->where('password', $password)->first();
if (empty($admin)) {
return $this->error('用户名密码错误');
} else {
$role = AdminRole::find($admin->role_id);
if (empty($role)) {
return $this->error('账号异常');
} else {
session()->put('admin_username', $admin->username);
session()->put('admin_id', $admin->id);
session()->put('admin_role_id', $admin->role_id);
session()->put('admin_is_super', $role->is_super);
return $this->success('登陆成功');
}
}
}
public function login1()
{
return view('admin.login1');
}
public function index()
{
$admin_role = AdminRolePermission::where("role_id", session()->get('admin_role_id'))->get();
$admin_role_data = array();
foreach ($admin_role as $r) {
array_push($admin_role_data, $r->action);
}
return view('admin.indexnew')->with("admin_role_data", $admin_role_data);;
}
public function indexnew()
{
$admin_role = AdminRolePermission::where("role_id", session()->get('admin_role_id'))->get();
$admin_role_data = array();
foreach ($admin_role as $r) {
array_push($admin_role_data, $r->action);
}
return view('admin.index')->with("admin_role_data", $admin_role_data);;
}
public function getVerificationCode(Request $request)
{
$http_client = app('LbxChainServer');
$uri = '/v3/wallet/verification';
$response = $http_client->request('post', $uri, [
'form_params' => [
'projectname' => config('app.name'),
],
]);
$result = json_decode($response->getBody()->getContents(), true);
if (isset($result['code']) && $result['code'] == 0) {
return $this->success('发送成功');
} else {
return $this->error($result['msg']);
}
}
}
@@ -0,0 +1,259 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Symfony\Component\Process\Process;
use App\Admin;
use App\Users;
use App\Currency;
use App\DualCurrency;
use App\DualOrder;
use Illuminate\Support\Facades\DB;
class DualController extends Controller
{
private $Month_E = array('01' => "Jan",
'02' => "Feb",
'03' => "Mar",
'04' => "Apr",
'05' => "May",
'06' => "Jun",
'07' => "Jul",
'08' => "Aug",
'09' => "Sep",
'10' => "Oct",
'11' => "Nov",
'12' => "Dec");
public function index(){
return view('admin.dual.index');
}
public function order(){
return view('admin.dual.order');
}
//订单列表
public function order_lists(Request $request){
$limit = $request->get('limit', 20);
$orderid = $request->get('orderid');
$user_id = $request->get('user_id');
$status = $request->get('status');
$list = DB::table('dual_order')->join('dual_currency', 'dual_currency.id', '=', 'dual_order.dual_id');
if($orderid){
$list->where('dual_order.orderid','LIKE','%'.$orderid.'%');
}
if($status){
$list->where('dual_order.status',$status);
}
if($user_id){
$list->where('dual_order.user_id',$user_id);
}
$list = $list->select('dual_order.*','dual_currency.days')->orderBy('dual_order.id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function add(){
$currencies = Currency::where('is_legal', 1)->get();
return view('admin.dual.add')->with('currencies', $currencies);
}
public function editDualView(Request $request){
$id = $request->get('id');
if(empty($id)){
return $this->error('参数错误');
}
$dual_currency = DualCurrency::where(['id'=>$id])->first();
$invest = $dual_currency->invest;
$currencies = Currency::where('is_legal', 1)->get();
// dump($dual_currency);die;
return view('admin.dual.edit_dual',['results' => $dual_currency])->with('currencies', $currencies)->with('invest', $invest);
}
//编辑项目
public function editDual(Request $request){
$id = $request->post('id');
$name = $request->post('name');
$days = $request->post('days');
$rate = $request->post('rate');
$ratemax = $request->post('ratemax');
$amount = $request->post('amount');
$amax = $request->post('amax');
$status = $request->post('status');
$hot = $request->post('hot');
$commission = $request->post('commission');
$total_number = $request->post('total_number');
$invest = $request->post('invest');
$investtr ='';
foreach ($invest as $k=>$v){
$investtr .=$v.'+';
}
$liquidateddamages = $request->post('liquidateddamages');
if(empty($days)){
return $this->error('参数错误');
}
if($rate >= $ratemax){
return $this->error('起始回报率不能大于最大回报率');
}
if($amount >= $amax){
return $this->error('起始金额不能大于最大金额');
}
$dual_currency = DualCurrency::where(['id'=>$id])->first();
$dual_currency->invest = substr($investtr, 0, strlen($investtr) - 1);
$dual_currency->total_number = $total_number;
$dual_currency->remaining_number = $total_number;
$dual_currency->hot = $hot;
$dual_currency->commission = $commission;
$dual_currency->days = $days;
$dual_currency->name = $name;//$days."天";
$dual_currency->rate = $rate;
$dual_currency->ratemax = $ratemax;
$dual_currency->amount = $amount;
$dual_currency->amax = $amax;
$dual_currency->liquidateddamages = $liquidateddamages;
$dual_currency->status = $status;
$dual_currency->save();
return $this->success('操作成功');
// return $this->success(['data'=>$dual_currency]);
}
//删除项目
public function del(Request $request){
$id = $request->post('id');
// file_put_contents('/www/wwwroot/xb-dex/public/d.txt',time().$id.PHP_EOL,FILE_APPEND);
$Zhiya_lk = DualCurrency::where('id',$id)->first();//->get();
if(empty($Zhiya_lk)){
return $this->error('不存在');
}
if($id){
//whereNotIn
DualCurrency::where('id', $id)->delete();
return $this->success('操作成功');
}else{
return $this->error('失败');
}
}
//新增项目
public function saveDual(Request $request){
$data = $request->all();
$days = $data['days'];
$name = $data['name'];
$amount = $data['amount'];
$amax = $data['amax'];
$rate = $data['rate'];
$ratemax = $data['ratemax'];
$hot = $data['hot'];
$commission = $data['commission'];
$total_number = $data['total_number'];
$invest = $data['invest'];
$investtr ='';
foreach ($invest as $k=>$v){
$investtr .=$v.'+';
}
// return $this->error($investtr);
if($data['days'] && $data['ratemax'] && $data['rate'] && $data['liquidateddamages'] && $data['amount'] && $data['amax']){
if($rate >= $ratemax){
return $this->error('起始回报率不能大于最大回报率');
}
if($amount >= $amax){
return $this->error('起始金额不能大于最大金额');
}
// $_tp = $data['type'] =='call'? 'C':'P';
$dual_currency = new DualCurrency();
$dual_currency->invest = substr($investtr, 0, strlen($investtr) - 1);
$dual_currency->total_number = $total_number;
$dual_currency->remaining_number = $total_number;
$dual_currency->hot = $hot;
$dual_currency->commission = $commission;
$dual_currency->days = $days;
$dual_currency->name = $name;//$days."天";
$dual_currency->rate = $data['rate'];
$dual_currency->ratemax = $data['ratemax'];
$dual_currency->amount = $data['amount'];
$dual_currency->amax = $data['amax'];
$dual_currency->liquidateddamages = $data['liquidateddamages'];
$dual_currency->created = date('Y-m-d',time());
$dual_currency->save();
return $this->success('操作成功');
}else{
return $this->error('必填项不能为空');
}
}
//获取实时价格
public function getNewPrice(Request $request){
$currency = $request->get('currency');
$currencys = Currency::where('id',$currency)->get()->toArray();
return $this->success(['data'=>$currencys]);
}
//理财设置
public function lists(Request $request)
{
$limit = $request->get('limit', 20);
$status = $request->get('status');
$results = DualCurrency::where('id','>',1);
if(isset($status)){
$results->where('status',$status);
}
// dump($results);die;
$results = $results->orderBy('id', 'desc')->orderBy('status','desc')->paginate($limit);
return $this->layuiData($results);
}
}
@@ -0,0 +1,102 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Currency;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\FeedBack;
use App\Users;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
class FeedBackController extends Controller
{
public function index(){
return view('admin.feedback.index');
}
public function feedbackList(Request $request){
$limit = $request->get('limit', 20);
$page = $request->get('page', 1);
$account_number = $request->get('account_number', '');
$feedback = new FeedBack();
if(!empty($account_number)){
$feedback = $feedback->whereHas('user', function ($query) use ($account_number) {
$query->where("account_number", 'like', '%' . $account_number . '%');
});
}
$feedbackList = $feedback->orderBy('id', 'desc')->paginate($limit, ['*'], 'page', $page);
// dd($result);
return $this->layuiData($feedbackList);
}
public function feedBackDetail(Request $request){
$id = $request->get('id', '');
$feedback = FeedBack::find($id);
return view('admin.feedback.detail',['feedback'=> $feedback]);
}
public function feedBackDel(Request $request){
$id = $request->get('id', '');
$res = FeedBack::find($id)->delete();
if($res){
return $this->success('删除成功');
}else{
return $this->error('请重试');
}
}
public function reply(Request $request){
$id = $request->get('id', '');
$reply_content = $request->get('reply_content', '');
if(empty($id)||empty($reply_content)){
return $this->error('参数错误');
}
$feedback = FeedBack::find($id);
$feedback->reply_content = $reply_content;
$feedback->is_reply = 1;
$feedback->reply_time = time();
$feedback->save();
return $this->success('回复成功');
}
//导出用户列表至excel
public function csv()
{
$data = FeedBack::all()->toArray();
return Excel::create('反馈数据', function ($excel) use ($data) {
$excel->sheet('反馈数据', function ($sheet) use ($data) {
$sheet->cell('A1', function ($cell) {
$cell->setValue('ID');
});
$sheet->cell('B1', function ($cell) {
$cell->setValue('账户名');
});
$sheet->cell('C1', function ($cell) {
$cell->setValue('反馈内容');
});
$sheet->cell('D1', function ($cell) {
$cell->setValue('回复内容');
});
$sheet->cell('E1', function ($cell) {
$cell->setValue('反馈时间');
});
$sheet->cell('F1', function ($cell) {
$cell->setValue('回复时间');
});
$sheet->cell('G1', function ($cell) {
$cell->setValue('状态');
});
if (!empty($data)) {
foreach ($data as $key => $value) {
$i = $key + 2;
$sheet->cell('A' . $i, $value['id']);
$sheet->cell('B' . $i, $value['account_number']);
$sheet->cell('C' . $i, $value['content']);
$sheet->cell('D' . $i, $value['reply_content']);
$sheet->cell('E' . $i, $value['create_time']);
$sheet->cell('F' . $i, $value['reply_time']);
$sheet->cell('G' . $i, $value['is_reply']);
}
}
});
})->download('xlsx');
}
}
@@ -0,0 +1,133 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\{
Address, AccountLog, Currency, FlashAgainst, IdCardIdentit, Setting, Users, UserCashInfo, UserReal, UsersWallet
};
class FlashAgainstController extends Controller
{
public function index(){
return view("admin.flashagainst.index");
}
public function lists(Request $request){
$limit=$request->get('limit');
$start_time=$request->get('start_time','');
$status=$request->get('status',-1);
$end_time=$request->get('end_time','');
$mobile=$request->get('mobile','');
$list=FlashAgainst::where(function ($query) use ($start_time){
if (!empty($start_time)){
$query->where('create_time','>=',strtotime($start_time));
}
})->where(function ($query) use ($end_time){
if (!empty($end_time)){
$query->where('create_time','>=',strtotime($end_time));
}
})->where(function ($query) use ($status){
if ($status!=-1){
$query->where('status',$status);
}
})->where(function ($query) use ($mobile){
if (!empty($mobile)){
$user=Users::where('account_number',$mobile)->first();
if (!empty($user)){
$query->where('user_id',$user->id);
}
}
})->orderBy('id','desc')->paginate($limit);
return $this->layuiData($list);
}
public function affirm(Request $request){
$id=$request->get('id','');
if (empty($id)) return $this->error('参数错误');
$result=FlashAgainst::find($id);
if (empty($result)) return $this->error('参数错误');
if ($result->status==1) return $this->error('已经通过,无法二次通过');
if ($result->status==2) return $this->error('已经驳回,无法通过');
try{
DB::beginTransaction();
$l_wallet=UsersWallet::where('user_id',$result->user_id)->where('currency',$result->left_currency_id)->lockForUpdate()->first();
$r_wallet=UsersWallet::where('user_id',$result->user_id)->where('currency',$result->right_currency_id)->lockForUpdate()->first();
if (empty($l_wallet)||empty($r_wallet)){
DB::rollBack();
return $this->error('钱包不存在');
}
$result2=change_wallet_balance($l_wallet,2,-$result->num,AccountLog::DEBIT_BALANCE_MINUS_LOCK,'闪兑扣除锁定金额',true);
if ($result2!==true){
DB::rollBack();
return $this->error('操作失败');
}
$result1=change_wallet_balance($r_wallet,4,$result->absolute_quantity,AccountLog::DEBIT_BALANCE_ADD,'闪兑通过,增加余额');
if ($result1 !== true){
DB::rollBack();
return $this->error('操作失败');
}
$result->status=1;
$result->review_time=time();
$result->save();
DB::commit();
return $this->success('成功');
}catch (\Exception $e){
DB::rollBack();
return $this->error($e->getMessage().'----'.$e->getLine());
}
}
public function reject(Request $request){
$id=$request->get('id','');
if (empty($id)) return $this->error('参数错误');
$result=FlashAgainst::find($id);
if (empty($result)) return $this->error('参数错误');
if ($result->status==1) return $this->error('已经通过,无法驳回');
if ($result->status==2) return $this->error('已经驳回,无法二次驳回');
try{
DB::beginTransaction();
$l_wallet=UsersWallet::where('user_id',$result->user_id)->where('currency',$result->left_currency_id)->lockForUpdate()->first();
if (empty($l_wallet)){
DB::rollBack();
return $this->error('钱包不存在');
}
$result2=change_wallet_balance($l_wallet,2,-$result->num,AccountLog::DEBIT_BALANCE_MINUS_LOCK,'闪兑扣除锁定金额',true);
if ($result2!==true){
DB::rollBack();
return $this->error('操作失败');
}
$result1= change_wallet_balance($l_wallet,2,$result->num,AccountLog::DEBIT_BALANCE_ADD_REJECT,'闪兑驳回,增加余额');
if ($result1!==true){
DB::rollBack();
return $this->error('操作失败');
}
$result->status=2;
$result->review_time=time();
$result->save();
DB::commit();
return $this->success('成功');
}catch (\Exception $e){
DB::rollBack();
return $this->error('操作失败');
}
}
}
@@ -0,0 +1,181 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\LeverTransaction;
use App\UsersWallet;
use App\Currency;
use App\CurrencyMatch;
use App\MarketHour;
use App\CurrencyQuotation;
use App\Users;
class HazardRateController extends Controller
{
public function index()
{
$currencies = Currency::where('is_legal', 1)->get();
return view('admin.lever.hazard.index')->with('currencies', $currencies);
}
public function handle()
{
return view('admin.lever.hazard.handle');
}
public function postHandle(Request $request)
{
$trade_id = $request->input('id', 0);
$update_price = $request->input('update_price', 0);
$write_market = $request->input('write_market', 0);
if ($trade_id <= 0 || $update_price <= 0) {
return $this->error('参数不合法');
}
$time = microtime(true);
$trade = LeverTransaction::where('status', LeverTransaction::TRANSACTION)->find($trade_id);
if (!$trade) {
return $this->error('交易不存在或已平仓');
}
$legal_id = $trade->legal;
$legal = Currency::find($legal_id);
$currency_id = $trade->currency;
$currency = Currency::find($currency_id);
DB::beginTransaction();
try {
//MarketHour::batchWriteMarketData($currency_id, $legal_id, 0, $update_price, 3, intval($time));
if ($write_market) {
MarketHour::batchEsearchMarket($currency->name, $legal->name, $update_price, intval($time)); //更新esearch行情价格
$result = CurrencyQuotation::getInstance($legal_id, $currency_id)->updateData(['now_price' => $update_price]); //更新数据库价格
if (!$result) {
throw new \Exception('更新每日价格失败');
}
}
LeverTransaction::newPrice($legal_id, $currency_id, $update_price, $time);
DB::commit();
return $this->success('向系统发送价格成功');
} catch (\Exception $e) {
DB::rollBack();
return $this->error($e->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->input('limit', 10);
$legal_id = $request->input('legal_id', -1);
$type = $request->input('type', -1);
$operate = $request->input('operate', -1);
$hazard_rate = $request->input('hazard_rate', 0);
$user_id = $request->input('user_id', 0);
$user_hazard = LeverTransaction::where('status', LeverTransaction::TRANSACTION)
->where(function ($query) use ($user_id, $type, $legal_id) {
!empty($user_id) && $query->where('user_id', $user_id);
($type != -1 && in_array($type, [1, 2])) && $query->where('type', $type);
$legal_id != -1 && $query->where('legal', $legal_id);
})
->orderBy('id', 'desc')
->paginate($limit);
$items = $user_hazard->getCollection();
$items->transform(function ($item, $key) use ($legal_id) {
$user_wallet = UsersWallet::where('currency', $legal_id)
->where('user_id', $item->user_id)
->first();
$sell_user = Users::where('id',$item->user_id)->first();
// var_dump($item->user_id);
// $user_info = DB::table('users')->where('id','=', $item->user_id)->select();
$item->setAppends(['symbol', 'mobile', 'account_number', 'type_name', 'profits']);
$hazard_rate = LeverTransaction::getWalletHazardRate($user_wallet);
$balance = $user_wallet->lever_balance ?? 0;
$item->setAttribute('lever_balance', $balance)->setAttribute('email', $sell_user)
->setAttribute('hazard_rate', $hazard_rate);
return $item;
});
if ($operate != -1 && !empty($hazard_rate)) {
switch ($operate) {
case 1:
$operate_symbol = '>=';
break;
case 2:
$operate_symbol = '<=';
break;
default:
$operate_symbol = null;
break;
}
$items = $items->where('hazard_rate', $operate_symbol, $hazard_rate);
}
$user_hazard->setCollection($items);
return $this->layuiData($user_hazard);
}
public function total()
{
$currencies = Currency::where('is_legal', 1)->get();
return view('admin.lever.hazard.total')->with('currencies', $currencies);
}
public function totalLists(Request $request)
{
$limit = $request->input('limit', 10);
$legal_id = $request->input('legal_id', -1);
$type = $request->input('type', -1);
$operate = $request->input('operate', -1);
$hazard_rate = $request->input('hazard_rate', 0);
/*
SELECT
`user_id`,
SUM((case `type` when 1 then update_price-price when 2 then price-update_price END)) AS profits_total,
SUM(caution_money) AS caution_money_total
FROM lever_transaction
WHERE `status`=0
GROUP BY user_id
*/
if($legal_id == -1){
$legal_id=Currency::where('name','USDC')->first()->id??-1;
}
$user_hazard = LeverTransaction::where('status', LeverTransaction::TRANSACTION)
->where(function ($query) use ($type, $legal_id) {
($type != -1 && in_array($type, [1, 2])) && $query->where('type', $type);
$legal_id != -1 && $query->where('legal', $legal_id);
})
->select('user_id')
->selectRaw('SUM((CASE `type` WHEN 1 THEN `update_price` - `price` WHEN 2 THEN `price` - `update_price` END) * `number` * `multiple`) AS `profits_total`')
->selectRaw('SUM(`caution_money`) AS `caution_money_total`')
->groupBy('user_id')
->paginate($limit);
$items = $user_hazard->getCollection();
$items->transform(function ($item, $key) use ($legal_id) {
$user_wallet = UsersWallet::where('currency', $legal_id)
->where('user_id', $item->user_id)
->first();
$item->setAppends(['mobile', 'account_number']);
$hazard_rate = LeverTransaction::getWalletHazardRate($user_wallet);
$balance = $user_wallet->lever_balance ?? 0;
$item->setAttribute('lever_balance', $balance)
->setAttribute('hazard_rate', floatval($hazard_rate));
return $item;
});
if ($operate != -1 && !empty($hazard_rate)) {
switch ($operate) {
case 1:
$operate_symbol = '>=';
break;
case 2:
$operate_symbol = '<=';
break;
default:
$operate_symbol = null;
break;
}
$items = $items->where('hazard_rate', $operate_symbol, $hazard_rate);
}
$user_hazard->setCollection($items);
return $this->layuiData($user_hazard);
}
}
@@ -0,0 +1,186 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Currency;
use App\InsuranceType;
use App\UsersInsurance;
use Illuminate\Foundation\Auth\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class InsuranceController extends Controller
{
public function index()
{
return view('admin.insurance.index');
}
public function add(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new InsuranceType();
} else {
$result = InsuranceType::find($id);
}
$currency = Currency::where('insurancable', 1)->get();
return view('admin.insurance.add')->with([
'result' => $result,
'currency' => $currency
]);
}
public function postAdd(Request $request)
{
$id = $request->get('id', 0);
$data = $request->except('id');
try {
DB::beginTransaction();
InsuranceType::updateOrCreate(
['id' => $id],
$data
);
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new InsuranceType();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function del(Request $request)
{
$id = $request->get('id', 0);
$result = InsuranceType::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
try {
$result->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
/*
* 开关
*/
public function changeStatus(Request $request)
{
$id = $request->get('id', 0);
$insurance_type = InsuranceType::find($id);
if (empty($insurance_type)) {
return $this->error('参数错误');
}
if ($insurance_type->status == 1) {
$insurance_type->status = 0;
} else {
$insurance_type->status = 1;
}
try {
$insurance_type->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function changeAutoClaim(Request $request)
{
$id = $request->get('id', 0);
$insurance_type = InsuranceType::find($id);
if (empty($insurance_type)) {
return $this->error('参数错误');
}
if ($insurance_type->auto_claim == 1) {
$insurance_type->auto_claim = 0;
} else {
$insurance_type->auto_claim = 1;
}
try {
$insurance_type->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function changeTAdd1(Request $request)
{
$id = $request->get('id', 0);
$insurance_type = InsuranceType::find($id);
if (empty($insurance_type)) {
return $this->error('参数错误');
}
if ($insurance_type->is_t_add_1 == 1) {
$insurance_type->is_t_add_1 = 0;
} else {
$insurance_type->is_t_add_1 = 1;
}
try {
$insurance_type->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
//============保险单===========
public function orderIndex()
{
return view('admin.insurance.order_index');
}
public function orderLists(Request $request)
{
$limit = $request->get('limit', 10);
$mobile = $request->get('mobile', '');
$name = $request->get('name', null);
$type = $request->get('type', -1);
$status = $request->get('status', -1);
$result = new UsersInsurance();
$result = $result->where(function ($query) use ($mobile) {
if (!empty($mobile)) {
$user = User::where('account_number', $mobile)->first();
if (!empty($user)) {
$query->where('user_id', $user->id);
}
}
})->where(function($query) use ($name){
if(!empty($name)){
$query->whereHas('user',function ($query) use ($name){
$query->whereHas('userReal',function ($query) use ($name){
$query->where('name',$name);
});
});
}
})->where(function ($query) use ($type){
if ($type != -1) {
$query->whereHas('insurance_type',function ($query) use ($type){
$query->where('type',$type);
});
}
})->where(function ($query) use ($status){
if ($status != -1) {
$query->where('status',$status);
}
});
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
}
@@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers\Admin;
use App\InsuranceRule;
use App\InsuranceType;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\MicroNumber;
use App\MicroOrder;
use App\MicroSecond;
use App\Currency;
use App\CurrencyMatch;
use App\Setting;
use App\UsersWallet;
use App\Users;
class InsuranceRuleController extends Controller
{
public function index()
{
return view('admin.insurancerule.index');
}
public function add(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new InsuranceRule();
} else {
$result = InsuranceRule::find($id);
}
$insurance_type = InsuranceType::all();
return view('admin.insurancerule.add')->with('result', $result)->with('insurance_type', $insurance_type);
}
public function postAdd(Request $request)
{
$id = $request->get('id', 0);
$existing_number = $request->get('existing_number', '');
$amount = $request->get('amount', '');
$place_an_order_max = $request->get('place_an_order_max', '');
$insurance_type_id = $request->get('insurance_type_id', '');
if (empty($id)) {
$result = new InsuranceRule();
} else {
$result = InsuranceRule::find($id);
if ($result == null) {
return redirect()->back();
}
}
$result->insurance_type_id = $insurance_type_id;
$result->amount = $amount;
$result->place_an_order_max = $place_an_order_max;
$result->existing_number = $existing_number;
DB::beginTransaction();
try {
$result->save(); //保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new InsuranceRule();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function del(Request $request)
{
$id = $request->get('id', 0);
$result = InsuranceRule::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
try {
$result->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
}
@@ -0,0 +1,240 @@
<?php
namespace App\Http\Controllers\Admin;
use App\AccountLog;
use App\Users;
use App\Setting;
use Illuminate\Support\Facades\DB;
use Symfony\Component\HttpFoundation\Request;
use Illuminate\Support\Facades\Input;
class InviteController extends Controller{
//邀请返佣
public function return(){
return view("admin.invite.return");
}
public function returnList(Request $request){
$limit = $request->get('limit',10);
$account = $request->get('account','');
$list = New AccountLog();
if (!empty($account)) {
$list = $list->whereHas('user', function($query) use ($account) {
$query->where("phone",'like','%'.$account.'%')->orwhere('email','like','%'.$account.'%');
} );
}
$list = $list->where('type', AccountLog::INVITATION_TO_RETURN)-> orderBy('id','desc')->paginate($limit);
return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]);
}
public function del(Request $request){
$id = $request->get('id');
$accountlog = AccountLog::find($id);
if(empty($accountlog)){
$this->error("记录未找到");
}
try {
$accountlog->delete();
return $this->success('删除成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
//会员推荐关系图
public function childs(){
return view("admin.invite.childs");
}
public function getTree()
{
$data = Users::orderBy('id','asc')->get()->toArray();
$list=$this->getSubTree($data);
return response()->json(['code' => 0, 'data' => $list]);
}
public function getSubTree($data, $id = 0, $level = 0)
{
$list = array();
foreach ($data as $key => $value) {
$val=[];
$val['parent_id'] = strval($value['parent_id']);
if ($val['parent_id'] == $id) {
$val['id'] = $value['id'];
$val['name'] = $value['account_number'];
$val['level'] = $level;
$val['children'] =self::getSubTree($data, $value['id'], $level + 1);
$list[] = $val;
}
}
return $list;
}
//邀请背景图
public function bgIndex(){
return view("admin.invite.bgIndex");
}
public function bgList(Request $request){
$limit = $request->get('limit',10);
$list = New InviteBg();
$list = $list->orderBy('id','desc')->paginate($limit);
return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]);
}
public function bgdel(Request $request){
$id = $request->get('id');
$bg = InviteBg::find($id);
if(empty($bg)){
$this->error("图片未找到");
}
try {
$bg->delete();
return $this->success('删除成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
public function edit(Request $request){
$id = $request->get('id',0);
if (empty($id)){
$bg=New InviteBg();
$bg->create_time=time();
}else{
$bg = InviteBg::find($id);
}
return view('admin.invite.edit',['res'=>$bg]);
}
public function doedit(){
$id = Input::get("id");
$pic= Input::get("pic");
if(empty($pic)){
return $this->error('图片必须上传');
}
if (empty($id)){
$bg=New InviteBg();
$bg->create_time=time();
}else{
$bg = InviteBg::find($id);
}
$bg->pic=$pic;
try {
$bg->save();
return $this->success('操作成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
public function share(){
$share_title = Setting::getValueByKey('share_title','');
$share_content = Setting::getValueByKey('share_content','');
$share_url = Setting::getValueByKey('share_url','');
return view('admin.invite.share',['title'=>$share_title,'content'=>$share_content,'url'=>$share_url]);
}
public function postShare(Request $request){
$title = Input::get("share_title");
$content= Input::get("share_content");
$url= Input::get("share_url");
if(empty($title) || empty($content) || empty($url)){
return $this->error('请填写完整信息');
}
$data = $request->all();
try {
foreach ($data as $key => $value) {
Setting::updateValueByKey($key,$value);
}
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function getTopUsers(Request $request)
{
$page = $request->get('page',1);
$limit = $request->get('limit',10);
$lists = DB::table('users')
->where('parent_id',0)
->select('id','account_number','parent_id')
->paginate($limit);
foreach ($lists->items() as &$item) {
$item->hasChildren = false;
$count = DB::table('users')->where('parent_id',$item->id)->count();
if ($count > 0){
$item->hasChildren = true;
}
}
unset($item);
$result = array('data' => $lists->items(), 'page' => $page, 'pages' => $lists->lastPage(), 'total' => $lists->total());
return $this->success($result);
}
public function getSonByPid(Request $request)
{
$pid = $request->get('pid');
$lists = DB::table('users')
->where('parent_id',$pid)
->select('id','account_number','parent_id')
->get();
foreach ($lists as &$item) {
$item->hasChildren = false;
$count = DB::table('users')->where('parent_id',$item->id)->count();
if ($count > 0){
$item->hasChildren = true;
}
}
unset($item);
return $this->success($lists);
}
}
?>
@@ -0,0 +1,380 @@
<?php
namespace App\Http\Controllers\Admin;
use App\UsersWallet;
use App\AccountLog;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use App\LegalDealSend;
use Illuminate\Http\Request;
use App\LegalDeal;
use App\Currency;
use App\Seller;
use App\Users;
class LegalDealController extends Controller
{
public function index()
{
$currency = Currency::where('is_legal', 1)->orderBy('id', 'desc')->get();//获取法币
$start =strtotime(date('Y-m-d 00:00:00'));
$end = strtotime(date('Y-m-d H:i:s'));
//获取当天购买USDT
$aaaa=LegalDeal::leftJoin("legal_deal_send","legal_deal.legal_deal_send_id","=","legal_deal_send.id")->where("legal_deal_send.type","=","sell")->where("legal_deal.create_time",">",$start)->where("legal_deal.is_sure","=",1)->select("legal_deal.*","legal_deal_send.type")->get();
$todaybuy_usdt=0;
foreach($aaaa as $key=>$value)
{
$todaybuy_usdt=$todaybuy_usdt+$value->number;
}
//获取当天出售USDT
$bbbb=LegalDeal::leftJoin("legal_deal_send","legal_deal.legal_deal_send_id","=","legal_deal_send.id")->where("legal_deal_send.type","=","buy")->where("legal_deal.create_time",">",$start)->where("legal_deal.is_sure","=",1)->select("legal_deal.*","legal_deal_send.type")->get();
$todaysell_usdt=0;
foreach($bbbb as $key=>$value)
{
$todaysell_usdt=$todaysell_usdt+$value->number;
}
//USDT购买总数
$cccc=LegalDeal::leftJoin("legal_deal_send","legal_deal.legal_deal_send_id","=","legal_deal_send.id")->where("legal_deal_send.type","=","sell")->where("legal_deal.is_sure","=",1)->select("legal_deal.*","legal_deal_send.type")->get();
$buyall_usdt=0;
foreach($cccc as $key=>$value)
{
$buyall_usdt=$buyall_usdt+$value->number;
}
//USDT出售总数
$dddd=LegalDeal::leftJoin("legal_deal_send","legal_deal.legal_deal_send_id","=","legal_deal_send.id")->where("legal_deal_send.type","=","buy")->where("legal_deal.is_sure","=",1)->select("legal_deal.*","legal_deal_send.type")->get();
$sellall_usdt=0;
foreach($dddd as $key=>$value)
{
$sellall_usdt=$sellall_usdt+$value->number;
}
//usdt总冻结数量
$eeee=UsersWallet::leftjoin("currency","users_wallet.currency","=","currency.id")->where("currency.name","=","USDC")->select("users_wallet.*","currency.name")->get();
$all_lock_legal_balance=0;
foreach($eeee as $key=>$value)
{
$all_lock_legal_balance=$all_lock_legal_balance+$value->lock_legal_balance;
}
//usdt总可用余额
$ffff=UsersWallet::leftjoin("currency","users_wallet.currency","=","currency.id")->where("currency.name","=","USDC")->select("users_wallet.*","currency.name")->get();
$all_usdt_can_use=0;
foreach($ffff as $key=>$value)
{
$all_usdt_can_use=$all_usdt_can_use+$value->legal_balance;
}
return view('admin.legal.deal', ['currency' => $currency,'todaybuy_usdt'=>$todaybuy_usdt,'todaysell_usdt'=>$todaysell_usdt,'buyall_usdt'=>$buyall_usdt,'sellall_usdt'=>$sellall_usdt,'all_lock_legal_balance'=>$all_lock_legal_balance,'all_usdt_can_use'=>$all_usdt_can_use]);
}
public function list(Request $request)
{
$limit = $request->get('limit', 10);
$account_number = $request->get('account_number', '');
$seller_name = $request->get('seller_name', '');
$type = $request->get('type', '');
$currency_id = $request->get('currency_id', 0);
$result = new LegalDeal();
if (!empty($account_number)) {
$result = $result->whereHas('user', function ($query) use ($account_number) {
$query->where('account_number', 'like', '%' . $account_number . '%');
});
}
if (!empty($seller_name))
{
$result = $result->whereHas('seller', function ($query) use ($seller_name) {
$query->where('name', 'like', '%' . $seller_name . '%');
});
// var_dump($seller_name);die;
}
if (!empty($type)) {
$result = $result->whereHas('legalDealSend', function ($query) use ($type) {
$query->where('type', $type);
});
}
if (!empty($currency_id)) {
$result = $result->whereHas('legalDealSend', function ($query) use ($currency_id) {
$query->where('currency_id', $currency_id);
});
}
$result = $result->orderBy('id', 'desc')->paginate($limit);
//var_dump($result->toArray());die;
return $this->layuiData($result);
}
/**
* 后台取消订单
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function adminLegalDealCancel(Request $request) //tian add
{
$id = $request->get('id', null);
if (empty($id)) {
return $this->error('参数错误');
}
$legal_deal = LegalDeal::find($id);
if (empty($legal_deal)) {
return $this->error('无此记录');
}
DB::beginTransaction();
try {
// if ($legal_deal->is_sure > 0) {
// DB::rollback();
// return $this->error('该订单已操作,请勿取消666');
// }
$user_id = Users::getUserId();
// if ($legal_deal->type == 'sell') { //用户端-购买
// if ($user_id != $legal_deal->user_id) {
// DB::rollback();
// return $this->error('对不起,您无权操作');
// }
// } elseif ($legal_deal->type == 'buy') {//用户端出售
// $seller = Seller::find($legal_deal->seller_id);
// if ($user_id == $legal_deal->user_id) {
// DB::rollback();
// return $this->error('对不起,您无权操作');
// }
// }
// $number = $legal_deal->number;
// $legal_deal_send = LegalDealSend::LockForUpdate()->find($legal_deal->legal_deal_send_id);
// $users_wallet = UsersWallet::where('user_id', $user_id)->where('currency', $legal_deal_send->currency_id)->first();
// if ($legal_deal_send->type == 'buy') { //求购
// // do something
//// if ($users_wallet->legal_balance < $number){
//// DB::rollback();
//// return $this->error('您的法币余额不足');
//// }
//// $legal_deal_send->surplus_number += $legal_deal->number;//
// $legal_deal_send->surplus_number = bc_add($legal_deal_send->surplus_number,$legal_deal->number,5);//
// if ($legal_deal_send->surplus_number > 0) {
// $legal_deal_send->is_done = 0;
// }
// $data_wallet1 = [
// 'balance_type' => 1,
// 'wallet_id' => $users_wallet->id,
// 'lock_type' => 0,
// 'create_time' => time(),
// 'before' => $users_wallet->legal_balance,
// 'change' => $legal_deal->number,
// 'after' => bc_add($users_wallet->legal_balance, $legal_deal->number, 5),
// ];
// $data_wallet2 = [
// 'balance_type' => 1,
// 'wallet_id' => $users_wallet->id,
// 'lock_type' => 1,
// 'create_time' => time(),
// 'before' => $users_wallet->lock_legal_balance,
// 'change' => -$legal_deal->number,
// 'after' => bc_sub($users_wallet->legal_balance, $legal_deal->number, 5),
// ];
//// $users_wallet->legal_balance += $legal_deal->number;
// $users_wallet->legal_balance = bc_add($users_wallet->legal_balance,$legal_deal->number,5);
//// $users_wallet->lock_legal_balance -= $legal_deal->number;
// $users_wallet->lock_legal_balance = bc_sub($users_wallet->lock_legal_balance,$legal_deal->number,5);
// $users_wallet->save();
// $legal_deal_send->save();
//
// AccountLog::insertLog(
// [
// 'user_id' => $user_id,
// 'value' => $legal_deal->number,
// 'info' => '取消出售给商家法币',
// 'type' => AccountLog::LEGAL_DEAL_USER_SELL_CANCEL,
// 'currency' => $legal_deal_send->currency_id
// ],
// $data_wallet1
// );
// AccountLog::insertLog(
// [
// 'user_id' => $user_id,
// 'value' => -$legal_deal->number,
// 'info' => '取消出售给商家法币',
// 'type' => AccountLog::LEGAL_DEAL_USER_SELL_CANCEL,
// 'currency' => $legal_deal_send->currency_id
// ],
// $data_wallet2
// );
// } elseif ($legal_deal_send->type == 'sell') { //出售
//// $legal_deal_send->surplus_number += $legal_deal->number;
// $legal_deal_send->surplus_number = bc_add($legal_deal_send->surplus_number,$legal_deal->number,5);
// if ($legal_deal_send->surplus_number > 0) {
// $legal_deal_send->is_done = 0;
// }
// $legal_deal_send->save();
// }
// $legal_deal->is_sure = 2;
// $legal_deal->save();
// $legal_deal->update_time = time();
// $legal_send = LegalDealSend::find($legal_deal->legal_deal_send_id);
// $legal_send->surplus_number += $legal_deal->number;
// $legal_send->save();
LegalDeal::cancelLegalDealById($id);
DB::commit();
return $this->success('操作成功,订单已取消');
} catch (\Exception $exception) {
DB::rollback();
return $this->error($exception->getMessage());
}
}
//后台确认收到付款,订单状态改为完成
//商家卖法币(后台确定,将币拨到用户)
public function adminDoSure(Request $request)
{
$id = $request->get('id', null);
if (empty($id)) return $this->error('参数错误');
try {
DB::beginTransaction();
$legal_deal = LegalDeal::find($id);
if (empty($legal_deal)) {
DB::rollback();
return $this->error('无此记录');
}
if ($legal_deal->is_sure == 1) {
DB::rollback();
return $this->error('该订单还未付款或已经操作过');
}
$seller = Seller::lockForUpdate()->find($legal_deal->seller_id);
$legal_send = LegalDealSend::find($legal_deal->legal_deal_send_id);
if (empty($legal_send)) {
DB::rollback();
return $this->error('订单异常');
}
// if ($legal_send->type == 'buy') {
// DB::rollback();
// return $this->error('您不能确认该订单');
// }
$user_wallet = UsersWallet::where('user_id', $legal_deal->user_id)
->where('currency', $legal_send->currency_id)
->lockForUpdate()
->first();
$seller_user_wallet = UsersWallet::where('user_id', $seller->user_id)
->where('currency', $legal_send->currency_id)
->lockForUpdate()
->first();
if (empty($user_wallet)) {
DB::rollback();
return $this->error('该用户没有此币种钱包');
}
//更新交易状态
$legal_deal->is_sure = 1;
$legal_deal->update_time = time();
$legal_deal->save();
//减少商家法币锁定余额
$seller->lock_seller_balance = bc_sub($seller->lock_seller_balance,$legal_deal->number,5);
change_wallet_balance($seller_user_wallet, 1,-$legal_deal->number,AccountLog::LEGAL_USER_BUY,"用户购买商家法币,解除商家法币冻结", true);
//增加用户法币余额
change_wallet_balance($user_wallet, 1,$legal_deal->number,AccountLog::LEGAL_USER_BUY,'在 ' . $seller->name . ' 购买法币成功');
$seller->save();
DB::commit();
return $this->success('确认成功');
} catch (\Exception $exception) {
DB::rollback();
return $this->error($exception->getMessage());
}
}
//商家购买用户法币(后台确定,将币拨到商家)
public function admin_userDoSure(Request $request) //用户确认收款 后台确认
{
$id = $request->get('id', null);
if (empty($id)) return $this->error('参数错误');
DB::beginTransaction();
try {
$legal_deal = LegalDeal::find($id);
if (empty($legal_deal)) {
DB::rollback();
return $this->error('无此记录');
}
if ($legal_deal->is_sure != 3) {
DB::rollback();
return $this->error('该订单还未付款或已经操作过');
}
if ($legal_deal->is_sure == 1) {
DB::rollback();
return $this->error('该订单已经操作过');
}
$user_id = Users::getUserId();
$user = Users::find($user_id);
// if ($legal_deal->user_id != $user_id) {
// DB::rollback();
// return $this->error('对不起,您无权操作');
// }
$legal_send = LegalDealSend::find($legal_deal->legal_deal_send_id);
if (empty($legal_send)) {
DB::rollback();
return $this->error('订单异常');
}
// if ($legal_send->type == 'sell') {
// DB::rollback();
// return $this->error('您不能确认该订单');
// }
$seller = Seller::find($legal_deal->seller_id);
$user_wallet = UsersWallet::where('user_id', $legal_deal->user_id)
->where('currency', $legal_send->currency_id)
->lockForUpdate()
->first();
$seller_user_wallet = UsersWallet::where('user_id', $seller->user_id)
->where('currency', $legal_send->currency_id)
->lockForUpdate()
->first();
if (empty($user_wallet)) {
DB::rollback();
return $this->error('该用户没有此币种钱包');
}
if (empty($seller)) {
DB::rollback();
return $this->error('商家不存在');
}
//更新交易状态
$legal_deal->is_sure = 1;
$legal_deal->update_time = time();
$legal_deal->save();
//减少用户法币锁定余额
change_wallet_balance($user_wallet, 1,-$legal_deal->number,AccountLog::LEGAL_SELLER_BUY,'卖币成功',true);
//增加商家法币余额
change_wallet_balance($seller_user_wallet, 1,$legal_deal->number,AccountLog::LEGAL_SELLER_BUY,"商家购买用户法币,增加商家法币");
DB::commit();
return $this->success('确认成功');
} catch (\Exception $exception) {
DB::rollback();
return $this->error($exception->getMessage());
}
}
}
@@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers\Admin;
use App\LegalDeal;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\LegalDealSend;
use App\Currency;
class LegalDealSendController extends Controller
{
public function index(){
$currency = Currency::where('is_legal',1)->orderBy('id','desc')->get();//获取法币
return view('admin.legal.index',['currency'=> $currency]);
}
public function list(Request $request){
$limit = $request->get('limit', 10);
//$account_number = $request->get('account_number', '');
$seller_name = $request->get('seller_name', '');
$type = $request->get('type', '');
$currency_id = $request->get('currency_id', 0);
$result = new LegalDealSend();
if(!empty($seller_name)){
$result = $result->whereHas('seller', function ($query) use ($seller_name) {
$query->where('name', 'like', '%' . $seller_name . '%');
});
}
if (!empty($type)) {
$result = $result->where('type', $type);
}
if (!empty($currency_id)) {
$result = $result->where('currency_id', $currency_id);
}
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
}
@@ -0,0 +1,318 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Symfony\Component\Process\Process;
use App\Admin;
use App\Users;
use App\Currency;
use App\UsersWallet;
use App\AccountLog;
use App\UserJiedai;
use App\Defi;
use App\DefiOrder;
use App\DualCurrency;
use Illuminate\Support\Facades\DB;
class LendingController extends Controller
{
private $Month_E = array('01' => "Jan",
'02' => "Feb",
'03' => "Mar",
'04' => "Apr",
'05' => "May",
'06' => "Jun",
'07' => "Jul",
'08' => "Aug",
'09' => "Sep",
'10' => "Oct",
'11' => "Nov",
'12' => "Dec");
public function index(){
return view('admin.lending.index');
}
public function order(){
return view('admin.lending.order');
}
//订单列表
public function order_lists(Request $request){
$limit = $request->get('limit', 20);
$htcode = $request->get('htcode');
$user_id = $request->get('user_id');
$list = DB::table('defi_order');
if (!empty($htcode)) {
$list = $list->where('htcode',$htcode);
}
if($user_id){
$list->where('user_id',$user_id);
}
$list = $list->orderBy('id', 'desc')->paginate($limit);
file_put_contents('/www/wwwroot/crypto/public/t.txt',json_encode($list));
foreach ($list as $v){
// $v->create_time = date('Y-m-d H:i:s',$v->create_time);
}
return $this->layuiData($list);
}
public function add(){
return view('admin.lending.add');
}
public function editLendingView(Request $request){
$id = $request->get('id');
if(empty($id)){
return $this->error('参数错误');
}
$dual_currency = DB::table('defi')->where(['id'=>$id])->first();
// dump($dual_currency);die;
return view('admin.lending.edit_lending',['results' => $dual_currency]);
}
//删除项目
public function del(Request $request){
$id = $request->post('id');
// file_put_contents('/www/wwwroot/xb-dex/public/d.txt',time().$id.PHP_EOL,FILE_APPEND);
$Zhiya_lk = Defi::where('id',$id)->first();//->get();
if(empty($Zhiya_lk)){
return $this->error('不存在');
}
if($id){
//whereNotIn
DB::table('defi')->where('id', $id)->delete();
return $this->success('操作成功');
}else{
return $this->error('失败');
}
}
//编辑项目
public function editLending(Request $request){
$id = $request->post('id');
// $title = $request->post('title');
$days = $request->post('days');
// $hk_type = $request->post('hk_type');
//$amount = $request->post('amount');
// $amax = $request->post('amax');
$bilv = $request->post('bilv');
$percent = $request->post('percent');
$opaymentlv = $request->post('opaymentlv');
$fwamount = $request->post('fwamount');
if(empty($id)){
return $this->error('参数错误');
}
$dual_currency = Defi::where(['id'=>$id])->first();
if($bilv >100){
return $this->error('利率有误');
}
// $dual_currency->title = $title;
$dual_currency->days = $days;
// $dual_currency->amount = $amount;
// $dual_currency->amax = $amax;
// $dual_currency->hk_type = $hk_type;
$dual_currency->bilv = $bilv;
$dual_currency->percent = $percent;
$dual_currency->fwamount = $fwamount;
$dual_currency->opaymentlv = $opaymentlv;
$dual_currency->save();
return $this->success(['data'=>$dual_currency]);
}
//新增项目
public function saveLending(Request $request){
$data = $request->all();
// $amount = $data['amount'];
// $title = $data['title'];
$days = $data['days'];
$bilv = $data['bilv'];
$percent = $data['percent'];
$opaymentlv = $data['opaymentlv'];
$fwamount = $data['fwamount'];
// $hk_type = $data['hk_type'];
if($days && $bilv){
if($bilv >= 100){
return $this->error('利率不能大于100%');
}
$dual_currency = new Defi();
// $dual_currency->amount = $amount;
// $dual_currency->title = $title;
$dual_currency->days = $days;
$dual_currency->bilv = $bilv;
$dual_currency->percent = $percent;
$dual_currency->fwamount = $fwamount;
$dual_currency->opaymentlv = $opaymentlv;
// $dual_currency->hk_type = $hk_type;
$dual_currency->status = 1;
$dual_currency->type = 1;
$dual_currency->addtime = date("Y-m-d H:i:s",time());
$dual_currency->save();
return $this->success('操作成功');
}else{
return $this->error('必填项不能为空');
}
}
//获取实时价格
public function getNewPrice(Request $request){
$currency = $request->get('currency');
$currencys = Currency::where('id',$currency)->get()->toArray();
return $this->success(['data'=>$currencys]);
}
//理财设置
public function lists(Request $request)
{
$limit = $request->get('limit', 20);
$status = $request->get('status');
// $results = DualCurrency::where('id','>',1);
$results =DB::table('defi');//->orderBy('id', 'asc')->paginate($limit); lk_zhiya
if(isset($status)){
$results->where('status',$status);
}
// dump($results);die;
$results = $results->orderBy('id', 'desc')->orderBy('status','desc')->paginate($limit);
return $this->layuiData($results);
}
public function show(Request $request)
{
$id = $request->get('id', '');
if (!$id) {
return $this->error('参数错误');
}
$walletout = DefiOrder::find($id);
// $use_chain_api = Setting::getValueByKey('use_chain_api', 0);
return view('admin.lending.edit', ['wallet_out' => $walletout]);
}
//test
public function done(Request $request)
{
set_time_limit(0);
$id = $request->post('id', '');
$user_id = $request->post('user_id', 0);
$amount = $request->post('amount', 0);
$method = $request->get('method', '');
if (!$id || !$user_id) {
return $this->error('参数错误');
}
try {
DB::beginTransaction();
$wallet_out = DefiOrder::where('review_status', 1)->lockForUpdate()->findOrFail($id);
$user_wallet = UsersWallet::where('user_id', $user_id)->where('currency', 3)->lockForUpdate()->first(); //lockForUpdate()->
if ($method == 'done') {//确认提币
$wallet_out->review_status = 2;//提币成功状态
$wallet_out->status = 0;//反馈的信息
$wallet_out->review_time = date('Y-m-d H:i:s',time()+$wallet_out->days*24*60*60);
$wallet_out->save();
$change_result = change_wallet_balance($user_wallet, 2, $amount, AccountLog::USER_LOAN_ORDER_BUY, '借贷放款成功');
if ($change_result !== true) {
throw new Exception($change_result);
}
} else {
$wallet_out->review_status = 3;//提币失败状态
$wallet_out->review_time = date('Y-m-d H:i:s',time());
$wallet_out->save();
}
DB::commit();
return $this->success('操作成功:)');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
//test
public function cancle(Request $request)
{
set_time_limit(0);
$id = $request->post('id', '');
if (!$id) {
return $this->error('参数错误');
}
try {
DB::beginTransaction();
$wallet_out = DefiOrder::where('review_status', 1)->lockForUpdate()->findOrFail($id);
$wallet_out->review_status = 3;//提币失败状态
$wallet_out->review_time = time();
$wallet_out->save();
DB::commit();
return $this->success('操作成功:)');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
}
@@ -0,0 +1,203 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Algebra;
use App\Level;
use App\UserAlgebra;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\MicroNumber;
use App\MicroOrder;
use App\MicroSecond;
use App\Currency;
use App\CurrencyMatch;
use App\Setting;
use App\UsersWallet;
use App\Users;
class LevelController extends Controller
{
public function index()
{
return view('admin.level.index');
}
public function add(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new Level();
} else {
$result = Level::find($id);
}
return view('admin.level.add')->with('result', $result);
}
public function postAdd(Request $request)
{
DB::beginTransaction();
try {
$id = $request->get('id', 0);
$name = $request->get('name', '');
$fill_currency = $request->get('fill_currency', '');
$direct_drive_price = $request->get('direct_drive_price', '');
$direct_drive_count = $request->get('direct_drive_count', '');
$max_algebra = $request->get('max_algebra', '');
$level = $request->get('level', '');
if (empty($id)) {
$levelModel = new Level();
} else {
$levelModel = Level::find($id);
if ($levelModel == null) {
return redirect()->back();
}
}
$levelModel->name = $name;
$levelModel->fill_currency = $fill_currency;
$levelModel->direct_drive_price = $direct_drive_price;
$levelModel->direct_drive_count = $direct_drive_count;
$levelModel->max_algebra = $max_algebra;
$levelModel->level = $level;
$levelModel->save(); //保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new Level();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function del(Request $request)
{
$id = $request->get('id', 0);
$result = Level::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
try {
$result->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
//micro_seconds
public function algebraIndex()
{
return view('admin.level.algebra_index');
}
public function algebraAdd(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new Algebra();
} else {
$result = Algebra::find($id);
}
// $currencies = Currency::where('is_micro',1)->get();
return view('admin.level.algebra_add')->with('result', $result);
}
public function algebraPostAdd(Request $request)
{
$id = $request->get('id', 0);
$name = $request->get('name', '');
$algebra = $request->get('algebra', '');
$rate = $request->get('rate', '');
if (empty($id)) {
$result = new Algebra();
} else {
$result = Algebra::find($id);
if ($result == null) {
return redirect()->back();
}
}
$result->name = $name;
$result->algebra = $algebra;
$result->rate = $rate;
DB::beginTransaction();
try {
$result->save(); //保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function algebraLists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new Algebra();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function algebraDel(Request $request)
{
$id = $request->get('id', 0);
$result = Algebra::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
try {
$result->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function levelOrderIndex(){
return view('admin.level.orders');
}
public function levelOrderList(Request $request)
{
$limit = $request->get('limit', 10);
$ent_time=$request->get('end_time','');
$start_time=$request->get('start_time','');
$account=$request->get('account','');
$result = new UserAlgebra();
$result = $result->where(function ($query) use ($ent_time,$start_time,$account){
if (!empty($ent_time)){
$query->where('created_at','<=',$ent_time);
}
if (!empty($start_time)){
$query->where('created_at','>=',$start_time);
}
if (!empty($account)){
$user=Users::where('phone',$account)->Orwhere('email',$account)->first();
if (!empty($account)){
$query->where('user_id',$user->id);
}
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
}
@@ -0,0 +1,327 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\LeverMultiple;
use App\CurrencyMatch;
use App\Setting;
use App\UsersWallet;
use App\Users;
use App\Currency;
use Illuminate\Support\Facades\Input;
class LeverMultipleController extends Controller
{
public function index()
{
return view('admin.levermultiple.index');
}
public function add()
{
$res=Currency::where("name","!=","USDC")->get();
return view('admin.levermultiple.add', [
'currency' => $res
]);
}
public function doadd(Request $request)
{
$aaaaaaa=new LeverMultiple();
$aaaaaaa->value= Input::get('value', '');
$aaaaaaa->type=Input::get('type', '');
$aaaaaaa->currency_id=Input::get('currency_id', '');
//var_dump($aaaaaaa);die;
try {
$aaaaaaa->save();
}catch (\Exception $ex){
}
return $this->success('添加成功');
}
public function postAdd(Request $request)
{
$id = $request->get('id', 0);
$name = $request->get('name', '');
// $token = $request->get('token','');
// $get_address = $request->get('get_address','');
$sort = $request->get('sort', 0);
$logo = $request->get('logo', '');
$type = $request->get('type', '');
$is_legal = $request->get('is_legal', '');
$is_lever = $request->get('is_lever', '');
$is_match = $request->get('is_match', '');
$min_number = $request->get('min_number', 0);
$rate = $request->get('rate', 0);
$total_account = $request->get('total_account', 0);
$key = $request->get('key', 0);
$contract_address = $request->get('contract_address', 0);
//自定义验证错误信息
$messages = [
'required' => ':attribute 为必填字段',
];
$validator = Validator::make($request->all(), [
'name' => 'required',
'sort' => 'required',
'type' => 'required',
'is_legal' => 'required',
'is_lever' => 'required',
// 'logo'=>'required',
], $messages);
//如果验证不通过
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$has = Currency::where('name', $name)->first();
if (empty($id) && !empty($has)) {
return $this->error($name . ' 已存在');
}
if (empty($id)) {
$currency = new Currency();
$currency->create_time = time();
} else {
$currency = Currency::find($id);
}
$currency->name = $name;
// $acceptor->token = $token;
// $acceptor->get_address = $get_address;
$currency->sort = intval($sort);
$currency->logo = $logo;
$currency->is_legal = $is_legal;
$currency->is_lever = $is_lever;
$currency->is_match = $is_match;
$currency->min_number = $min_number;
$currency->rate = $rate;
$currency->total_account = $total_account;
$currency->key = $key;
$currency->contract_address = $contract_address;
$currency->type = $type;
$currency->is_display = 1;
DB::beginTransaction();
try {
$currency->save();//保存币种
// if(empty($id)){// 如果是添加新币 //没添加一种交易币,就给用户添加一个交易币钱包
// $currency_id = Currency::where('name',$name)->first()->id;
// $users = Users::all();
// foreach ($users as $key => $value) {
// $userWallet = new UsersWallet();
// $userWallet->user_id = $value->id;
// $userWallet->currency = $currency_id;
// $userWallet->create_time = time();
// $userWallet->save();
// }
// }
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
// $limit = $request->get('limit', 10);
// $account_number = $request->get('account_number','');
$result = new LeverMultiple();
$count=$result::all()->count();
$result = $result->orderBy('currency_id','asc')->get()->toArray();
// var_dump($result);die;
foreach($result as $key=>$value)
{
if($value['type']==1)
{
$result[$key]['type']="倍数";
}
else
{
$result[$key]['type']="手数";
}
}
return response()->json(['code' => 0, 'data' => $result, 'count' => $count]);
}
public function del()
{
$admin = LeverMultiple::find(Input::get('id'));
if($admin == null) {
abort(404);
}
$bool = $admin->delete();
if($bool){
return $this->success('删除成功');
}else{
return $this->error('删除失败');
}
}
public function edit(Request $request){
$id = $request->get('id',0);
if (empty($id)){
return $this->error("参数错误");
}
$result = LeverMultiple::find($id);
//
// $res=UserCashInfo::where('user_id',$id)->first();
return view('admin.levermultiple.edit',['result'=>$result]);
}
//编辑用户信息
public function doedit(){
$password = Input::get("value");
$id = Input::get("id");
if (empty($id)) return $this->error("参数错误");
$user = LeverMultiple::find($id);
$user->value=$password;
if (empty($user)) return $this->error("数据未找到");
// DB::beginTransaction();
try {
$aa=$user->save();
// var_dump($aa);die;
return $this->success('编辑成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
/**
* 交易对显示
*
* @return void
*/
public function match()
{
return view('admin.currency.match');
}
public function matchList(Request $request)
{
$legal_id = $request->route('legal_id');
$limit = $request->input('limit', 10);
$legal = Currency::find($legal_id);
$matchs = $legal->quotation()->paginate($limit);
return $this->layuiData($matchs);
}
public function addMatch($legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
abort(403, '指定币种不是法币,不能添加交易对');
}
$currencies = Currency::where('id', '<>', $legal_id)->get();
$market_from_names = CurrencyMatch::enumMarketFromNames();
return view('admin.currency.match_add')->with('currencies', $currencies)
->with('market_from_names', $market_from_names);
}
public function postAddMatch(Request $request, $legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
return $this->error('指定币种不是法币,不能添加交易对');
}
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
//检测交易对是否已存在
$exist = CurrencyMatch::where('currency_id', $currency_id)
->where('legal_id', $legal_id)
->first();
if ($exist) {
return $this->error('对应交易对已存在');
}
CurrencyMatch::unguard();
$currency_match = CurrencyMatch::create([
'legal_id' => $legal_id,
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'spread' => $spread,
'overnight' => $overnight,
'create_time' => time(),
]);
CurrencyMatch::reguard();
return isset($currency_match->id) ? $this->success('添加成功') : $this->error('添加失败');
}
public function editMatch($id)
{
$currency_match = CurrencyMatch::find($id);
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
$market_from_names = CurrencyMatch::enumMarketFromNames();
$currencies = Currency::where('id', '<>', $currency_match->legal_id)->get();
$var = compact('currency_match', 'currencies', 'market_from_names');
return view('admin.currency.match_add', $var);
}
public function postEditMatch(Request $request, $id)
{
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
$currency_match = CurrencyMatch::find($id);
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
CurrencyMatch::unguard();
$result = $currency_match->fill([
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'spread' => $spread,
'overnight' => $overnight,
'create_time' => time(),
])->save();
CurrencyMatch::reguard();
return $result ? $this->success('保存成功') : $this->error('保存失败');
}
public function delMatch($id)
{
$result = CurrencyMatch::destroy($id);
return $result ? $this->success('删除成功') : $this->error('删除失败');
}
}
@@ -0,0 +1,67 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Currency;
use App\LeverTransaction;
class LeverTransactionController extends Controller
{
public function index()
{
$currencies = Currency::where('is_legal', 1)->get();
return view('admin.lever.hazard.index', [
'currencies' => $currencies,
]);
}
public function lists()
{
$limit = $request->input('limit', 10);
$legal_id = $request->input('legal_id', 0);
$type = $request->input('type', 0);
$operate = $request->input('operate', -1);
$hazard_rate = $request->input('hazard_rate', 0);
$user_hazard = LeverTransaction::where('status', LeverTransaction::TRANSACTION)
->where(function ($query) use ($type, $legal_id) {
($type != -1 && in_array($type, [1, 2])) && $query->where('type', $type);
$legal_id != -1 && $query->where('legal', $legal_id);
})
->select('user_id')
->selectRaw('SUM((CASE `type` WHEN 1 THEN `update_price` - `price` WHEN 2 THEN `price` - `update_price` END) * `number` * `multiple`) AS `profits_total`')
->selectRaw('SUM(`caution_money`) AS `caution_money_total`')
->selectRaw('SUM(`origin_caution_money`) AS `origin_caution_money_total`')
->groupBy('user_id')
->paginate($limit);
$items = $user_hazard->getCollection();
$items->transform(function ($item, $key) use ($legal_id) {
$user_wallet = UsersWallet::where('currency', $legal_id)
->where('user_id', $item->user_id)
->first();
$item->setAppends(['mobile', 'account_number']);
$hazard_rate = LeverTransaction::getWalletHazardRate($user_wallet);
$balance = $user_wallet->lever_balance ?? 0;
$item->setAttribute('lever_balance', $balance)
->setAttribute('hazard_rate', $hazard_rate);
return $item;
});
if ($operate != -1 && !empty($hazard_rate)) {
switch ($operate) {
case 1:
$operate_symbol = '>=';
break;
case 2:
$operate_symbol = '<=';
break;
default:
$operate_symbol = null;
break;
}
$items = $items->where('hazard_rate', $operate_symbol, $hazard_rate);
}
$user_hazard->setCollection($items);
return $this->layuiData($user_hazard);
}
}
@@ -0,0 +1,448 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\LeverMultiple;
use App\CurrencyMatch;
use App\Setting;
use App\UsersWallet;
use App\WalletLog;
use App\UsersWalletOut;
use App\Users;
use App\Currency;
use Illuminate\Support\Facades\Input;
use App\Levertolegal;
use App\AccountLog;
class LevertolegalController extends Controller
{
public function index()
{
return view('admin.levertolegal.index');
}
public function add()
{
return view('admin.levertolegal.add');
}
public function doadd(Request $request)
{
$aaaaaaa=new LeverMultiple();
$aaaaaaa->value= Input::get('value', '');
$aaaaaaa->type=Input::get('type', '');
//var_dump($aaaaaaa);die;
try {
$aaaaaaa->save();
}catch (\Exception $ex){
}
return $this->success('添加成功');
}
public function postAdd(Request $request)
{
$id = $request->get('id', 0);
$name = $request->get('name', '');
// $token = $request->get('token','');
// $get_address = $request->get('get_address','');
$sort = $request->get('sort', 0);
$logo = $request->get('logo', '');
$type = $request->get('type', '');
$is_legal = $request->get('is_legal', '');
$is_lever = $request->get('is_lever', '');
$is_match = $request->get('is_match', '');
$min_number = $request->get('min_number', 0);
$rate = $request->get('rate', 0);
$total_account = $request->get('total_account', 0);
$key = $request->get('key', 0);
$contract_address = $request->get('contract_address', 0);
//自定义验证错误信息
$messages = [
'required' => ':attribute 为必填字段',
];
$validator = Validator::make($request->all(), [
'name' => 'required',
'sort' => 'required',
'type' => 'required',
'is_legal' => 'required',
'is_lever' => 'required',
// 'logo'=>'required',
], $messages);
//如果验证不通过
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
$has = Currency::where('name', $name)->first();
if (empty($id) && !empty($has)) {
return $this->error($name . ' 已存在');
}
if (empty($id)) {
$currency = new Currency();
$currency->create_time = time();
} else {
$currency = Currency::find($id);
}
$currency->name = $name;
// $acceptor->token = $token;
// $acceptor->get_address = $get_address;
$currency->sort = intval($sort);
$currency->logo = $logo;
$currency->is_legal = $is_legal;
$currency->is_lever = $is_lever;
$currency->is_match = $is_match;
$currency->min_number = $min_number;
$currency->rate = $rate;
$currency->total_account = $total_account;
$currency->key = $key;
$currency->contract_address = $contract_address;
$currency->type = $type;
$currency->is_display = 1;
DB::beginTransaction();
try {
$currency->save();//保存币种
// if(empty($id)){// 如果是添加新币 //没添加一种交易币,就给用户添加一个交易币钱包
// $currency_id = Currency::where('name',$name)->first()->id;
// $users = Users::all();
// foreach ($users as $key => $value) {
// $userWallet = new UsersWallet();
// $userWallet->user_id = $value->id;
// $userWallet->currency = $currency_id;
// $userWallet->create_time = time();
// $userWallet->save();
// }
// }
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
// $limit = $request->get('limit', 10);
// $account_number = $request->get('account_number','');
$result = new Levertolegal();
$count=$result::all()->count();
$result = $result->leftjoin("users","lever_tolegal.user_id","=","users.id")->where("lever_tolegal.type","=",1)->orderBy("lever_tolegal.add_time","desc")->select("lever_tolegal.*","users.phone")->get()->toArray();
foreach($result as $key=>$value)
{
$result[$key]["add_time"]=date("Y-m-d H:i:s",$value["add_time"]);
$result[$key]["type"]="杠杆转法币";
}
// var_dump($result);die;
return response()->json(['code' => 0, 'data' => $result, 'count' => $count]);
}
//审核
public function addshow(Request $request)
{
$id = $request->get('id',null);
$res= Levertolegal::find($id);
$data = $res->toArray();
return view('admin.levertolegal.update',['result'=>$data]);
}
////审核通过
public function postAddyes(Request $request)
{
$id = $request->post('id',null);
$user_id = $request->post('user_id',null);
$number= $request->post('number',null);
//查询出usdt币的id
$usdt_id=Currency::where("name","=","USDC")->first()->id;
//查询出对应的钱包对象
$usdt_users_wallet=UsersWallet::where("currency","=",$usdt_id)->where("user_id","=",$user_id)->first();
// var_dump($usdt_users_wallet);;die;
$data_wallet1 = [
'balance_type' => 3,//余额类型:1.法币,2.币币,3.杆杠
'wallet_id' => $usdt_users_wallet->id,
'lock_type' => 0,
'create_time' => time(),
'before' => $usdt_users_wallet->lever_balance,
'change' => $number,
'after' => bc_sub($usdt_users_wallet->lever_balance, $number, 5),
];
$data_wallet2 = [
'balance_type' => 1,//余额类型:1.法币,2.币币,3.杆杠
'wallet_id' => $usdt_users_wallet->id,
'lock_type' => 0,
'create_time' => time(),
'before' => $usdt_users_wallet->legal_balance,
'change' => $number,
'after' => bc_add($usdt_users_wallet->legal_balance, $number, 5),
];
// $usdt_users_wallet->lever_balance = $usdt_users_wallet->lever_balance - $number;
DB::beginTransaction();
try {
$usdt_users_wallet->legal_balance = $usdt_users_wallet->legal_balance + $number;
//解冻冻结余额
// var_dump($number);die;
$usdt_users_wallet->lock_lever_balance = $usdt_users_wallet->lock_lever_balance - $number;
$usdt_users_wallet->save();
//更改审核状态为通过
$status_res=new Levertolegal();
$status11=$status_res->find($id);
$status11->status=2;//1:未审核 2:审核通过 3:审核不通过
$status11->save();
AccountLog::insertLog([
'user_id' => $user_id,
'value' => -$number,
'currency' => $usdt_id,
'info' => AccountLog::getTypeInfo(AccountLog::WALLET_LEVEL_LEGAL_OUT),//杠杆转法币审核通过,杠杆减少
'type' => AccountLog::WALLET_LEVEL_LEGAL_OUT,
], $data_wallet1);
AccountLog::insertLog([
'user_id' => $user_id,
'value' => $number,
'currency' => $usdt_id,
'info' => AccountLog::getTypeInfo(AccountLog::WALLET_LEVEL_LEGAL_IN),//杠杆转法币审核通过,法币增加
'type' => AccountLog::WALLET_LEVEL_LEGAL_IN,
], $data_wallet2);
DB::commit();
return $this->success('划转成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
//审核不通过
public function postAddno(Request $request)
{
$id = $request->post('id',null);
$user_id = $request->post('user_id',null);
$number= $request->post('number',null);
//查询出usdt币的id
$usdt_id=Currency::where("name","=","USDC")->first()->id;
//查询出对应的钱包对象
$usdt_users_wallet=UsersWallet::where("currency","=",$usdt_id)->where("user_id","=",$user_id)->first();
try {
$usdt_users_wallet->lever_balance = $usdt_users_wallet->lever_balance + $number;
//审核不通过解冻冻结余额
$usdt_users_wallet->lock_lever_balance = $usdt_users_wallet->lock_lever_balance - $number;
$usdt_users_wallet->save();
//更改审核状态为通过
$status_res=new Levertolegal();
$status11=$status_res->find($id);
$status11->status=3;//1:未审核 2:审核通过 3:审核不通过
$status11->save();
$usdt_users_wallet->save();
AccountLog::newinsertLog([
'user_id' => $user_id,
'value' => $number,
'currency' => $usdt_id,
'info' => AccountLog::getTypeInfo(AccountLog::WALLET_JIEDONGGANGGAN),
'type' => AccountLog::WALLET_JIEDONGGANGGAN,
]);
DB::commit();
return $this->success('审核不通过!');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
public function del()
{
$admin = LeverMultiple::find(Input::get('id'));
if($admin == null) {
abort(404);
}
$bool = $admin->delete();
if($bool){
return $this->success('删除成功');
}else{
return $this->error('删除失败');
}
}
public function edit(Request $request){
$id = $request->get('id',0);
if (empty($id)){
return $this->error("参数错误");
}
$result = LeverMultiple::find($id);
//
// $res=UserCashInfo::where('user_id',$id)->first();
return view('admin.levermultiple.edit',['result'=>$result]);
}
//编辑用户信息
public function doedit(){
$password = Input::get("value");
$id = Input::get("id");
if (empty($id)) return $this->error("参数错误");
$user = LeverMultiple::find($id);
$user->value=$password;
if (empty($user)) return $this->error("数据未找到");
// DB::beginTransaction();
try {
$aa=$user->save();
// var_dump($aa);die;
return $this->success('编辑成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
/**
* 交易对显示
*
* @return void
*/
public function match()
{
return view('admin.currency.match');
}
public function matchList(Request $request)
{
$legal_id = $request->route('legal_id');
$limit = $request->input('limit', 10);
$legal = Currency::find($legal_id);
$matchs = $legal->quotation()->paginate($limit);
return $this->layuiData($matchs);
}
public function addMatch($legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
abort(403, '指定币种不是法币,不能添加交易对');
}
$currencies = Currency::where('id', '<>', $legal_id)->get();
$market_from_names = CurrencyMatch::enumMarketFromNames();
return view('admin.currency.match_add')->with('currencies', $currencies)
->with('market_from_names', $market_from_names);
}
public function postAddMatch(Request $request, $legal_id)
{
$is_legal = Currency::where('id', $legal_id)->value('is_legal');
if (!$is_legal) {
return $this->error('指定币种不是法币,不能添加交易对');
}
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
//检测交易对是否已存在
$exist = CurrencyMatch::where('currency_id', $currency_id)
->where('legal_id', $legal_id)
->first();
if ($exist) {
return $this->error('对应交易对已存在');
}
CurrencyMatch::unguard();
$currency_match = CurrencyMatch::create([
'legal_id' => $legal_id,
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'spread' => $spread,
'overnight' => $overnight,
'create_time' => time(),
]);
CurrencyMatch::reguard();
return isset($currency_match->id) ? $this->success('添加成功') : $this->error('添加失败');
}
public function editMatch($id)
{
$currency_match = CurrencyMatch::find($id);
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
$market_from_names = CurrencyMatch::enumMarketFromNames();
$currencies = Currency::where('id', '<>', $currency_match->legal_id)->get();
$var = compact('currency_match', 'currencies', 'market_from_names');
return view('admin.currency.match_add', $var);
}
public function postEditMatch(Request $request, $id)
{
$currency_id = $request->input('currency_id');
$is_display = $request->input('is_display', 1);
$market_from = $request->input('market_from', 0);
$open_transaction = $request->input('open_transaction', 0);
$open_lever = $request->input('open_lever', 0);
$lever_share_num = $request->input('lever_share_num', 1);
$spread = $request->input('spread', 0);
$overnight = $request->input('overnight', 0);
$lever_trade_fee = $request->input('lever_trade_fee', 0);
$currency_match = CurrencyMatch::find($id);
if (!$currency_match) {
abort(403, '指定交易对不存在');
}
CurrencyMatch::unguard();
$result = $currency_match->fill([
'currency_id' => $currency_id,
'is_display' => $is_display,
'market_from' => $market_from,
'open_transaction' => $open_transaction,
'open_lever' => $open_lever,
'lever_share_num' => $lever_share_num,
'lever_trade_fee' => $lever_trade_fee,
'spread' => $spread,
'overnight' => $overnight,
'create_time' => time(),
])->save();
CurrencyMatch::reguard();
return $result ? $this->success('保存成功') : $this->error('保存失败');
}
public function delMatch($id)
{
$result = CurrencyMatch::destroy($id);
return $result ? $this->success('删除成功') : $this->error('删除失败');
}
}
@@ -0,0 +1,112 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Ltc;
use App\LtcBuy;
use Symfony\Component\HttpFoundation\Request;
use Illuminate\Support\Facades\Input;
class LtcController extends Controller{
public function index(){
return view("admin.ltc.index");
}
public function lists(Request $request){
$limit = $request->get('limit',10);
$list = new Ltc();
$list = $list->orderBy('id','desc')->paginate($limit);
return response()->json(['code'=>0,'data'=>$list->items(),'count'=>$list->total()]);
}
public function add()
{
$level = Ltc::getLevelName();
return view('admin.ltc.add',['levelName'=>$level]);
}
public function postAdd(Request $request){
$name = $request->get('name','');
$profile = $request->get('profile','');
$detail = $request->get('detail','');
$price = $request->get('price','');
$number = $request->get('number','');
$thumbnail = $request->get('thumbnail','');
if(empty($name)){
return $this->error('请输入名称');
}
if(empty($profile)){
return $this->error('请输入简介');
}
if(empty($detail)){
return $this->error('请输入详情');
}
if(empty($price)){
return $this->error('请输入价格');
}
if(empty($number)){
return $this->error('请输入数量');
}
if(empty($thumbnail)){
return $this->error("请上传图片");
}
$id = $request->get('id','');
if(empty($id)){
$result = new Ltc();
}else{
$result = Ltc::find($id);
}
try{
$result->name = $name;
$result->profile = $profile;
$result->detail = $detail;
$result->price = $price;
$result->number = $number;
$result->thumbnail = $thumbnail;
$result->create_time = time();
$result->save();
return $this->success('添加成功');
}catch (\Exception $e){
return $this->error($e->getMessage());
}
}
public function edit()
{
$id = Input::get('id',null);
if(empty($id)){
return $this->error('参数错误');
}
$result = Ltc::find($id);
if(empty($result)){
return $this->error('无此数据');
}
$level = Ltc::getLevelName();
return view('admin.ltc.add', ['result'=>$result,'levelName'=>$level]);
}
public function del(Request $request){
$id = $request->get('id','');
if(empty($id)){
return $this->error('参数错误');
}
$result = Ltc::find($id);
try{
$result->delete();
return $this->success('删除成功');
}catch(\Exception $e){
return $this->error($e->getMessage());
}
}
public function buyList(Request $request){
$limit = $request->get('limit',10);
$result = new LtcBuy();
$result = $result->orderBy('id','desc')->paginate($limit);
return response()->json(['code'=>0,'data'=>$result->items(),'count'=>$result->total()]);
}
}
?>
@@ -0,0 +1,141 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\{
MailMessage,
Users,
UserChat
};
use App\Utils\Hash;
class MailMessageController extends Controller
{
public function index()
{
return view("admin.message.index");
}
public function list(Request $request){
$limit = $request->get('limit');
$start_time = strtotime($request->get('start_time', 0));
$end_time = strtotime($request->get('end_time', 0));
$list = MailMessage::where(function ($query) use ($start_time) {
if (!empty($start_time)) {
$query->where('create_time', '>=', $start_time);
}
})->where(function ($query) use ($end_time) {
if ($end_time != '') {
$query->where('create_time', '<=', $end_time);
}
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($list);
}
public function add(){
$user_list = Users::all();
return view("admin.message.add", [
'user_list' => $user_list
]);
}
public function postAdd(Request $request){
$userIds = Input::get("userIds");
$title = Input::get("title");
$content = Input::get("content");
$abstract = Input::get("abstract");
if (empty($title) || empty($content)) return $this->error("参数错误");
DB::beginTransaction();
$mailMessage = new MailMessage();
try {
$mailMessage->user_ids = $userIds ?? '';
$mailMessage->title = $title ?? '';
$mailMessage->content = $content ?? '';
$mailMessage->status = 1;
$mailMessage->abstract = $abstract;
$mailMessage->create_time = time();
$mailMessage->save();
DB::commit();
$send = ['type' => 'mail_message', 'period' => true];
UserChat::sendChat($send);
return $this->success('保存发送成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
public function post_add(Request $request){
$userIds = Input::get("userIds");
$title = Input::get("title");
$content = Input::get("content");
if (empty($title) || empty($content)) return $this->error("参数错误");
DB::beginTransaction();
$mailMessage = new MailMessage();
try {
$mailMessage->user_ids = $userIds ?? '';
$mailMessage->title = $title ?? '';
$mailMessage->content = $content ?? '';
$mailMessage->status = 0;
$mailMessage->abstract = $abstract;
$mailMessage->create_time = time();
$mailMessage->save();
DB::commit();
return $this->success('保存成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
public function del(Request $request)
{
$id = $request->get('id');
$userreal = MailMessage::find($id);
if (empty($userreal)) {
$this->error("信息未找到");
}
try {
$userreal->delete();
return $this->success('删除成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
public function fs(Request $request){
$id = $request->get('id');
$userreal = MailMessage::find($id);
if (empty($userreal)) {
$this->error("信息未找到");
}
try {
$userreal -> status = 1;
$userreal->save();
return $this->success('发送成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
}
@@ -0,0 +1,129 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use App\UsersWallet;
use App\Users;
use App\Currency;
use App\MarketDay;
use App\MarketHour;
class marketController extends Controller
{
public function index()
{
return view('admin.market.index');
}
public function add()
{
$legal = Currency::where('is_legal', 1)->where('is_display', 1)->get();
$currency = Currency::where('is_display', 1)->get();
return view('admin.market.add')->with(['rest' => $legal, 'list' => $currency]);
}
public function postAdd(Request $request)
{
$currency_id = $request->get('currency_id', 0);
$legal_id = $request->get('legal_id', '');
$start_price = $request->get('start_price', 0);
$end_price = $request->get('end_price', '');
$type = $request->get('type', '');
$highest = $request->get('highest', '');
$mminimum = $request->get('mminimum', '');
$number = $request->get('number', 0);
$times = $request->get('start_time', 0);
if ($legal_id == $currency_id) {
return $this->error('法币和币种不能一样');
}
if (empty($start_price) || empty($end_price) || empty($highest) || empty($mminimum)) {
return $this->error('请把数据填写完整');
}
if ($type == 0) {
$market = new MarketDay();
$times = date('Y-m-d', strtotime($times));
$market->times = $times;
} else {
$market = new MarketHour();
$market->type = $type;
$times = strtotime($times);
$market->day_time = $times;
}
$market->currency_id = $currency_id;
$market->legal_id = $legal_id;
$market->start_price = $start_price;
$market->end_price = $end_price;
$market->highest = $highest;
$market->mminimum = $mminimum;
$market->number = $number;
DB::beginTransaction();
try {
$market->save();//保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
//行情数据展示
public function lists(Request $request)
{
$limit = $request->get('limit', 20);
//$account_number = $request->get('account_number','');
$result = new MarketHour();
$result = $result->orderBy('id', 'asc')->orderBy('id', 'desc')->paginate($limit);
foreach ($result as $k => $v) {
$legal = Currency::find($v->legal_id);
$v->legal_name = $legal->name;
$currency = Currency::find($v->currency_id);
$v->currency_name = $currency->name;
$v->day_time=date("Y-m-d H:i:s",$v->day_time);
}
return $this->layuiData($result);
}
public function delete(Request $request)
{
$id = $request->get('id', 0);
$acceptor = MarketDay::find($id);
if (empty($acceptor)) {
return $this->error('无此记录');
}
try {
$acceptor->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function isDisplay(Request $request)
{
$id = $request->get('id', 0);
$currency = Currency::find($id);
if (empty($currency)) {
return $this->error('参数错误');
}
if ($currency->is_display == 1) {
$currency->is_display = 0;
} else {
$currency->is_display = 1;
}
try {
$currency->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
}
@@ -0,0 +1,315 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
use App\MicroNumber;
use App\MicroOrder;
use App\MicroSecond;
use App\Currency;
use App\CurrencyMatch;
use App\Setting;
use App\UsersWallet;
use App\Users;
class MicroController extends Controller
{
public function index()
{
return view('admin.micro.index');
}
public function add(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new MicroNumber();
} else {
$result = MicroNumber::find($id);
}
$currencies = Currency::where('is_micro', 1)->get();
return view('admin.micro.add')->with('result', $result)->with('currencies', $currencies);
}
public function postAdd(Request $request)
{
$id = $request->get('id', 0);
$currency_id = $request->get('currency_id', '');
$number = $request->get('number', '');
if (empty($id)) {
$micro_number = new MicroNumber();
} else {
$micro_number = MicroNumber::find($id);
if ($micro_number == null) {
return redirect()->back();
}
}
$micro_number->currency_id = $currency_id;
$micro_number->number = $number;
DB::beginTransaction();
try {
$micro_number->save(); //保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function lists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new MicroNumber();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function del(Request $request)
{
$id = $request->get('id', 0);
$nicro_number = MicroNumber::find($id);
if (empty($nicro_number)) {
return $this->error('参数错误');
}
try {
$nicro_number->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
//micro_seconds
public function secondsIndex()
{
return view('admin.micro.seconds_index');
}
public function secondsAdd(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
$result = new MicroSecond();
} else {
$result = MicroSecond::find($id);
}
// $currencies = Currency::where('is_micro',1)->get();
return view('admin.micro.seconds_add')->with('result', $result);
}
public function secondsPostAdd(Request $request)
{
$id = $request->get('id', 0);
$seconds = $request->get('seconds', '');
$status = $request->get('status', '');
$profit_ratio = $request->get('profit_ratio', '');
$loss_ratio = $request->get('loss_ratio', '');
$max_amount = $request->get('max_amount', '');
$min_amount = $request->get('min_amount', '');
if (empty($id)) {
$result = new MicroSecond();
} else {
$result = MicroSecond::find($id);
if ($result == null) {
return redirect()->back();
}
}
$result->seconds = $seconds;
$result->profit_ratio = $profit_ratio;
$result->loss_ratio = $loss_ratio;
$result->status = $status;
$result->max_amount = $max_amount;
$result->min_amount = $min_amount;
DB::beginTransaction();
try {
$result->save(); //保存币种
DB::commit();
return $this->success('操作成功');
} catch (\Exception $exception) {
DB::rollBack();
return $this->error($exception->getMessage());
}
}
public function secondsLists(Request $request)
{
$limit = $request->get('limit', 10);
$result = new MicroSecond();
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
public function secondsDel(Request $request)
{
$id = $request->get('id', 0);
$result = MicroSecond::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
try {
$result->delete();
return $this->success('删除成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function secondsStatus(Request $request)
{
$id = $request->get('id', 0);
$result = MicroSecond::find($id);
if (empty($result)) {
return $this->error('参数错误');
}
if ($result->status == 1) {
$result->status = 0;
} else {
$result->status = 1;
}
try {
$result->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function order()
{
$currencies = Currency::where('is_micro', 1)->get();
$currency_matches = CurrencyMatch::where('open_microtrade', 1)->get();
return view('admin.micro.orders')
->with('currencies', $currencies)
->with('currency_matches', $currency_matches);
}
public function orderList(Request $request)
{
$currency_id = $request->input('currency_id', -1);
$match_id = $request->input('match_id', -1);
$type = $request->input('type', -1);
$account = $request->input('account', '');
$name = $request->input('name', '');
$limit = $request->input('limit', 10);
$status = $request->input('status', -1);
$start = $request->input("start_time", '');
$end = $request->input("end_time", '');
$pre_profit_result = $request->input('pre_profit_result', -2);
$profit_result = $request->input('profit_result', -2);
$results = MicroOrder::with(['currency', 'currencyMatch', 'user'])
->when($currency_id != -1, function ($query) use ($currency_id) {
$query->where('currency_id', $currency_id);
})->when($match_id != -1, function ($query) use ($match_id) {
$query->where('match_id', $match_id);
})->when($type != -1, function ($query) use ($type) {
$query->where('type', $type);
})->when($status != -1, function ($query) use ($status) {
$query->where('status', $status);
})->when($pre_profit_result != -2, function ($query) use ($pre_profit_result) {
$query->where('pre_profit_result', $pre_profit_result);
})->when($profit_result != -2, function ($query) use ($profit_result) {
$query->where('profit_result', $profit_result);
})->when($account != '' || $name != '', function ($query) use ($account, $name) {
$query->whereHas('user', function ($query) use ($account, $name) {
$account != '' && $query->where("phone", 'like', '%' . $account . '%')->orwhere('email', 'like', '%' . $account . '%');
$query->when($name != '', function ($query) use ($name) {
$query->whereHas('userReal', function ($query) use ($name) {
$query->where("name", 'like', '%' . $name . '%');
});
});
});
})->when($start !='', function ($query) use ($start) {
$query->where('created_at','>=', $start);
})->when($end !='', function ($query) use ($end) {
$query->where('created_at','<=', $end);
})->orderBy('id', 'desc')
->paginate($limit);
$items = $results->getCollection();
$items->transform(function ($item, $key) {
return $item->append('pre_profit_result_name')->makeVisible('pre_profit_result');
});
$results->setCollection($items);
return $this->layuiData($results);
}
public function edit(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
return $this->error("参数错误");
}
$result = MicroOrder::findOrNew($id);
return view('admin.micro.edit', ['result' => $result]);
}
//编辑用户信息
public function editPost()
{
$risk = Input::get('risk', 0);
$id = Input::get("id");
if (empty($id)) return $this->error("参数错误");
$res = MicroOrder::find($id);
if (empty($res)) {
return $this->error("数据未找到");
}
if ($res->status != 1) {
return $this->error("数据状态下不能修改");
}
$res->pre_profit_result = $risk;
DB::beginTransaction();
try {
$res->save();
DB::commit();
return $this->success('编辑成功');
} catch (\Exception $ex) {
DB::rollBack();
return $this->error($ex->getMessage());
}
}
public function batchRisk(Request $request)
{
try {
$ids = $request->input('ids', []);
$risk = $request->input('risk', 0);
if (empty($ids)) {
throw new \Exception('请先选择要处理的交易');
}
if (!in_array($risk, [-1, 0, 1])) {
throw new \Exception('输赢类型不正确');
}
$affect_rows = MicroOrder::where('status', MicroOrder::STATUS_OPENED)
->whereIn('id', $ids)
->update([
'pre_profit_result' => $risk,
]);
return $this->success('本次提交:' . count($ids) . '条,设置成功:' . $affect_rows . '条');
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
}
+162
View File
@@ -0,0 +1,162 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Currency;
use App\CurrencyMatch;
use App\MarketHour;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use App\MyQuotation as NeedleModel;
class MyQuotation extends \App\Http\Controllers\Admin\Controller
{
//
public function index(Request $request)
{
$bases=DB::table("currency_matches")->where("market_from",2)->select("currency_id")->get();
$bases=json_decode(json_encode($bases),true);
foreach ($bases as $k=>$v){
$one=DB::table("currency")->where("id",$v["currency_id"])->select("id","name")->first();
$bases[$k]["name"]=$one->name;
}
// var_dump($bases);die;
$base=$request->get("base",$bases[0]["name"]);
$news = NeedleModel::where("base",$base)->orderBy('id', 'desc')->paginate(10);
$news->appends(['base'=>$base])->render();
$data = [
'currencys' => $currencys = CurrencyMatch::where('market_from', 3)->get(),
'news' => $news
];
$res=[
'data' => $data,
"bases"=>$bases,
"base"=>$base
];
//$res->appends(['base'=>$base])->render();
return view('admin.needle.quotation', $res);
}
public function lists(Request $request)
{
$param = [
'index' => 'market.quotation',
'type' => 'doc',//$type,
'body' => [
'query' => [
'bool' => [
'must' => [
['match' => ['base' => $request->get('currency')]],
],
],
],
'sort' => [
'itime' => ['order' => 'asc']
],
'size' => $request->get('limit'),
'from' => ($request->get('page') - 1) * $request->get('limit')
],
];
$esclient = MarketHour::getEsearchClient();
$result = $esclient->search($param);
$total = 0;
$data = [];
if (isset($result['hits'])) {
$data = array_column($result['hits']['hits'], '_source');
$total = $result['hits']['total']['value'];
}
$res = ['code' => 0,
'msg' => '',
'count' => $total,
'data' => $data];
return $res;
}
public function delete(Request $request)
{
$param = [
'index' => 'market.quotation',
'type' => 'doc',//$type,
];
}
public function reset(Request $request)
{
$param = [
'index' => 'market.quotation',
];
$eclient = MarketHour::getEsearchClient();
$eclient->indices()->delete($param);
foreach (['5min', '15min', '30min', '60min', '1day', '1week', '1mon'] as $v) {
try {
$param = [
'index' => 'market.kline.' . $v,
];
$eclient = MarketHour::getEsearchClient();
$eclient->indices()->delete($param);
} catch (\Exception $e) {
}
}
return ['code' => 1];
}
public static function needleList($num = 0, $name)
{
$esclient = MarketHour::getEsearchClient();
$param = [
'index' => 'market.quotation',
'type' => 'doc',//$type,
'body' => [
'query' => [
'bool' => [
'must' => [
['match' => ['base' => $_POST]],
['match' => ['base-currency' => $base_currency]],
['match' => ['quote-currency' => $quote_currency]],
],
'filter' => [
'range' => [
'id' => [
'gte' => $from,
'lte' => $to,
],
],
],
],
],
'sort' => [
],
'size' => 20,
'from' => 20
],
];
$result = $esclient->search($param);
if (isset($result['hits'])) {
$data = [];
// foreach($result['hits']['hits'] as $val)
// {
// $val['_source'];
// }
$data = array_column($result['hits']['hits'], '_source');
return $data;
} else {
return [];
}
// $news_query = NeedleModel::where(function ($query) use ($cId) {
// $cId > 0 && $query->where('id', $cId);
// })->orderBy('id', 'desc');
$news = $num != 0 ? $news_query->paginate($num) : $news_query->get();
return $news;
}
}
@@ -0,0 +1,418 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use App\News as NewsModel;
use App\NewsCategory;
use App\NewsDiscuss;
use DB;
use Validator;
class NewsController extends Controller
{
use ValidatesRequests;
/**
* @c_id integer 新闻分类
* @keyword string 关键词
* @num integer 每页记录数,为0则不分页
*/
public static function newsList($cId = 0, $keyword = '', $lang = '', $num = 0)
{
$keyword = '%' . $keyword . '%';
$news_query = NewsModel::where(function ($query) use ($cId, $keyword, $lang) {
!empty($keyword) && $query->where('title', 'like', $keyword);
$cId > 0 && $query->where('c_id', $cId);
!empty($lang) && $query->where('lang', $lang);
})->orderBy('id', 'desc');
$news = $num != 0 ? $news_query->paginate($num) : $news_query->get();
return $news;
}
/**
* @num integer 每页记录数,为0则不分页
* @id integer 分类ID,为0则返回所有
*/
public static function newsCateList($num = 0, $id = 0)
{
if($id == 0) {
if($num != 0) {
$discuss = NewsCategory::orderBy('id', 'desc')->paginate($num);
} else {
$discuss = NewsCategory::orderBy('id', 'desc')->get();
}
} else {
if($num != 0) {
$discuss = NewsCategory::where('id', $id)->orderBy('id', 'asc')->paginate($num);
} else {
$discuss = NewsCategory::where('id', $id)->orderBy('id', 'asc')->get();
}
}
return $discuss;
}
/**
* @nId integer 所属新闻ID
* @num integer 每页记录数,为0则不分页
*/
public static function newsDiscussList($nId = 0, $num = 0)
{
if($nId == 0) {
return false;
} else {
if($num != 0) {
$discuss = NewsDiscuss::where('n_id', $nId)->orderBy('id', 'desc')->paginate($num);
} else {
$discuss = NewsDiscuss::where('n_id', $nId)->orderBy('id', 'desc')->get();
}
}
return $discuss;
}
/**
* 后台新闻列表
*
* @return
*/
public function index(Request $request, $c_id = 0, $keyword = '')
{
$c_id = intval($request->input('c_id', '0'));
$keyword = trim($request->input('keyword', ''));
$lang = trim($request->input('lang', ''));
$cateList = NewsCategory::all();
$news = self::newsList($c_id, $keyword, $lang, 10);
$lang_list = NewsModel::getLangeList();
$count = count($news);
$data = [
'count'=> $count,
'news' => $news->appends([
'c_id' => $c_id,
'keyword' => $keyword,
'lang' => $lang,
]),
'cateList' => $cateList,
];
return view('admin.news.index', [
'data'=> $data,
'lang_list' => $lang_list,
]);
}
/**
* 后台添加新闻表单
*
* @return
*/
public function add(Request $request)
{
$cateList = NewsCategory::all();
$lang_list = NewsModel::getLangeList();
return view('admin.news.add', [
'cateList' => $cateList,
'langList' => $lang_list
]);
}
/**
* 处理添加新闻表单数据
*
* @return
*/
public function postAdd(Request $request)
{
$news = new NewsModel();
$this->validate($request, [
'title' => 'required|min:1|max:128',
'c_id' => 'required|integer',
'author' => 'required|min:1|max:64',
'content' => 'required',
'lang' => 'required',
]);
$news->title = $request->input('title');
$news->c_id = $request->input('c_id');
$news->recommend = $request->input('recommend', 0);
$thumbnail = $request->input('thumbnail', "");
$cover = $request->input('cover', "");
$news->thumbnail = empty($thumbnail) ? URL("images/zwtp.png"):$thumbnail;
$news->cover = empty($cover) ? URL("images/zwtp.png"):$cover;
$news->audit = $request->input('audit', 0);
$news->display = $request->input('display', 0);
$news->discuss = $request->input('discuss', 0);
$news->author = $request->input('author', '管理员') ;
$news->views = $request->input('views', 0);
$news->create_time = $request->input('create_time') == date('Y-m-d') ? strtotime(date('Y-m-d H:i:s')) : strtotime($request->input('create_time'));
$news->browse_grant = $request->input('browse_grant');
$news->keyword = $request->input('keyword', '') ?? '';
$news->abstract = $request->input('abstract', '') ?? '';
$news->content = $request->input('content', '') ?? '';
$news->lang = $request->input('lang', 'zh');
$news->sorts = $request->input('sorts', 0);
$result = $news->save();
return $result ? $this->success('添加成功!') : $this->error('添加失败!');
}
/**
* 编辑新闻表单
*
* @return
*/
public function edit(Request $request, $id = 0)
{
$news = NewsModel::find($id);
$cateList = NewsCategory::all();
$lang_list = NewsModel::getLangeList();
$data = [
'news' => $news,
'cateList' => $cateList,
'langList' => $lang_list,
];
return view('admin.news.add', $data);
}
/**
* 处理编辑表单数据
*/
public function postEdit(Request $request, $id = 0)
{
$news = NewsModel::find($id);
$cateList = NewsCategory::all();
$this->validate($request, [
'title' => 'required|min:1|max:128',
'author' => 'required|min:1|max:64',
'content' => 'required',
'c_id' => 'required|integer|min:1',
'lang' => 'required',
]);
$news->title = $request->input('title');
$news->c_id = $request->input('c_id');
$thumbnail = $request->input('thumbnail', "");
$cover = $request->input('cover', "");
$news->thumbnail = empty($thumbnail) ? URL("images/zwtp.png"):$thumbnail;
$news->cover = empty($cover) ? URL("images/zwtp.png"):$cover;
$news->recommend = $request->input('recommend', 0);
$news->audit = $request->input('audit', 0);
$news->display = $request->input('display', 0);
$news->discuss = $request->input('discuss', 0);
$news->author = $request->input('author', '管理员');
$news->views = $request->input('views', 0);
$news->create_time = $request->input('create_time') == date('Y-m-d') ? strtotime(date('Y-m-d H:i:s')) : strtotime($request->input('create_time'));
$news->browse_grant = $request->input('browse_grant');
$news->keyword = $request->input('keyword', '');
$news->abstract = $request->input('abstract', '');
$news->content = $request->input('content', '');
$news->lang = $request->input('lang', 'zh');
$news->sorts = $request->input('sorts', 0);
$result = $news->save();
return $result ? $this->success('编辑成功!') : $this->error('编辑失败!');
}
/**
* 后台删除新闻
* @param $id 新闻ID
* @param $togetherDel 同评论一起删除
* @return
*/
public function del(Request $request, $id = 0, $togetherDel = 0)
{
//判断新闻对应评论是否一同删除
$result = false;
$s = 0;
if($togetherDel) {
DB::beginTransaction();
NewsDiscuss::where('n_id', $id)->delete() && $s++;
NewsModel::destroy($id) && $s++;
$result = $s == 2;
$result ? DB::commit() : DB::rollBack();
} else {
$result = NewsModel::destroy($id);
}
return $result ? $this->success('删除成功!') : $this->error('删除失败!');
}
/**
* 后台新闻分类列表
*
* @return
*/
public function cateIndex(Request $request)
{
$count = NewsCategory::count();
$newsCate = self::newsCateList(10);
$data = ['count' => $count, 'newsCate' => $newsCate];
return view('admin.news.cateIndex', ['data'=> $data]);
}
/**
* AJAX动态获取分类
* @return array
*/
public function getCateList()
{
$newsCate = self::newsCateList();
$count = $newsCate->count();
$data = [
'count' => $count,
'cate' => $newsCate
];
return $data;
}
/**
* 添加新闻分类表单
*
* @return
*/
public function cateAdd(Request $request)
{
return view('admin.news.cateAdd');
}
/**
* 处理添加分类数据
*
* @return
*/
public function postCateAdd(Request $request)
{
$cate = new NewsCategory();
$this->validate($request, [
'name' => 'required|min:1|max:128',
]);
$cate->name = $request->input('name', '');
$cate->sorts = $request->input('sorts', 0);
$cate->is_show = $request->input('is_show', 1);
$result = $cate->save();
return $result ? $this->success('添加成功!') : $this->error('添加失败!');
}
/**
* 编辑新闻分类表单
*
* @return
*/
public function cateEdit(Request $request, $id = 0)
{
$cate = NewsCategory::find($id);
return view('admin.news.cateAdd', $cate);
}
/**
* 处理编辑新闻分类数据
*
* @return
*/
public function PostCateEdit(Request $request, $id = 0)
{
$cate = NewsCategory::find($id);
$this->validate($request, [
'name' => 'required|min:1|max:128',
]);
$cate->name = $request->input('name', '');
$cate->sorts = $request->input('sorts', 0);
$cate->is_show = $request->input('is_show', 1);
$result = $cate->save();
return $result ? $this->success('修改成功!') : $this->error('修改失败!');
}
/**
* 后台删除新闻分类
*
* @return
*/
public function cateDel(Request $request, $id = 0)
{
//需要先判断所属分类下是否有新闻
$count = NewsModel::where('c_id', $id)->count();
if($count > 0) {
return $this->error('删除失败,原因:对应分类下有新闻!');
} else {
$result = NewsCategory::destroy($id);
return $result ? $this->success('删除成功!') : $this->error('删除失败!');
}
}
/**
* 新闻评论列表
*
* @return
*/
public function discussIndex(Request $request, $nId = 0)
{
$newsDiscuss = self::newsDiscussList($nId, 20);
$news = NewsModel::find($nId);
$data = [
'news' => $news,
'newsDiscuss' => $newsDiscuss
];
return view('admin.news.discussIndex', $data);
}
/**
* AJAX获取评论列表
* @return array
*/
public function getDisscussList(Request $request, $nId = 0)
{
$count = NewsDiscuss::where('n_id', $nId)->count();
$newsCate = self::newsDiscussList($nId);
$data = [
'count' => $count,
'cate' => $newsCate
];
return $data;
}
/**
* 切换新闻评论显示状态
*
* @return
*/
public function discussShowToggle(Request $request, $id = 0)
{
if($id !=0) {
$discuss = NewsDiscuss::find($id);
$discuss->status = 1 - intval($discuss->status);
$result = $discuss->save();
return $result ? $this->success('显示状态改变成功!') : $this->error('显示状态改变失败!');
} else {
return $this->error('ID传参错误');
}
}
/**
* 删除新闻评论
*
* @return
*/
public function discussDel(Request $request, $id = 0)
{
if($id !=0) {
$result = NewsDiscuss::destroy($id);
return $result ? $this->success('删除成功!') : $this->error('删除失败!');
} else {
return $this->error('ID传参错误');
}
}
}
@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Cache\RedisLock;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
use App\PayUserInfo;
class PayController extends Controller
{
public function index()
{
return view("admin.user.pay_info_log");
}
public function payLog(Request $request){
$limit = $request->get('limit', 10);
$userId = $request->get('user_id', '');
$status = $request->get('status', '');
$start_time = $request->get('start_time', '');
$end_time = $request->get('end_time', '');
$list = PayUserInfo::where(function ($query) use ($userId) {
if (!empty($userId)) {
$query->where('user_id', $userId);
}
}) -> where(function ($query) use ($status) {
if ($status != '') {
$query->where('status', $status);
}
}) -> where(function ($query) use ($start_time) {
if (!empty($start_time)) {
$query->where('create_time', '>=', strtotime($start_time));
}
}) -> where(function ($query) use ($end_time) {
if (!empty($end_time)) {
$query->where('create_time', '<=', strtotime($end_time));
}
}) ->orderBy('id', 'asc') -> paginate($limit);
return $this->layuiData($list);
}
public function closeNofity(Request $request){
$id = $request->get('id');
$payUserInfo = PayUserInfo::where("id",$id) ->first();
if (empty($payUserInfo)){
return $this->error('数据信息错误');
}
DB::beginTransaction();
try {
$payUserInfo -> notify_status = 1;
$payUserInfo -> save();
DB::commit();
return $this->success("操作成功");
} catch (\Exception $_var_6) {
DB::rollBack();
return $this->error("关闭通知失败".$_var_6);
}
}
}
@@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\PrizePool;
class PrizePoolController extends Controller
{
public function index()
{
$scene_list = PrizePool::enumScene();
return view('admin.prizepool.index')->with('scene_list', $scene_list);
}
public function lists(Request $request)
{
$limit = $request->input('limit', 10);
$prize_pool = PrizePool::whereHas('toUser', function ($query) use ($request) {
$account_number = $request->input('account_number');
if ($account_number) {
$query->where('account_number', $account_number)
->orWhere('phone', $account_number)
->orWhere('email', $account_number);
}
})->where(function ($query) use ($request) {
$scene = $request->input('scene', -1);
$start_time = strtotime($request->input('start_time', null));
$end_time = strtotime($request->input('end_time', null));
$scene != -1 && $query->where('scene', $scene);
$start_time && $query->where('create_time', '>=', $start_time);
$end_time && $query->where('create_time', '<=', $end_time);
})->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($prize_pool);
}
public function count(Request $request)
{
$count_data = PrizePool::selectRaw('1 as user_count')
->selectRaw('sum(`reward_qty`) as reward_qty')
->whereHas('toUser', function ($query) use ($request) {
$account_number = $request->input('account_number');
if ($account_number) {
$query->where('account_number', $account_number)
->orWhere('phone', $account_number)
->orWhere('email', $account_number);
}
})->where(function ($query) use ($request) {
$scene = $request->input('scene', -1);
$start_time = strtotime($request->input('start_time', null));
$end_time = strtotime($request->input('end_time', null));
$scene != -1 && $query->where('scene', $scene);
$start_time && $query->where('create_time', '>=', $start_time);
$end_time && $query->where('create_time', '<=', $end_time);
})->groupBy('to_user_id')->get();
$user_count = $count_data->pluck('user_count')->sum();
$reward_total = 0;
$count_data->pluck('reward_qty')->each(function ($item, $key) use (&$reward_total) {
$reward_total = bc_add($reward_total, $item);
});
return response()->json([
'user_count' => $user_count,
'reward_total' => $reward_total,
]);
}
}
@@ -0,0 +1,159 @@
<?php
/**
* Created by PhpStorm.
* User: 杨圣新
* Date: 2018/10/26
* Time: 16:39
*/
namespace App\Http\Controllers\Admin;
use App\Currency;
use App\Robot;
use App\Users;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Process\Process;
class RobotController extends Controller
{
public function start(){
$id = request()->input('id', 0);
$robot = Robot::find($id);
switch ($robot->status){
case 0:
$robot->status = 1;
break;
case 1:
$robot->status = 0;
break;
}
$robot->save();
return $this->success('保存成功');
}
/**添加一个机器人
* @return \Illuminate\Http\JsonResponse
*/
public function add()
{
if (request()->isMethod('GET')) {
$id = request()->input('id', 0);
if (empty($id)) {
$result = new Robot();
} else {
$result = Robot::find($id);
}
$currencies = Currency::where('is_display', 1)->orderBy('id', 'desc')->get();
$legals = Currency::where('is_display', 1)->where('is_legal', 1)->orderBy('id', 'desc')->get();
return view('admin.robot.add')->with(['currencies' => $currencies, 'legals' => $legals, 'result' => $result]);
}
if (request()->isMethod('POST')) {
$data['buy_user'] = request()->input('buy_user', '');
$data['sell_user'] = request()->input('sell_user', '');
$data['currency_id'] = request()->input('currency_id', 0);
$data['legal_id'] = request()->input('legal_id', 0);
$data['number_max'] = request()->input('number_max', 0);
$data['number_min'] = request()->input('number_min', 0);
$data['second'] = request()->input('second', '');
$data['float_number_up'] = request()->input('float_number_up', '0.00000');
$data['float_number_down'] = request()->input('float_number_down', '0.00000');
foreach ($data as $v) if (!$v) return $this->error('请填写完整表单');
$buy_user = Users::where('phone', $data['buy_user'])->first();
$sell_user = Users::where('phone', $data['sell_user'])->first();
if (!$buy_user) return $this->error('找不到买家');
if (!$sell_user) return $this->error('找不到卖家');
if (!is_numeric($data['number_max']) || !is_numeric($data['number_min'])) return $this->error('上下限只能是数字');
if ($data['number_max'] < $data['number_min']) return $this->error('错误的上下限');
if (!is_numeric($data['float_number_up']) || !is_numeric($data['float_number_down'])) return $this->error('价格浮动数只能是数字');
if ($data['float_number_up'] < 0 || $data['float_number_down'] < 0) return $this->error('价格浮动数不能为负数');
$id = request()->input('id', 0);
if ($id) {
$robot = Robot::find($id);
} else {
$robot = new Robot();
$robot->create_time = time();
}
$data['sell'] = request()->input('sell', 0);
$data['buy'] = request()->input('buy', 0);
DB::beginTransaction();
try {
$robot->buy_user_id = $buy_user->id;
$robot->sell_user_id = $sell_user->id;
$robot->currency_id = $data['currency_id'];
$robot->legal_id = $data['legal_id'];
$robot->number_max = $data['number_max'];
$robot->number_min = $data['number_min'];
$robot->second = $data['second'];
$robot->float_number_down = $data['float_number_down'];
$robot->float_number_up = $data['float_number_up'];
$robot->sell = $data['sell'];
$robot->buy = $data['buy'];
$info = $robot->save();
if (!$info) throw new \Exception('保存失败');
DB::commit();
return $this->success('保存成功');
} catch (\Exception $e) {
DB::rollback();
return $this->error($e->getMessage());
}
}
}
/**返回页面
*
*/
public function list()
{
return view('admin.robot.list');
}
/**返回列表数据
* @return \Illuminate\Http\JsonResponse
*/
public function listData()
{
$limit = request()->input('limit', 10);
$list = Robot::paginate($limit);
return $this->layuiData($list);
}
public function delete()
{
$id = request()->input('id', 0);
$robot = Robot::find($id);
if (!$robot) return $this->error('找不到这个机器人');
if ($robot->status == Robot::START) return $this->error('机器人正在运行,不能删除');
DB::beginTransaction();
try {
$info = $robot->delete();
if (!$info) throw new \Exception('删除失败');
DB::commit();
return $this->success('删除成功');
} catch (\Exception $e) {
DB::rollback();
return $this->error($e->getMessage());
}
}
}
@@ -0,0 +1,262 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Bank;
use App\Currency;
use App\LegalDeal;
use App\LegalDealSend;
use App\Seller;
use App\UserReal;
use App\Users;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
class SellerController extends Controller
{
public function index()
{
return view("admin.seller.index");
}
public function status(Request $request)
{
$EWLCuXv = $request->get("id", 0);
$VslANFv = Seller::find($EWLCuXv);
if (empty($VslANFv)) {
return $this->error("参数错误");
}
if ($VslANFv->status == 1) {
$VslANFv->status = 0;
} else {
$VslANFv->status = 1;
}
try {
$VslANFv->save();
return $this->success("操作成功");
} catch (\Exception $MBiuMjv) {
return $this->error($MBiuMjv->getMessage());
}
}
public function lists(Request $request)
{
$mOViITQ = $request->get("limit", 10);
$PVVHhIv = $request->get("account_number", "");
$lSZwmpQ = new Seller();
if (!empty($PVVHhIv)) {
$wBUciPQ = Users::where("account_number", "like", "%" . $PVVHhIv . "%")->get()->pluck("id");
$lSZwmpQ = $lSZwmpQ->whereIn("user_id", $wBUciPQ);
}
$lSZwmpQ = $lSZwmpQ->orderBy("id", "desc")->paginate($mOViITQ);
return $this->layuiData($lSZwmpQ);
}
public function add(Request $request)
{
$wzCTTIQ = $request->get("id", 0);
if (empty($wzCTTIQ)) {
$bSHyBhv = new Seller();
$bSHyBhv->create_time = time();
} else {
$bSHyBhv = Seller::find($wzCTTIQ);
}
$sYOdeDQ = Bank::all();
$ZlIsRIv = Currency::where("is_legal", 1)->orderBy("id", "desc")->get();
return view("admin.seller.add")->with(["result" => $bSHyBhv, "banks" => $sYOdeDQ, "currencies" => $ZlIsRIv]);
}
public function postAdd(Request $request)
{
$sYwmMfv = $request->get("id", 0);
$ElrRcJv = $request->get("account_number", "");
$lhxBpkJ = $request->get("name", "");
$lHYNMJv = $request->get("mobile", "");
$GlYdHdJ = $request->get("currency_id", "");
$LIltKOQ = $request->get("wechat_nickname", "");
$ZpUjYWv = $request->get("wechat_account", "");
$UrCMwzJ = $request->get("ali_nickname", "");
$yBzscSQ = $request->get("ali_account", "");
$jUDYFGv = $request->get("bank_account", "");
$iElciLQ = $request->get("bank_address", "");
$ZivQULJ = $request->get("bank_name", "");
$LlQbUxJ = ["required" => ":attribute 为必填字段"];
$NhGlCFQ = Validator::make($request->all(), ["account_number" => "required", "name" => "required", "mobile" => "required", "currency_id" => "required", "wechat_account" => "required", "ali_account" => "required", "bank_account" => "required", "bank_address" => "required", "bank_name" => "required"], $LlQbUxJ);
if ($NhGlCFQ->fails()) {
return $this->error($NhGlCFQ->errors()->first());
}
$xDIOduJ = Users::where("account_number", $ElrRcJv)->first();
if (empty($xDIOduJ)) {
return $this->error("找不到此交易账号的用户");
}
$WgatXjQ = UserReal::where("user_id", $xDIOduJ->id)->where("review_status", 2)->first();
if (empty($WgatXjQ)) {
return $this->error("此用户还未通过实名认证");
}
$RXmFpAQ = Currency::find($GlYdHdJ);
if (empty($RXmFpAQ)) {
return $this->error("币种不存在");
}
if (empty($RXmFpAQ->is_legal)) {
return $this->error("该币不是法币");
}
$YCUGrXv = Seller::where("name", $lhxBpkJ)->where("user_id", "!=", $xDIOduJ->id)->where("currency_id", $GlYdHdJ)->first();
if (empty($sYwmMfv) && !empty($YCUGrXv)) {
return $this->error("此法币 " . $lhxBpkJ . " 商家名称已存在");
}
$FrqBwlQ = Seller::where("user_id", $xDIOduJ->id)->where("currency_id", $GlYdHdJ)->first();
if (!empty($FrqBwlQ) && empty($sYwmMfv)) {
return $this->error("此用户已是此法币商家");
}
if (empty($sYwmMfv)) {
$ctlmbJQ = new Seller();
$ctlmbJQ->create_time = time();
} else {
$ctlmbJQ = Seller::find($sYwmMfv);
}
$JYlcgxv = Bank::where("name", $ZivQULJ)->first();
if ($JYlcgxv) {
$GzlYeZJ = $JYlcgxv->id;
} else {
$AMBtlKv = new Bank();
$GzlYeZJ = $AMBtlKv->insertGetId(["name" => $ZivQULJ]);
}
$ctlmbJQ->user_id = $xDIOduJ->id;
$ctlmbJQ->name = $lhxBpkJ;
$ctlmbJQ->mobile = $lHYNMJv;
$ctlmbJQ->currency_id = $GlYdHdJ;
$ctlmbJQ->wechat_nickname = $LIltKOQ;
$ctlmbJQ->wechat_account = $ZpUjYWv;
$ctlmbJQ->ali_nickname = $UrCMwzJ;
$ctlmbJQ->ali_account = $yBzscSQ;
$ctlmbJQ->bank_id = intval($GzlYeZJ);
$ctlmbJQ->bank_account = $jUDYFGv;
$ctlmbJQ->bank_address = $iElciLQ;
$ctlmbJQ->status = 1;
try {
$ctlmbJQ->save();
return $this->success("操作成功");
} catch (\Exception $OLncirv) {
return $this->error($OLncirv->getMessage());
}
}
public function delete(Request $request)
{
$CMGNquQ = $request->get("id", 0);
$zULfAdQ = Seller::find($CMGNquQ);
if (empty($zULfAdQ)) {
return $this->error("无此用户");
}
try {
$zULfAdQ->delete();
return $this->success("删除成功");
} catch (\Exception $nXnYPCJ) {
return $this->error($nXnYPCJ->getMessage());
}
}
public function sendBack(Request $request)
{
$nffuTUJ = $request->get("id", 0);
if (empty($nffuTUJ)) {
return $this->error("参数错误");
}
try {
DB::beginTransaction();
$EazxunJ = LegalDealSend::lockForUpdate()->find($nffuTUJ);
if (empty($EazxunJ)) {
DB::rollback();
return $this->error("无此记录");
}
if ($EazxunJ->is_shelves != 2) {
throw new \Exception("必须下架后才可以撤销");
}
if ($EazxunJ->is_done != 0) {
throw new \Exception("当前发布状态无法撤销");
}
if (bc_comp($EazxunJ->surplus_number) <= 0) {
throw new \Exception("当前发布剩余数量不足,无法撤销");
}
LegalDealSend::sendBack($nffuTUJ);
DB::commit();
return $this->success("发布撤回成功,此发布改变为已完成状态");
} catch (\Exception $sCvTfzJ) {
DB::rollback();
return $this->error($sCvTfzJ->getMessage());
}
}
public function sendDel(Request $request)
{
$PWlKXSv = $request->get("id", 0);
if (empty($PWlKXSv)) {
return $this->error("参数错误");
}
$HyztDwQ = LegalDealSend::isHasIncompleteness($PWlKXSv);
if ($HyztDwQ) {
return $this->error("该发布信息下有未完成订单,请先运行撤回发布再来删除");
}
DB::beginTransaction();
try {
$XNldeIJ = LegalDealSend::lockForUpdate()->find($PWlKXSv);
if (empty($XNldeIJ)) {
return $this->error("无此记录");
}
$UZfwGZQ = LegalDeal::where("legal_deal_send_id", $PWlKXSv)->get();
if (!empty($UZfwGZQ)) {
foreach ($UZfwGZQ as $XilJuhv) {
$XilJuhv->delete();
}
}
if ($XNldeIJ->type == "sell") {
if ($XNldeIJ->surplus_number > 0) {
$GhxsTBJ = Seller::lockForUpdate()->find($XNldeIJ->seller_id);
if (!empty($GhxsTBJ)) {
$cTAvPXv = $GhxsTBJ->user_id;
$egjCciv = UsersWallet::lockForUpdate()->where("user_id", $cTAvPXv)->where("currency", $GhxsTBJ->currency_id)->first();
$NelPScQ = change_wallet_balance($egjCciv, 1, -$XNldeIJ->surplus_number, AccountLog::SELLER_BACK_SEND, "系统删除", true);
if ($NelPScQ !== true) {
throw new \Exception("删除失败:减少冻结资金失败");
}
$uhhTkFv = change_wallet_balance($egjCciv, 1, $XNldeIJ->surplus_number, AccountLog::SELLER_BACK_SEND, "系统删除");
if ($uhhTkFv !== true) {
throw new \Exception("删除失败:增加余额失败");
}
$GhxsTBJ->lock_seller_balance = bc_sub($GhxsTBJ->lock_seller_balance, $XNldeIJ->surplus_number, 5);
$GhxsTBJ->save();
}
}
}
$XNldeIJ->delete();
DB::commit();
return $this->success("删除成功");
} catch (\Exception $fnqRLxJ) {
DB::rollback();
return $this->error($fnqRLxJ->getMessage());
}
}
public function is_shelves(Request $request)
{
$PkBDliJ = $request->get("id", 0);
$XAqRljJ = $request->get("is_shelves", 1);
if (empty($PkBDliJ)) {
return $this->error("参数错误");
}
$iZKliEv = LegalDealSend::find($PkBDliJ);
if (empty($iZKliEv)) {
return $this->error("无此记录");
}
if (empty($iZKliEv->is_shelves)) {
$iZKliEv->is_shelves = 1;
$iZKliEv->save();
}
DB::beginTransaction();
try {
if ($iZKliEv->is_shelves == 1) {
$iZKliEv->is_shelves = 2;
} elseif ($iZKliEv->is_shelves == 2) {
$iZKliEv->is_shelves = 1;
}
$iZKliEv->save();
DB::commit();
return $this->success("操作成功");
} catch (\Exception $BIZQdDJ) {
DB::rollback();
return $this->error($BIZQdDJ->getMessage());
}
}
}
@@ -0,0 +1,163 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Setting;
use App\ReceivingBankCard;
use Illuminate\Support\Facades\Input;
class SettingController extends Controller
{
public function index()
{
$settingList = Setting::all()->toArray();
$setting = [];
foreach ($settingList as $key => $value) {
$setting[$value['key']] = $value['value'];
}
// $receivingList = ReceivingBankCard::all();
return view('admin.setting.base', ['setting' => $setting]);
}
public function bankCard(Request $request){
$limit = $request->get('limit', 10);
$list = ReceivingBankCard::orderBy('id','desc') -> paginate($limit);
return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]);
}
public function bankAdd(Request $request){
if ($request->isMethod('post')) {
try {
$receivingBankCard = new ReceivingBankCard();
$receivingBankCard -> currency_logo = Input::get('currency_logo', '');
$receivingBankCard -> currency_name = Input::get('currency_name', '');
$receivingBankCard -> pay_way_name = Input::get('pay_way_name', '');
$receivingBankCard -> commissions = Input::get('commissions', '');
$receivingBankCard -> account_name = Input::get('account_name', '');
$receivingBankCard -> iban = Input::get('iban', '');
$receivingBankCard -> beneficiary_country = Input::get('beneficiary_country', '');
$receivingBankCard -> bank_code = Input::get('bank_code', '');
$receivingBankCard -> bank_name = Input::get('bank_name', '');
$receivingBankCard -> bank_address = Input::get('bank_address', '');
$receivingBankCard->save();
}catch (\Exception $ex){
return $this->error($ex->getMessage());
}
return $this->success('添加成功');
}else{
return view('admin.setting.bankAdd');
}
}
public function editBankCard(Request $request){
$id = $request->get('id');
$bankCard = ReceivingBankCard::where("id", $id)->first();
if ($request->isMethod('post')) {
try {
$bankCard -> currency_logo = Input::get('currency_logo', '');
$bankCard -> currency_name = Input::get('currency_name', '');
$bankCard -> pay_way_name = Input::get('pay_way_name', '');
$bankCard -> commissions = Input::get('commissions', '');
$bankCard -> account_name = Input::get('account_name', '');
$bankCard -> iban = Input::get('iban', '');
$bankCard -> beneficiary_country = Input::get('beneficiary_country', '');
$bankCard -> bank_code = Input::get('bank_code', '');
$bankCard -> bank_name = Input::get('bank_name', '');
$bankCard -> bank_address = Input::get('bank_address', '');
$bankCard->save();
}catch (\Exception $ex){
return $this->error($ex->getMessage());
}
return $this->success('编辑成功');
}else{
return view('admin.setting.bankEdit',['bankCard' => $bankCard]);
}
}
public function delBankCard(Request $request){
$id = $request->get('id');
$bankCard = ReceivingBankCard::where("id", $id)->first();
if (empty($bankCard)) {
$this->error("信息未找到");
}
try {
$bankCard->delete();
return $this->success('删除成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
public function index_second(){
$settingList = Setting::all()->toArray();
$setting = [];
foreach ($settingList as $key => $value) {
$setting[$value['key']] = $value['value'];
}
// var_dump($setting);
return view('admin.setting.index_second', ['setting' => $setting]);
}
public function dataSetting()
{
$settingList = Setting::all()->toArray();
$setting = [];
foreach ($settingList as $key => $value) {
$setting[$value['key']] = $value['value'];
}
return view('admin.setting.data', ['setting' => $setting]);
}
public function postAdd(Request $request)
{
$data = $request->all();
$generation = $request->input('generation');
$reward_ratio = $request->input('reward_ratio');
$need_has_trades = $request->input('need_has_trades');
unset($data['generation'], $data['reward_ratio'], $data['need_has_trades']);
$lever_fee_options = compact('generation', 'reward_ratio', 'need_has_trades');
$lever_fee_options = make_multi_array(['generation', 'reward_ratio', 'need_has_trades'], count($generation), $lever_fee_options);
$generation = array_column($lever_fee_options, 'generation');
$reward_ratio = array_column($lever_fee_options, 'reward_ratio');
array_multisort($generation, SORT_ASC, SORT_NUMERIC, $lever_fee_options);
$data['lever_fee_options'] = serialize($lever_fee_options);
try {
foreach ($data as $key => $value) {
$setting = Setting::where('key', $key)->first();
if (!$setting) {
$setting = new Setting();
$setting->key = $key;
}
$setting->value = $value;
$setting->save();
}
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function dogeneralaccount(Request $request)
{
$data = $request->all();
foreach ($data as $key => $value) {
switch ($key) {
case 'contract_address':
break;
case 'total_account_address':
break;
case 'total_account_key':
break;
}
Setting::updateValueByKey($key, $value);
}
return $this->success('操作成功');
}
}
@@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
class SettingsController extends Controller{
public function index(){
$bouns = Setting::getValueByKey('user_bonus');
$ecology = Setting::getValueByKey('ecology_bonus');
$bonus = json_decode($bouns);
$ecology = json_decode($ecology);
return view('admin.settings.index',['bouns'=>$bonus,'ecology'=>$ecology]);
}
public function base()
{
$rate_exchange = Setting::getValueByKey('rate_exchange');
$company_eth_address = Setting::getValueByKey('company_eth_address');
$lock_daily_return = Setting::getValueByKey('lock_daily_return');
$version = Setting::getValueByKey('version','1.0');
$transaction_fee = Setting::getValueByKey('transaction_fee',[]);
$transaction_fee = @json_decode($transaction_fee,true);
$results = array(
'rate_exchange' => $rate_exchange,
'lock_daily_return' => $lock_daily_return,
'company_eth_address' => $company_eth_address,
'version' => $version,
);
return view('admin.settings.base', ['results' => $results,"transaction_fee"=>$transaction_fee]);
}
public function setBase(Request $request)
{
$data = $request->all();
$transaction_fee = array(
"service_one_min"=>$data["service_one_min"],
"service_one_max"=>$data["service_one_max"],
"service_one_proportion"=>$data["service_one_proportion"],
"service_two_min"=>$data["service_two_min"],
"service_two_max"=>$data["service_two_max"],
"service_two_proportion"=>$data["service_two_proportion"],
"service_three_min"=>$data["service_three_min"],
"service_three_max"=>$data["service_three_max"],
"service_three_proportion"=>$data["service_three_proportion"],
);
foreach ($data as $key => $value) {
if (isset($transaction_fee[$key])){
continue;
}
switch ($key) {
case 'rate_exchange':
break;
case 'company_eth_address':
break;
case 'lock_daily_return':
break;
case 'version':
break;
}
Setting::updateValueByKey($key, $value);
}
$transaction_fee = json_encode($transaction_fee);
Setting::updateValueByKey("transaction_fee", $transaction_fee);
return $this->success('操作成功');
}
public function Insert(){
$bouns = Input::get('bonus','');
$total_arr = Input::get('total_arr','');
$ecology = Input::get('ecology','');
$ecology_arr = Input::get('ecology_arr','');
$total_arr = json_encode($total_arr);
$ecology_arr = json_encode($ecology_arr);
if(empty($bouns) || empty($total_arr)){
return $this->error('日均收益参数错误');
}
if(empty($ecology) || empty($ecology_arr)){
return $this->error('推广奖励参数错误');
}
// $first_result = Setting::where('key',$bouns)->where('value',$total_arr)->first();
// if(!empty($first_result)){
// return $this->success('已设置过该奖金');
// }
// $second_result = Setting::where('key',$ecology)->where('value',$ecology_arr)->first();
// if(!empty($second_result)){
// return $this->success('已设置过该推广奖励');
// }
try{
Setting::updateValueByKey($bouns,$total_arr);
Setting::updateValueByKey($ecology,$ecology_arr);
return $this->success('设置成功');
}catch (\Exception $e){
return $this->error($e->getMessage());
}
}
}
?>
@@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers\Admin;
use App\ChargeReq;
use App\MicroOrder;
use App\UsersWalletOut;
use App\CoinTrade;
use App\LeverTransaction;
use App\UserReal;
use App\PayUserInfo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TipsController extends Controller
{
public function tips(Request $request)
{
$type = $request->get('type');
// if ($type == 1){
// $count = CoinTrade::where('status',1)->count();
// $code = $count == 0 ? 200 : 100;
// return ['code'=>$code,'type'=>$type];
// }
// if ($type == 2){
// $count = CoinTrade::where('status',1)->count();
// $code = $count == 0 ? 200 : 100;
// return ['code'=>$code,'type'=>$type];
// }
if ($type == 3){
$count = MicroOrder::whereHas('user')->where('status',1)->count();
$code = $count == 0 ? 200 : 100;
return ['code'=>$code,'type'=>$type];
}
if ($type == 6){
$count = ChargeReq::whereHas('user')->where('status',1)->count();
$code = $count == 0 ? 200 : 100;
return ['code'=>$code,'type'=>$type];
}
if ($type == 7){
$count = UserReal::whereHas('user')->where('review_status',1)->count();
$code = $count == 0 ? 200 : 100;
return ['code'=>$code,'type'=>$type];
}
if ($type == 8){
$count = UsersWalletOut::whereHas('user')->where('status',1)->count();
$code = $count == 0 ? 200 : 100;
return ['code'=>$code,'type'=>$type];
}
if($type == 99){
$count = PayUserInfo::where('notify_status',0) -> where('status',1) ->count();
$code = $count == 0 ? 200 : 100;
return ['code'=>$code,'type'=>$type];
}
die();
}
}
@@ -0,0 +1,288 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Agent;
use App\AgentMoneylog;
use App\Setting;
use App\AccountLog;
use App\Transaction;
use App\TransactionComplete;
use App\TransactionIn;
use App\TransactionOut;
use App\Users;
use App\Currency;
use App\LeverTransaction;
use App\TransactionOrder;
use App\TransactionOrdercopy;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;
class TransactionController extends Controller
{
public function index()
{
$_var_0 = Currency::all();
return view("admin.transaction.index", ["currency" => $_var_0]);
}
public function lists()
{
$_var_1 = Input::get("limit", 10);
$_var_2 = Input::get("account_number", "");
$_var_3 = Input::get("type", "");
$_var_4 = Input::get("currency", "");
$_var_5 = Input::get("status", "");
$_var_6 = new Transaction();
if (!empty($_var_2)) {
$users = Users::where("account_number", "like", "%" . $_var_2 . "%")->get()->pluck("id");
$_var_6 = $_var_6->where(function ($query) use($users) {
$query->whereIn("from_user_id", $users);
});
}
if (!empty($_var_3)) {
$_var_6 = $_var_6->where("type", "=", $_var_3);
}
if (!empty($_var_4)) {
$_var_6 = $_var_6->where("currency", $_var_4);
}
if (!empty($_var_5)) {
$_var_6 = $_var_6->where("status", $_var_5);
}
$_var_7 = $_var_6->orderBy("id", "desc")->paginate($_var_1);
return response()->json(["code" => 0, "data" => $_var_7->items(), "count" => $_var_7->total()]);
}
public function completeIndex()
{
return view("admin.transaction.complete");
}
public function inIndex()
{
return view("admin.transaction.in");
}
public function outIndex()
{
return view("admin.transaction.out");
}
public function cnyIndex()
{
return view("admin.transaction.cny");
}
public function completeList(Request $request)
{
$_var_8 = $request->get("limit", 10);
$_var_9 = $request->get("account_number", "");
$_var_10 = new TransactionComplete();
if (!empty($_var_9)) {
$_var_11 = Users::where("account_number", "like", "%" . $_var_9 . "%")->get()->pluck("id");
$_var_10 = $_var_10->whereIn("user_id", $_var_11);
}
$_var_10 = $_var_10->orderBy("id", "desc")->paginate($_var_8);
return $this->layuiData($_var_10);
}
public function inList(Request $request)
{
$_var_12 = $request->get("limit", 10);
$_var_13 = $request->get("account_number", "");
$_var_14 = new TransactionIn();
if (!empty($_var_13)) {
$_var_15 = Users::where("account_number", "like", "%" . $_var_13 . "%")->get()->pluck("id");
$_var_14 = $_var_14->whereIn("user_id", $_var_15);
}
$_var_14 = $_var_14->orderBy("id", "desc")->paginate($_var_12);
return $this->layuiData($_var_14);
}
public function outList(Request $request)
{
$_var_16 = $request->get("limit", 10);
$_var_17 = $request->get("account_number", "");
$_var_18 = new TransactionOut();
if (!empty($_var_17)) {
$_var_19 = Users::where("account_number", "like", "%" . $_var_17 . "%")->get()->pluck("id");
$_var_18 = $_var_18->whereIn("user_id", $_var_19);
}
$_var_18 = $_var_18->orderBy("id", "desc")->paginate($_var_16);
return $this->layuiData($_var_18);
}
public function cnyList(Request $request)
{
$_var_20 = $request->get("limit", 10);
$_var_21 = $request->get("account_number", "");
$_var_22 = new AccountLog();
if (!empty($_var_21)) {
$_var_23 = Users::where("account_number", "like", "%" . $_var_21 . "%")->get()->pluck("id");
$_var_22 = $_var_22->whereIn("user_id", $_var_23);
}
$_var_24 = array(13, 14, 15, 20, 22, 24);
$_var_22 = $_var_22->whereIn("type", $_var_24)->orderBy("id", "desc")->paginate($_var_20);
return $this->layuiData($_var_22);
}
public function Leverdeals_show()
{
return view("admin.leverdeals.list");
}
public function Leverdeals(Request $request)
{
$_var_25 = $request->input("limit", 20);
$id = $request->input("id", 0);
$username = $request->input("phone", "");
$status = $request->input("status", 10);
$type = $request->input("type", 0);
$legal_id = $request->input("legal_id", -1);
$start = $request->input("start", "");
$end = $request->input("end", "");
$_var_26 = LeverTransaction::whereHas("user", function ($query) use($username) {
$username != "" && $query->where("account_number", $username)->orWhere("id", $username);
})->where(function ($query) use($id, $status, $type, $legal_id) {
$id != 0 && $query->where("id", $id);
$legal_id != -1 && $query->where("legal", $legal_id);
$status != 10 && in_array($status, [LeverTransaction::ENTRUST, LeverTransaction::BUY, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING]) && $query->where("status", $status);
$type > 0 && in_array($type, [1, 2]) && $query->where("type", $type);
})->where(function ($query) use($start, $end) {
!empty($start) && $query->where("create_time", ">=", strtotime($start . " 0:0:0"));
!empty($end) && $query->where("create_time", "<=", strtotime($end . " 23:59:59"));
});
$_var_27 = clone $_var_26;
$_var_28 = $_var_27->select([DB::raw("SUM((CASE `type` WHEN 1 THEN `update_price` - `price` WHEN 2 THEN `price` - `update_price` END) * `number`* `multiple`) AS `balance1`"), DB::raw("sum(origin_caution_money) as balance2"), DB::raw("sum(trade_fee) as balance3")])->first();
$_var_28 && ($_var_28 = $_var_28->setAppends([]));
$_var_29 = $_var_26->orderBy("id", "desc")->paginate($_var_25);
$_var_30 = $_var_29->getCollection();
$_var_30->transform(function ($item, $key) {
$item->setAppends(["symbol", "account_number", "profits", "time"]);
return $item;
});
return $this->layuiData($_var_29, ["total" => $_var_28]);
}
public function csv(Request $request)
{
$_var_31 = $request->input("id", 0);
$_var_32 = $request->input("phone", "");
$_var_33 = $request->input("status", 10);
$_var_34 = $request->input("type", 0);
$_var_35 = $request->input("start", "");
$_var_36 = $request->input("end", "");
$_var_37 = [];
if ($_var_31 > 0) {
$_var_37[] = ["lever_transaction.id", "=", $_var_31];
}
if (!empty($_var_32)) {
$_var_38 = DB::table("users")->where("account_number", $_var_32)->first();
if ($_var_38 !== null) {
$_var_37[] = ["lever_transaction.user_id", "=", $_var_38->id];
}
}
if ($_var_33 != 10 && in_array($_var_33, [LeverTransaction::ENTRUST, LeverTransaction::BUY, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING])) {
$_var_37[] = ["lever_transaction.status", "=", $_var_33];
}
if ($_var_34 > 0 && in_array($_var_34, [1, 2])) {
$_var_37[] = ["type", "=", $_var_34];
}
if (!empty($_var_35) && !empty($_var_36)) {
$_var_37[] = ["lever_transaction.create_time", ">", strtotime($_var_35 . " 0:0:0")];
$_var_37[] = ["lever_transaction.create_time", "<", strtotime($_var_36 . " 23:59:59")];
}
$_var_39 = TransactionOrdercopy::leftjoin("users", "lever_transaction.user_id", "=", "users.id")->select("lever_transaction.*", "users.phone")->whereIn("lever_transaction.status", [LeverTransaction::ENTRUST, LeverTransaction::BUY, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING])->where($_var_37)->get();
foreach ($_var_39 as $_var_40 => $_var_41) {
$_var_39[$_var_40]["create_time"] = date("Y-m-d H:i:s", $_var_41->create_time);
$_var_39[$_var_40]["transaction_time"] = date("Y-m-d H:i:s", substr($_var_41->transaction_time, 0, strpos($_var_41->transaction_time, ".")));
$_var_39[$_var_40]["update_time"] = date("Y-m-d H:i:s", substr($_var_41->update_time, 0, strpos($_var_41->update_time, ".")));
$_var_39[$_var_40]["handle_time"] = date("Y-m-d H:i:s", substr($_var_41->handle_time, 0, strpos($_var_41->handle_time, ".")));
$_var_39[$_var_40]["complete_time"] = date("Y-m-d H:i:s", substr($_var_41->complete_time, 0, strpos($_var_41->complete_time, ".")));
}
$data = $_var_39;
return Excel::create("杠杆交易", function ($excel) use($data) {
$excel->sheet("杠杆交易", function ($sheet) use($data) {
$sheet->cell("A1", function ($cell) {
$cell->setValue("ID");
});
$sheet->cell("B1", function ($cell) {
$cell->setValue("用户名");
});
$sheet->cell("C1", function ($cell) {
$cell->setValue("交易手续费");
});
$sheet->cell("D1", function ($cell) {
$cell->setValue("隔夜费金额");
});
$sheet->cell("E1", function ($cell) {
$cell->setValue("交易类型");
});
$sheet->cell("F1", function ($cell) {
$cell->setValue("当前状态");
});
$sheet->cell("G1", function ($cell) {
$cell->setValue("原始价格");
});
$sheet->cell("H1", function ($cell) {
$cell->setValue("开仓价格");
});
$sheet->cell("I1", function ($cell) {
$cell->setValue("当前价格");
});
$sheet->cell("J1", function ($cell) {
$cell->setValue("手数");
});
$sheet->cell("K1", function ($cell) {
$cell->setValue("倍数");
});
$sheet->cell("L1", function ($cell) {
$cell->setValue("初始保证金");
});
$sheet->cell("M1", function ($cell) {
$cell->setValue("当前可用保证金");
});
$sheet->cell("N1", function ($cell) {
$cell->setValue("创建时间");
});
$sheet->cell("O1", function ($cell) {
$cell->setValue("价格刷新时间");
});
$sheet->cell("P1", function ($cell) {
$cell->setValue("平仓时间");
});
$sheet->cell("Q1", function ($cell) {
$cell->setValue("完成时间");
});
if (!empty($data)) {
foreach ($data as $_var_42 => $_var_43) {
if ($_var_43["type"] == 1) {
$_var_43["type"] = "买入";
} else {
$_var_43["type"] = "卖出";
}
if ($_var_43["status"] == 0) {
$_var_43["status"] = "挂单中";
} elseif ($_var_43["status"] == 1) {
$_var_43["status"] = "交易中";
} elseif ($_var_43["status"] == 2) {
$_var_43["status"] = "平仓中";
} elseif ($_var_43["status"] == 3) {
$_var_43["status"] = "已平仓";
} elseif ($_var_43["status"] == 4) {
$_var_43["status"] = "已撤单";
}
$_var_44 = $_var_42 + 2;
$sheet->cell("A" . $_var_44, $_var_43["id"]);
$sheet->cell("B" . $_var_44, $_var_43["phone"]);
$sheet->cell("C" . $_var_44, $_var_43["trade_fee"]);
$sheet->cell("D" . $_var_44, $_var_43["overnight_money"]);
$sheet->cell("E" . $_var_44, $_var_43["type"]);
$sheet->cell("F" . $_var_44, $_var_43["status"]);
$sheet->cell("G" . $_var_44, $_var_43["origin_price"]);
$sheet->cell("H" . $_var_44, $_var_43["price"]);
$sheet->cell("I" . $_var_44, $_var_43["update_price"]);
$sheet->cell("J" . $_var_44, $_var_43["share"]);
$sheet->cell("K" . $_var_44, $_var_43["multiple"]);
$sheet->cell("L" . $_var_44, $_var_43["origin_caution_money"]);
$sheet->cell("M" . $_var_44, $_var_43["caution_money"]);
$sheet->cell("N" . $_var_44, $_var_43["create_time"]);
$sheet->cell("O" . $_var_44, $_var_43["update_time"]);
$sheet->cell("P" . $_var_44, $_var_43["handle_time"]);
$sheet->cell("Q" . $_var_44, $_var_43["complete_time"]);
}
}
});
})->download("xlsx");
}
}
@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\HttpFoundation\Request;
use App\TransactionLegal;
use App\Currency;
class TransactionLegalController extends Controller
{
public function index(){
//$currency = Currency::all();
$currency = Currency::where('type',1)->get();//获取法币
// var_dump($currency);
return view('admin.transaction.legal',['currency'=> $currency]);
}
public function list(Request $request){
$limit = $request->get('limit', 10);
$account_number = $request->get('account_number', '');
$type = $request->get('type', '');
$currency = $request->get('currency', '');
$result = new TransactionLegal();
if(!empty($account_number)){
$result = $result->whereHas('user', function ($query) use ($account_number) {
$query->where('account_number', 'like', '%' . $account_number . '%');
});
}
if (!empty($type)) {
$result = $result->where('type', $type);
}
if (!empty($currency)) {
$result = $result->where('currency', $currency);
}
$result = $result->orderBy('id', 'desc')->paginate($limit);
return $this->layuiData($result);
}
}
@@ -0,0 +1,232 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\DAO\UploaderDAO;
class UeditorController extends Controller
{
private function getConfig()
{
$config = [
"imageActionName" => "uploadimage",
"imageFieldName" => "upfile",
"imageMaxSize" => 2048000,
"imageAllowFiles" => [
".png",
".jpg",
".jpeg",
".gif",
".bmp"
],
"imageCompressEnable" => true,
"imageCompressBorder" => 1600,
"imageInsertAlign" => "none",
"imageUrlPrefix" => "",
"imagePathFormat" => "/upload/ueditor/image/{yyyy}{mm}{dd}/{time}{rand =>6}",
"scrawlActionName" => "uploadscrawl",
"scrawlFieldName" => "upfile",
"scrawlPathFormat" => "/upload/ueditor/image/{yyyy}{mm}{dd}/{time}{rand =>6}",
"scrawlMaxSize" => 2048000,
"scrawlUrlPrefix" => "",
"scrawlInsertAlign" => "none",
"snapscreenActionName" => "uploadimage",
"snapscreenPathFormat" => "/upload/ueditor/image/{yyyy}{mm}{dd}/{time}{rand =>6}",
"snapscreenUrlPrefix" => "",
"snapscreenInsertAlign" => "none",
"catcherLocalDomain" => [
"127.0.0.1",
"localhost",
"img.tradingview.com"
],
"catcherActionName" => "catchimage",
"catcherFieldName" => "source",
"catcherPathFormat" => "/upload/ueditor/image/{yyyy}{mm}{dd}/{time}{rand =>6}",
"catcherUrlPrefix" => "",
"catcherMaxSize" => 2048000,
"catcherAllowFiles" => [
".png",
".jpg",
".jpeg",
".gif",
".bmp"
],
"videoActionName" => "uploadvideo",
"videoFieldName" => "upfile",
"videoPathFormat" => "/upload/ueditor/video/{yyyy}{mm}{dd}/{time}{rand =>6}",
"videoUrlPrefix" => "",
"videoMaxSize" => 102400000,
"videoAllowFiles" => [
".flv",
".swf",
".mkv",
".avi",
".rm",
".rmvb",
".mpeg",
".mpg",
".ogg",
".ogv",
".mov",
".wmv",
".mp4",
".webm",
".mp3",
".wav",
".mid"
],
"fileActionName" => "uploadfile",
"fileFieldName" => "upfile",
"filePathFormat" => "/upload/ueditor/file/{yyyy}{mm}{dd}/{time}{rand =>6}",
"fileUrlPrefix" => "",
"fileMaxSize" => 51200000,
"fileAllowFiles" => [
".png",
".jpg",
".jpeg",
".gif",
".bmp",
".flv",
".swf",
".mkv",
".avi",
".rm",
".rmvb",
".mpeg",
".mpg",
".ogg",
".ogv",
".mov",
".wmv",
".mp4",
".webm",
".mp3",
".wav",
".mid",
".rar",
".zip",
".tar",
".gz",
".7z",
".bz2",
".cab",
".iso",
".doc",
".docx",
".xls",
".xlsx",
".ppt",
".pptx",
".pdf",
".txt",
".md",
".xml"
],
"imageManagerActionName" => "listimage",
"imageManagerListPath" => "/upload/ueditor/image/",
"imageManagerListSize" => 20,
"imageManagerUrlPrefix" => "",
"imageManagerInsertAlign" => "none",
"imageManagerAllowFiles" => [
".png",
".jpg",
".jpeg",
".gif",
".bmp"
],
"fileManagerActionName" => "listfile",
"fileManagerListPath" => "/upload/ueditor/file/",
"fileManagerUrlPrefix" => "",
"fileManagerListSize" => 20,
"fileManagerAllowFiles" => [
".png",
".jpg",
".jpeg",
".gif",
".bmp",
".flv",
".swf",
".mkv",
".avi",
".rm",
".rmvb",
".mpeg",
".mpg",
".ogg",
".ogv",
".mov",
".wmv",
".mp4",
".webm",
".mp3",
".wav",
".mid",
".rar",
".zip",
".tar",
".gz",
".7z",
".bz2",
".cab",
".iso",
".doc",
".docx",
".xls",
".xlsx",
".ppt",
".pptx",
".pdf",
".txt",
".md",
".xml"
]
];
return $config;
}
public function ueditor(Request $request)
{
$action = $request->input('action', '');
$config = $this->getConfig();
switch ($action) {
case 'config':
return $this->getConfig();
/* 上传图片 */
case 'uploadimage':
/* 上传涂鸦 */
case 'uploadscrawl':
/* 上传视频 */
case 'uploadvideo':
/* 上传文件 */
case 'uploadfile':
$field_name = str_ireplace('upload', '', $action) . 'FieldName';
$field = $config[$field_name];
$file = $request->file($field);
$result = UploaderDAO::fileUpload($file, 'ueditor');
break;
/* 列出图片 */
case 'listimage':
//$result = include("action_list.php");
break;
/* 列出文件 */
case 'listfile':
//$result = include("action_list.php");
break;
/* 抓取远程文件 */
case 'catchimage':
//$result = include("action_crawler.php");
break;
default:
$result = array(
'state' => '请求地址出错'
);
break;
}
return response()->json($result);
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,68 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Setting;
use Illuminate\Http\Request;
/**
* 会员等级配置
*/
class UserGradeSettingController extends Controller
{
public function index()
{
$data = Setting::query()->where('key', 'user_grade_setting')->first();
$values = json_decode($data->value);
$ordinary_setting = collect($values)->where('grade', 1)->first();
$vip_setting = collect($values)->where('grade', 2)->first();
$svip_setting = collect($values)->where('grade', 3)->first();
$setting['ordinary'] = collect($ordinary_setting)->toArray();
$setting['vip'] = collect($vip_setting)->toArray();
$setting['svip'] = collect($svip_setting)->toArray();
return view("admin.userGradeSetting.index", [
'setting' => $setting
]);
}
public function store(Request $request)
{
try {
$data = [
[
'grade' => 1,
'ore_pool_income' => $request->ordinary_ore_pool_income,
'delivery_contract_30s_switch' => $request->ordinary_delivery_contract_30s_switch,
'transaction_service_change' => $request->ordinary_transaction_service_change,
'withdraw_coin_service_change' => $request->ordinary_withdraw_coin_service_change
],
[
'grade' => 2,
'ore_pool_income' => $request->vip_ore_pool_income,
'delivery_contract_30s_switch' => $request->vip_delivery_contract_30s_switch,
'transaction_service_change' => $request->vip_transaction_service_change,
'withdraw_coin_service_change' => $request->vip_withdraw_coin_service_change
],
[
'grade' => 3,
'ore_pool_income' => $request->svip_ore_pool_income,
'delivery_contract_30s_switch' => $request->svip_delivery_contract_30s_switch,
'transaction_service_change' => $request->svip_transaction_service_change,
'withdraw_coin_service_change' => $request->svip_withdraw_coin_service_change
],
];
Setting::query()->updateOrCreate([
'key' => 'user_grade_setting'
], [
'value' => json_encode($data),
'notes' => '会员等级权益配置'
]);
return $this->success('操作成功');
} catch (\Throwable $e) {
return $this->error($e->getMessage());
}
}
}
@@ -0,0 +1,344 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\HttpFoundation\Request;
use App\DAO\PrizePool\CandySender;
use App\DAO\UserDAO;
use App\PrizePool;
use App\Setting;
use App\Users;
use App\UserReal;
use App\IdCardIdentity;
use App\Events\RealNameEvent;
class UserRealController extends Controller
{
public function index()
{
return view("admin.userReal.index");
}
//用户列表
public function list(Request $request)
{
$limit = $request->get('limit', 10);
$account = $request->get('account', '');
$review_status_s = $request->get('review_status_s', 0);
$list = new UserReal();
if (!empty($account)) {
$list = $list->whereHas('user', function ($query) use ($account) {
$query->where("phone", 'like', '%' . $account . '%')->orwhere('email', 'like', '%' . $account . '%');
});
}
if(!empty($review_status_s)){
$list = $list->where('review_status',$review_status_s);
}
$list = $list->orderBy('id', 'desc')->paginate($limit);
return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]);
}
public function detail(Request $request)
{
$id = $request->get('id', 0);
if (empty($id)) {
return $this->error("参数错误");
}
$result = UserReal::find($id);
$imageServerUrl = Setting::getValueByKey('image_server_url', '');
if(!empty($result -> front_pic)){
$result -> front_pic = $imageServerUrl.$result ->front_pic;
}
if(!empty($result -> reverse_pic)){
$result -> reverse_pic = $imageServerUrl.$result ->reverse_pic;
}
return view('admin.userReal.info', ['result' => $result,'imageServerUrl' => $imageServerUrl]);
}
public function del(Request $request)
{
$id = $request->get('id');
$userreal = UserReal::find($id);
if (empty($userreal)) {
$this->error("认证信息未找到");
}
try {
$userreal->delete();
return $this->success('删除成功');
} catch (\Exception $ex) {
return $this->error($ex->getMessage());
}
}
/*
//状态审核
public function auth(Request $request)
{
$id = $request->get('id', 0);
$userreal = UserReal::find($id);
if (empty($userreal)) {
return $this->error('参数错误');
}
if ($userreal->review_status == 1) {
//从未认证到认证
//查询users表判断是否为第一次实名认证
$user = Users::find($userreal->user_id);
$is_realname = $user->is_realname;
if ($is_realname == 1) {
//1:未实名认证过 2:实名认证过
$real_zhitui = Users::where("is_realname", "=", 2)->where("parent_id", "=", $userreal->user_id)->count();//实名认证过的有效直推人数
//获取下级的总人数
$member = Users::get()->toArray();
$real_teamnumber = $this->GetTeamMember($member, $userreal->user_id);//实名认证过的团队人数
$candy_number = 10;
$user->candy_number = $candy_number;
$user->push_status = 1;
$top_upnumber = $user->top_upnumber;
//开始记录日志
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
$user->candy_number,
$user,
$user,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
$user->account_number . '实名认证通证奖励10个通证',
$attach_data = []
);
if (3 <= $real_zhitui) {
//给自己加通证 +20
$user->candy_number = $user->candy_number + 20;
$user->push_status = 2;
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
20,
$user,
$from_user = null,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
'满足直推3人实名送20个通证',
$attach_data = []
);
}
if ($real_zhitui >= 5 && $real_teamnumber >= 15 && $top_upnumber >= 100) {
$user->candy_number = $user->candy_number + 50;
$user->push_status = 3;
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
50,
$user,
$from_user = null,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
'满足直推5人,实名认证团队15人充值达100美金;送50通证',
$attach_data = []
);
}
if ($real_zhitui >= 10 && $real_teamnumber >= 50 && $top_upnumber >= 1000) {
$user->candy_number = $user->candy_number + 300;
$user->push_status = 4;
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
300,
$user,
$from_user = null,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
'满足直推10人;实名认证,团队50人;充值达1000美金以上,送300通证',
$attach_data = []
);
}
if ($real_zhitui >= 30 && $real_teamnumber >= 100 && $top_upnumber >= 10000) {
$user->candy_number = $user->candy_number + 1300;
$user->push_status = 5;
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
1300,
$user,
$from_user = null,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
'满足直推30人,团队100人,充值1万送1300个',
$attach_data = []
);
}
if ($real_zhitui >= 50 && $real_teamnumber >= 200 && $top_upnumber >= 100000) {
$user->candy_number = $user->candy_number + 30000;
$user->push_status = 6;
$candy_sender = new CandySender();
PrizePool::send(
$candy_sender,
$sender = 0,
30000,
$user,
$from_user = null,
//PrizePool::CERTIFICATION,//const CERTIFICATION = 1; //实名认证奖励
'直推50人实名认证,团队200人,充值金额达10万USDC,送30000通证',
$attach_data = []
);
}
$user->real_teamnumber = $real_teamnumber;
$user->is_realname = 2;
$user->save();//自己实名认证获取通证结束
}
$userreal->review_status = 2;
} else if ($userreal->review_status == 2) {
$userreal->review_status = 1;
} else {
$userreal->review_status = 1;
}
try {
$userreal->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
*/
public function autherror(Request $request)
{
$id = $request->get('id', 0);
$userreal = UserReal::find($id);
if (empty($userreal)) {
return $this->error('参数错误');
}
$user = Users::find($userreal->user_id);
if (!$user) {
return $this->error('用户不存在');
}
$userreal->review_status = 4;
try {
$userreal->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
public function auth(Request $request)
{
$id = $request->get('id', 0);
$userreal = UserReal::find($id);
if (empty($userreal)) {
return $this->error('参数错误');
}
$user = Users::find($userreal->user_id);
if (!$user) {
return $this->error('用户不存在');
}
if ($userreal->review_status == 1) {
//从未认证到认证
//查询users表判断是否为第一次实名认证
$is_realname = $user->is_realname;
if ($is_realname != 2) {
//1:未实名认证过 2:实名认证过
$user->is_realname = 2;
$user->save();//自己实名认证获取通证结束
//判断自己上级的的触发奖励
//UserDAO::addCandyNumber($user);
}
$userreal->review_status = 2;
} else if ($userreal->review_status == 2) {
$userreal->review_status = 1;
} else {
$userreal->review_status = 1;
}
try {
$userreal->save();
//用户实名事件
if ($userreal->review_status == 2) {
event(new RealNameEvent($user, $userreal));
}
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
//认证高级用户
public function setAdvancedUser(Request $request)
{
$id = $request->get('id', 0);
$userreal = UserReal::find($id);
if (empty($userreal)) {
return $this->error('参数错误');
}
$user = Users::find($userreal->user_id);
if (!$user) {
return $this->error('用户不存在');
}
if($userreal->review_status == 2 && $userreal->advanced_user==1){
$userreal->advanced_user = 2;//null还没有提交过高级审核 1 等待审核的 2 已通过高级审核
}else if($userreal->review_status != 2){
return $this->success('请先审核用户信息');
}else if($userreal->advanced_user == 2){
return $this->success('已经审核过');
}else if(!$userreal->advanced_user){
return $this->error('该用户还未提交高级审核');
}
try {
$userreal->save();
return $this->success('操作成功');
} catch (\Exception $exception) {
return $this->error($exception->getMessage());
}
}
//递归查询用户下级所有人数
public function GetTeamMember($members, $mid)
{
$Teams = array();//最终结果
$mids = array($mid);//第一次执行时候的用户id
do {
$othermids = array();
$state = false;
foreach ($mids as $valueone) {
foreach ($members as $key => $valuetwo) {
if ($valuetwo['parent_id'] == $valueone) {
//实名认证通过的团队人数
$Teams[] = $valuetwo['id'];//找到我的下级立即添加到最终结果中
$othermids[] = $valuetwo['id'];//将我的下级id保存起来用来下轮循环他的下级
// array_splice($members,$key,1);//从所有会员中删除他
$state = true;
}
}
}
$mids = $othermids;//foreach中找到的我的下级集合,用来下次循环
} while ($state == true);
//$Teams=Users::where("parents_path","like","%$mid%")->where("is_realname","=",2)->count();
$Teams = Users::whereIn("id", $Teams)->where("is_realname", "=", 2)->count();
return $Teams;
}
}
@@ -0,0 +1,102 @@
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\{Currency, UsersWallet};
USE App\DAO\BlockChain;
use Illuminate\Support\Facades\DB;
use App\Jobs\UpdateBalance;
class WalletController extends Controller
{
public function index()
{
$currencies = Currency::all();
return view('admin.wallet.index', ['currencies' => $currencies]);
}
public function lists(Request $request)
{
$limit = $request->input('limit', 10);
$query = UsersWallet::whereHas('user', function ($query) use ($request) {
$account_number = $request->input('account_number', '');
$account_number != '' && $query->where('account_number', $account_number)->orWhere('phone', $account_number)->orWhere('email', $account_number)->orWhere('id', $account_number);
})->where(function ($query) use ($request) {
$currency = $request->input('currency', -1);
$address = $request->input('address', '');
$currency != -1 && $query->where('currency', $currency);
$address != '' && $query->where('address', $address);
});
$query_total = clone $query;
$total = $query_total->select([
DB::raw('sum(legal_balance) as legal_balance'),
DB::raw('sum(lock_legal_balance) as lock_legal_balance'),
DB::raw('sum(change_balance) as change_balance'),
DB::raw('sum(lock_change_balance) as lock_change_balance'),
DB::raw('sum(lever_balance) as lever_balance'),
DB::raw('sum(lock_lever_balance) as lock_lever_balance'),
])->first();
$total = $total->setAppends([]);
$user_wallet = $query->orderBy('old_balance', 'desc')->paginate($limit);
$list = $user_wallet->getCollection();
$list->transform(function ($item, $key) {
$item->append('account_number');
return $item;
});
$user_wallet->setCollection($list);
return $this->layuiData($user_wallet, ['total' => $total]);
}
public function updateBalance(Request $request)
{
$id = $request->input('id', 0);
$wallet = UsersWallet::find($id);
if (!$wallet) {
return $this->error('钱包不存在');
}
//更改为队列方式更新
UpdateBalance::dispatch($wallet)->onQueue('update:block:balance');
return $this->success('更新请求已经发送到队列中,请稍后再查询');
}
/**
* 代入手续费
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function transferPoundage(Request $request)
{
$id = $request->input('id', 0);
$refresh_balance = $request->input('refresh_balance', 0);
try {
$wallet = UsersWallet::find($id);
throw_unless($wallet, new \Exception('钱包不存在'));
$result = BlockChain::transferPoundage($wallet, $refresh_balance);
return $this->success('请求成功,交易哈希:' . ($result['txid'] ?? $result['data']['txHex']));
} catch (\Throwable $th) {
return $this->error($th->getMessage());
}
}
/**
* 钱包归拢
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function collect(Request $request)
{
$id = $request->input('id', 0);
$refresh_balance = $request->input('refresh_balance', 0);
try {
$wallet = UsersWallet::find($id);
throw_unless($wallet, new \Exception('钱包不存在'));
$result = BlockChain::collect($wallet, $refresh_balance);
return $this->success('请求成功,HASH:' . $result['txid']);
} catch (\Throwable $th) {
return $this->error($th->getMessage().$th->getFile().$th->getLine());
}
}
}
+103
View File
@@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>后台管理</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/admin/plugins/layui/css/layui.css" media="all">
@yield('page-head')
</head>
<body>
<section class="layui-larry-box">
<div class="larry-personal" style="margin: 20px;">
<div class="layui-card">
<div class="layui-card-body layui-text">
@yield('page-content')
</div>
</div>
</div>
</section>
<script src="/js/jquery-1.11.1.min.js"></script>
<script src="/admin/plugins/layui/layui.js"></script>
<script>
/*弹出层*/
/*
参数解释:
title 标题
url 请求的url
id 需要操作的数据id
w 弹出层宽度(缺省调默认值)
h 弹出层高度(缺省调默认值)
*/
function layer_show(title,url,w,h,full){
if (title == null || title == '') {
title=false;
};
if (url == null || url == '') {
url="404.html";
};
if (w == null || w == '') {
w=800;
};
if (h == null || h == '') {
h=($(window).height() - 50);
};
if (full == null || full == ''){
full = false;
}else{
full = true;
}
if(full == true){
var index = layer.open({
type:2,
title: title,
content: url,
});
setTimeout(function(){
layer.full(index);
},100)
}else {
layer.open({
type: 2,
area: [w + 'px', h + 'px'],
fix: false, //不固定
maxmin: true,
shade: 0.4,
title: title,
content: url,
offset: '10px',
});
}
}
/*选择图片弹出层*/
function upload_select(callback,num)
{
var url = '/admin/uploader?form=admin&callback=' + callback + '&num=' + num
layer.open({
type: 2,
area: ['800px', '450px'],
fix: false, //不固定
maxmin: true,
shade:0.4,
closeBtn:0,
title: '选择图片',
content: url,
});
}
/*关闭弹出框口*/
function layer_close(){
layer.closeAll();
}
function upload_box(callback) {
layer_show('上传','/admin/uploader?callback=' + callback,600,160);
}
</script>
@yield('scripts')
</body>
</html>
@@ -0,0 +1,139 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="account_number" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->account_number}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->name}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">充值额度</label>
<div class="layui-input-block">
<input type="number" class="layui-input" id="reserve_time" name="recharge_amount" value="{{$result->recharge_amount}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">充值费率</label>
<div class="layui-input-block">
<input type="number" class="layui-input" id="end_time" name="recharge_rate" value="{{$result->recharge_rate}}" placeholder="请填写百分比">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提现额度</label>
<div class="layui-input-block">
<input type="number" class="layui-input" id="reserve_time" name="cash_amount" value="{{$result->cash_amount}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提现费率</label>
<div class="layui-input-block">
<input type="number" class="layui-input" id="end_time" name="cash_rate" value="{{$result->cash_rate}}" placeholder="请填写百分比">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">微信昵称</label>
<div class="layui-input-block">
<input type="text" name="wechat_nickname" autocomplete="off" placeholder="" class="layui-input" value="{{$result->wechat_nickname}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">微信账号</label>
<div class="layui-input-block">
<input type="text" name="wechat_account" autocomplete="off" placeholder="" class="layui-input" value="{{$result->wechat_account}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">支付宝昵称</label>
<div class="layui-input-block">
<input type="text" name="ali_nickname" autocomplete="off" placeholder="" class="layui-input" value="{{$result->ali_nickname}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">支付宝账号</label>
<div class="layui-input-block">
<input type="text" name="ali_account" autocomplete="off" placeholder="" class="layui-input" value="{{$result->ali_account}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">选择银行</label>
<div class="layui-input-block">
<select name="bank_id" lay-filter="type">
@foreach($banks as $bank)
<option value="{{$bank->id}}" @if($result->bank_id == $bank->id) selected @endif>{{$bank->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">银行账号</label>
<div class="layui-input-block">
<input type="text" name="bank_account" autocomplete="off" placeholder="" class="layui-input" value="{{$result->bank_account}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开户行</label>
<div class="layui-input-block">
<input type="text" name="bank_address" autocomplete="off" placeholder="" class="layui-input" value="{{$result->bank_address}}">
</div>
</div>
<input type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/acceptor_add')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,135 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline">
<input type="text" name="account_number" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
{{--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">调节账户</a>--}}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/acceptor_dealList')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'account_number', title: '用户名', minWidth:100}
,{field: 'acceptor_name', title: '承兑商名称', minWidth:100}
,{field: 'type_name', title: '交易类型', minWidth:100}
,{field: 'way_name', title: '交易方式', minWidth:100}
,{field: 'deal_account', title: '交易账号', minWidth:180}
,{field: 'hes_account', title: '承兑商交易账号', minWidth:180}
,{field: 'money', title: '交易额度', minWidth:100}
,{field: 'sure_name', title: '交易状态', minWidth:100}
,{field: 'create_time', title: '提交时间', minWidth:180}
,{field: 'update_time', title: '确认时间', minWidth:180}
// ,{field: 'create_time', title: '添加时间', minWidth:80}
// ,{field: 'wechat_nickname', title: '微信昵称', minWidth:80}
// ,{field: 'wechat_account', title: '微信账号', minWidth:80}
// ,{field: 'ali_nickname', title: '支付宝昵称', minWidth:80}
// ,{field: 'ali_account', title: '支付宝账号', minWidth:80}
// ,{field: 'bank_name', title: '银行名称', minWidth:80}
// ,{field:'is_recommend', title:'热卖', minWidth:85, templet: '#switchTpl', unresize: true}
// ,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听热卖操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/product_hot')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.msg);
}
}
});
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑承兑商','{{url('')}}?id='+data.id);
} else if(obj.event === 'detail'){
layer_show('调节账户','{{url('admin/adjust_account')}}?id='+data.id,800,600);
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,132 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加承兑商','{{url('admin/acceptor_add')}}')">添加承兑商</button>
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline">
<input type="text" name="account_number" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
{{--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">调节账户</a>--}}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/acceptor_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'account_number', title: '用户名', minWidth:80}
,{field: 'name', title: '名称', minWidth:80}
,{field: 'recharge_amount', title: '充值额度', minWidth:80}
,{field: 'recharge_rate', title: '充值费率', minWidth:80}
,{field: 'cash_amount', title: '提现额度', minWidth:80}
,{field: 'cash_rate', title: '提现费率', minWidth:80}
,{field: 'create_time', title: '添加时间', minWidth:80}
// ,{field: 'wechat_nickname', title: '微信昵称', minWidth:80}
// ,{field: 'wechat_account', title: '微信账号', minWidth:80}
// ,{field: 'ali_nickname', title: '支付宝昵称', minWidth:80}
// ,{field: 'ali_account', title: '支付宝账号', minWidth:80}
// ,{field: 'bank_name', title: '银行名称', minWidth:80}
// ,{field:'is_recommend', title:'热卖', minWidth:85, templet: '#switchTpl', unresize: true}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听热卖操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/product_hot')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.msg);
}
}
});
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/acceptor_del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑承兑商','{{url('admin/acceptor_add')}}?id='+data.id);
} else if(obj.event === 'detail'){
layer_show('调节账户','{{url('admin/adjust_account')}}?id='+data.id,800,600);
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,152 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-inline">
<label class="layui-form-label">用户账号</label>
<div class="layui-input-inline" >
<input type="datetime" name="account" placeholder="请输入手机号或邮箱" autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-input-inline date_time111" style="margin-left: 50px;">
<input type="text" name="start_time" id="start_time" placeholder="请输入开始时间" autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-input-inline date_time111" style="margin-left: 50px;">
<input type="text" name="end_time" id="end_time" placeholder="请输入结束时间" autocomplete="off" class="layui-input" value="">
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>日志类型&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="type" id="type" class="layui-input">
<option value="">所有类型</option>
@foreach ($types as $key=>$type)
<option value="{{ $key }}" class="ww">{{ $type }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>货币类型&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="currency_type" id="currency_type" class="layui-input">
<option value="">所有</option>
@foreach ($currency_type as $key=>$type)
<option value="{{ $type['id'] }}" class="ww">{{ $type['name'] }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>正负值&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="sign" id="sign" class="layui-input">
<option value="0">所有值</option>
<option value="1" class="ww">正值</option>
<option value="-1" class="ww">负值</option>
</select>
</div>
</div>
<button class="layui-btn btn-search" id="mobile_search" lay-submit lay-filter="mobile_search"> <i class="layui-icon">&#xe615;</i> </button>
</div>
<blockquote class="layui-elem-quote" id="statistics">0</blockquote>
<div class="layui-form">
<table id="accountlist" lay-filter="accountlist"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="viewDetail">查看详情</a>
</script>
@endsection
@section('scripts')
<script>
window.onload = function() {
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){ // enter 键
$('#mobile_search').click();
}
};
layui.use(['element', 'form', 'layer', 'table','laydate'], function () {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
var laydate = layui.laydate;
laydate.render({
elem: '#start_time'
});
laydate.render({
elem: '#end_time'
});
form.on('submit(mobile_search)',function(obj){
var start_time = $("#start_time").val()
var end_time = $("#end_time").val()
var currency_type = $("#currency_type").val()
var account = $("input[name='account']").val()
var type = $('#type').val()
var sign = $('#sign').val()
tbRend("{{url('/admin/account/list')}}?account="+account
+'&type='+type
+'&start_time='+start_time
+'&end_time='+end_time
+'&currency_type='+currency_type
+'&sign='+sign
);
return false;
});
function tbRend(url) {
table.render({
elem: '#accountlist'
,url: url
,page: true
,limit: 20
,height: 'full-100'
,toolbar: true
,cols: [[
{field: 'id', title: 'ID', width: 110}
,{field:'account',title: '用户账号',width: 130}
,{field:'account_number',title: '交易账号',width: 150, hide: true}
,{field:'before',title:'变动前', width:150}
,{field:'value',title:'变动量', minWidth:160}
,{field:'after',title:'变动后', width:150}
,{field:'transaction_info',title:'交易信息', width:100}
,{field:'currency_name',title:'币种', width:100}
,{field:'info',title:'记录', minWidth:300}
//,{field:'type',title:'类型', width:100}
,{field:'created_time',title:'创建时间', width:170}
// , {fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#barDemo'}
]]
,parseData: function(res){ //res 即为原始返回的数据
$('#statistics').html(res.sum);
}
});
}
tbRend("{{url('/admin/account/list')}}");
//监听工具条
table.on('tool(accountlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'viewDetail') { //编辑
var index = layer.open({
title: '查看详情'
, type: 2
, content: '{{url('admin/account/viewDetail')}}?id=' + data.id
, maxmin: true
});
layer.full(index);
}
});
});
}
</script>
@endsection
@@ -0,0 +1,36 @@
@extends('admin._layoutNew')
@section('page-head')
@stop
@section('page-content')
<div class="larry-personal-body clearfix">
<form class="layui-form col-lg-5">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="nickname" autocomplete="off" class="layui-input layui-disabled" value="{{ $results['account_number'] }}" placeholder="" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">记录</label>
<div class="layui-input-block">
<input type="text" name="value" autocomplete="off" class="layui-input layui-disabled" value="{{ $results['value'] }}" placeholder="" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<input type="text" name="info" autocomplete="off" class="layui-input layui-disabled" value="{{ $results['info'] }}" placeholder="" disabled>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">时间</label>
<div class="layui-input-block">
<input type="text" name="time" autocomplete="off" class="layui-input layui-disabled" value="{{ $results['created_time'] }}" placeholder="" disabled>
</div>
</div>
</form>
</div>
@stop
@section('scripts')
@stop
+166
View File
@@ -0,0 +1,166 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">广告标题</label>
<div class="layui-input-block">
<input type="text" name="title" autocomplete="off" placeholder="" class="layui-input" value="{{$res->title}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input type="text" name="describe" autocomplete="off" placeholder="" class="layui-input" value="{{$res->describe}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">广告位</label>
<div class="layui-input-block">
<select name="position_id" lay-filter="aihao">
<option value=""></option>
@foreach($position as $adsense)
<option value="{{$adsense['id']}}" @if($res['position_id'] == $adsense['id']) selected @endif>{{$adsense['name']}}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-block">
<input type="text" id="time1" name="start_time" autocomplete="off" class="layui-input" value="@if(!empty($res->start_time)){{$res->start_time}}@endif" placeholder="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-block">
<input type="text" id="time2" name="end_time" autocomplete="off" class="layui-input" value="@if(!empty($res->end_time)){{$res->end_time}}@endif" placeholder="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链接</label>
<div class="layui-input-block">
<input type="text" name="url" autocomplete="off" placeholder="" class="layui-input" value="{{$res->url}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="sort" autocomplete="off" placeholder="" class="layui-input" value="{{$res->sort}}">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">广告图片</label>
<div class="layui-input-block">
<button class="layui-btn" type="button" id="upload_test">选择图片</button>
<br>
<img src="@if(!empty($res->pic)){{$res->pic}}@endif" id="img_thumbnail" class="thumbnail" style="display: @if(!empty($res->pic)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 5px;">
<input type="hidden" name="pic" id="thumbnail" value="@if(!empty($res->pic)){{$res->pic}}@endif">
</div>
</div>
<input type="hidden" name="id" value="{{$res->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#upload_test' //绑定元素
,url: '{{URL("api/upload")}}' //上传接口
,done: function(res){
//上传完毕回调
if (res.type == "ok"){
$("#thumbnail").val(res.message)
$("#img_thumbnail").show()
$("#img_thumbnail").attr("src",res.message)
} else{
alert(res.message)
}
}
,error: function(){
//请求异常回调
}
});
});
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
var start={
elem:'#time1',
type:'date',
show:true,
closeStop:'#time1'
};
var end={
elem:'#time2',
type:'date',
show:true,
closeStop:'#time2'
};
lay('#time1').on('click',function(){
if($('#time2').val() != null && $('#time2').val() !=undefined &&$('#time2').val() !=''){
start.max = $('#time2').val();
}
laydate.render(start);
});
lay('#time2').on('click',function(){
if($('#time1').val() != null && $('#time1').val() !=undefined &&$('#time1').val() !=''){
end.min = $('#time1').val();
}
laydate.render(end);
});
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/ad/edit')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
+138
View File
@@ -0,0 +1,138 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="position_manager">广告位管理</button>
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_ad">添加广告</button>
<!-- <div class="layui-inline">
<label class="layui-form-label">广告位置</label>
<div class="layui-input-inline">
<input type="text" name="position_id" placeholder="用户手机号或邮箱" autocomplete="off" class="layui-input" value="">
</div>
<button class="layui-btn btn-search" id="mobile_search" lay-submit lay-filter="mobile_search"> <i class="layui-icon">&#xe615;</i> </button>
</div> -->
<table id="userlist" lay-filter="userlist"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_show" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_show == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="FcardTpl">
<img src="@{{ d.pic }}" width="100" height="100">
</script>
@endsection
@section('scripts')
<script>
window.onload = function() {
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){ // enter 键
$('#mobile_search').click();
}
};
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
$('#add_ad').click(function(){layer_show('添加广告', '/admin/ad/edit');});
$('#position_manager').click(function(){layer_show('广告位管理', '/admin/ad/position_index');});
form.on('submit(mobile_search)',function(obj){
var position_id = $("input[name='position_id']").val();
tbRend("{{url('/admin/ad/list')}}?position_id="+position_id);
return false;
});
function tbRend(url) {
table.render({
elem: '#userlist'
, url: url
, page: true
,limit: 20
, cols: [[
{ field: 'id', title: 'ID', width: 100}
, {field:'title',title:'标题', width:150}
, {field:'describe',title:'描述', width:150}
, {field:'pic',title: '广告图片',width: 100,templet:'#FcardTpl'}
, {field:'url',title:'链接', width:150}
, {field:'start_time',title:'开始时间', width:150}
, {field:'end_time',title:'结束时间', width:150}
, {field:'position_name',title:'位置', width:100}
, {field:'sort',title:'排序', width:100}
,{field:'is_show', title:'是否显示', width:90, templet: '#switchTpl'}
, {fixed: 'right', title: '操作', width: 280, align: 'center', toolbar: '#barDemo'}
]]
});
}
tbRend("{{url('/admin/ad/list')}}");
//监听操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/ad/lock')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
layer.msg(res.message);
}
});
});
//监听工具条
table.on('tool(userlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "{{url('admin/ad/del')}}",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}else if (layEvent === 'edit'){ //编辑
layer_show('编辑广告','{{url('admin/ad/edit')}}?id='+data.id);
}
});
});
}
</script>
@endsection
@@ -0,0 +1,70 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="{{$res->name}}" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">描述</label>
<div class="layui-input-block">
<input type="text" name="describe" autocomplete="off" placeholder="" class="layui-input" value="{{$res->describe}}" >
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">是否显示</label>
<div class="layui-input-block">
<input type="radio" name="is_show" value="1" title="" @if($res->is_show ==1) checked @endif >
<input type="radio" name="is_show" value="0" title="" @if($res->is_show ==0) checked @endif>
</div>
</div> -->
<input type="hidden" name="id" value="{{$res['id']}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/ad/position_edit')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,116 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_position">添加广告位</button>
<table id="userlist" lay-filter="userlist"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_show" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_show == 1 ? 'checked' : '' }}>
</script>
@endsection
@section('scripts')
<script>
window.onload = function() {
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==13){ // enter 键
$('#mobile_search').click();
}
};
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
$('#add_position').click(function(){layer_show('添加广告位', '/admin/ad/position_edit');});
function tbRend(url) {
table.render({
elem: '#userlist'
, url: url
, page: true
,limit: 20
, cols: [[
{ field: 'id', title: 'ID', width: 100}
, {field:'name',title:'名称', width:150}
, {field:'describe',title:'描述', width:150}
, {field:'create_time',title:'添加时间', width:200}
,{field:'is_show', title:'是否显示', width:90, templet: '#switchTpl'}
, {fixed: 'right', title: '操作', width: 280, align: 'center', toolbar: '#barDemo'}
]]
});
}
tbRend("{{url('/admin/ad/position_list')}}");
//监听是否显示操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/ad/position_show')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
layer.msg(res.message);
}
});
});
//监听工具条
table.on('tool(userlist)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "{{url('admin/ad/position_del')}}",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}else if (layEvent === 'edit'){ //编辑
layer_show('编辑广告位','{{url('admin/ad/position_edit')}}?id='+data.id);
}
});
});
}
</script>
@endsection
+234
View File
@@ -0,0 +1,234 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
.reddot {
position: absolute;
right:5%;
color: red;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<!-- <div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>量化币种</label>
<div class="layui-input-block">
<select name='currency' id="currency">
<option value='1' class='layui-option'>BTC</option>
<option value='2' class='layui-option'>ETH</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>类型</label>
<div class="layui-input-block">
<select name='type'>
<option value='call' class='layui-option'>看涨(call</option>
<option value='put' class='layui-option'>看跌(put</option>
</select>
</div>
<input type="checkbox" name="open_lever" value="1" title="杠杆合约" @if (isset($currency_match)) {{ $currency_match->open_lever == 1 ? 'checked' : '' }} @else checked @endif>
<input type="checkbox" name="open_microtrade" value="1" title="期权" @if (isset($currency_match)) {{ $currency_match->open_microtrade == 1 ? 'checked' : '' }} @else checked @endif>
<input type="checkbox" name="open_coin_trade" value="1" title="币币交易" @if (isset($currency_match)) {{ $currency_match->open_coin_trade == 1 ? 'checked' : '' }} @else checked @endif>
<input type="checkbox" name="coin_trade_success" value="1" title="币币交易撮合开关" @if (isset($currency_match)) {{ $currency_match->coin_trade_success == 1 ? 'checked' : '' }} @else checked @endif>
</div> -->
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">AI组合</label>
<div class="layui-input-block">
@foreach ($currencies as $currency)
<input type="checkbox" name="invest[]" value="{{$currency->name}}" title="{{ $currency->name }}">
@endforeach
</div>
</div>
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">会员等级</label>
<div class="layui-input-block">
<select name='name'>
@foreach ($userlevel as $userleve)
<option value="{{$userleve->name}}" class='layui-option'>{{ $userleve->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">运行时长</label>
<div class="layui-input-block">
<input type="number" step="any" name="days" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>最大收益率%</label>
<div class="layui-input-block">
<input type="number" name="rate" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>最大回撤率%</label>
<div class="layui-input-block">
<input type="number" step="any" name="ratemax" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>投入金额</label>
<div class="layui-input-block">
<input type="number" name="amount" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>区间最低价</label>
<div class="layui-input-block">
<input type="number" name="amax" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<!--
<div class="layui-form-item">
<label class="layui-form-label">次数</label>
<div class="layui-input-block">
<input type="text" name="total_number" autocomplete="off" placeholder="" class="layui-input" value="">
</div>
</div>
-->
<div class="layui-form-item">
<label class="layui-form-label">最大服务费</label>
<div class="layui-input-block">
<input type="text" name="commission" autocomplete="off" placeholder="" class="layui-input" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>热门</label>
<div class="layui-input-block">
<select name='hot'>
<option value='1' class='layui-option'></option>
<option value='0' class='layui-option'></option>
</select>
</div>
</div>
<!--
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>违约金比例%</label>
<div class="layui-input-block">
<input type="number" name="liquidateddamages" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div> -->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="saveDual_submit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
// var startTime =$('.start_timeinput').val();
// var endTime =$('.end_timeinput').val();
// this.startTime = str_replace("T"," ",this.startTime);
// this.endTime = str_replace("T"," ",this.endTime);
// 表单提交
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(saveDual_submit)', function(data){
var data = data.field;
$.ajax({
url:'{{url('/admin/ai/saveAi')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
// layui.use(['form','laydate'],function () {
// var form = layui.form
// ,$ = layui.jquery
// ,laydate = layui.laydate
// ,index = parent.layer.getFrameIndex(window.name);
// //监听提交
// form.on('submit(demo1)', function(data){
// var data = data.field;
// $.ajax({
// url:'{{url('admin/user/add')}}'
// ,type:'post'
// ,dataType:'json'
// ,data : data
// ,success:function(res){
// if(res.type=='error'){
// layer.msg(res.message);
// }else{
// parent.layer.close(index);
// parent.window.location.reload();
// }
// }
// });
// return false;
// });
// });
/*
getNowPrice();
setInterval(()=>{
getNowPrice()
},5000)
*/
//获取实时价格
function getNowPrice(){
const val = $("#currency option:selected").val()
$.ajax({
url:'{{url('/admin/ai/getnewprice')}}'
,type:'get'
,dataType:'json'
,data : 'currency=' +val
,success:function(res){
const value = res.message.data[0]
$("#nowPrice").val(value.price)
}
});
}
</script>
@endsection
+198
View File
@@ -0,0 +1,198 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form">
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">AI组合</label>
<input type="hidden" name="id" placeholder="" disabled="disabled" class="layui-input" value="{{$results->id}}">
<div class="layui-input-block">
@foreach ($currencies as $currency)
<input type="checkbox" name="invest[]" value="{{$currency->name}}" title="{{ $currency->name }}" @if (isset($invest)) {{ stristr($invest,$currency->name) ? 'checked' : '' }} @else checked @endif>
@endforeach
</div>
</div>
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">会员等级</label>
<div class="layui-input-block">
<select name='name'>
@foreach ($userlevel as $userleve)
<option value="{{$userleve->name}}" class='layui-option' @if (isset($userleve->name)) {{ $userleve->name == $results->name ? 'selected' : '' }} @else checked @endif>{{ $userleve->name }}</option>
@endforeach
</select>
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">量化名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="{{$results->name}}">
</div>
</div>-->
<div class="layui-form-item">
<label class="layui-form-label">状态(停止用户购买项目)</label>
<div class="layui-input-block">
<select name="status" lay-verify="required">
<option value="0" {{ ($results->status) == 0 ? 'selected' : '' }} >结束</option>
<option value="1" {{ ($results->status) == 1 ? 'selected' : '' }} >进行</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">运行时长</label>
<div class="layui-input-block">
<input type="number" step="any" name="days" autocomplete="off" placeholder="" class="layui-input" value="{{$results->days}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大收益率%</label>
<div class="layui-input-block">
<input type="number" step="any" name="rate" autocomplete="off" placeholder="" class="layui-input" value="{{$results->rate}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大回撤率%</label>
<div class="layui-input-block">
<input type="number" step="any" name="ratemax" autocomplete="off" placeholder="" class="layui-input" value="{{$results->ratemax}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">投入金额</label>
<div class="layui-input-block">
<input type="number" name="amount" autocomplete="off" placeholder="" class="layui-input" value="{{$results->amount}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">区间最低价</label>
<div class="layui-input-block">
<input type="number" name="amax" autocomplete="off" placeholder="" class="layui-input" value="{{$results->amax}}">
</div>
</div>
<!--
<div class="layui-form-item">
<label class="layui-form-label">次数</label>
<div class="layui-input-block">
<input type="text" name="total_number" autocomplete="off" placeholder="" class="layui-input" value="{{$results->total_number}}">
</div>
</div>
-->
<div class="layui-form-item">
<label class="layui-form-label">最大服务费</label>
<div class="layui-input-block">
<input type="text" name="commission" autocomplete="off" placeholder="" class="layui-input" value="{{$results->commission}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>热门</label>
<div class="layui-input-block">
<select name='hot'>
<option value="0" {{ ($results->hot) == 0 ? 'selected' : '' }} ></option>
<option value="1" {{ ($results->hot) == 1 ? 'selected' : '' }} ></option>
</select>
</div>
</div>
<!--
<div class="layui-form-item">
<label class="layui-form-label">违约金比例%</label>
<div class="layui-input-block">
<input type="number" name="liquidateddamages" autocomplete="off" placeholder="" class="layui-input" value="{{$results->liquidateddamages}}">
</div>
</div> -->
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="saveDual_submit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(saveDual_submit)', function(data){
var data = data.field;
// data.start_time=data.start_time.replace("T"," ")
// data.end_time=data.end_time.replace("T"," ")
$.ajax({
url:'{{url('/admin/ai/editAi')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='ok'){
layer.msg('操作成功');
}if(res.type=='error'){
layer.msg(res.message);
}else{
layer.msg(res.message);
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
/*
getNowPrice();
setInterval(()=>{
getNowPrice()
},5000)
*/
//获取实时价格
function getNowPrice(){
const val = $("#currency option:selected").val()
$.ajax({
url:'{{url('/admin/ai/getnewprice')}}'
,type:'get'
,dataType:'json'
,data : 'currency=' +val
,success:function(res){
if (res.message.data.length) {
const value = res.message.data[0]
$("#nowPrice").val(value.price)
}
}
});
}
</script>
@endsection
+372
View File
@@ -0,0 +1,372 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
p.percent {
text-align: right;
margin-right: 10px;
}
p.percent::after {
content: '%';
}
</style>
@endsection
@section('page-content')
<div class="layui-form">
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加AI项目','{{url('admin/ai/add')}}')">添加AI项目</button>
<!--搜索-->
<div class="layui-inline">
<!--<input name="user_id" type="hidden" value="{{Request::get('user_id')}}">-->
<label class="layui-form-label">状态</label>
<div class="layui-input-inline" style="width:90px;">
<select name="status">
<option value="">全部</option>
<option value="1">进行中</option>
<option value="0">已结束</option>
</select>
</div>
</div>
<!-- <div class="layui-inline">
<label class="layui-form-label">币种</label>
<div class="layui-input-inline" style="width:90px;">
<select name="currency_id">
<option value="">全部</option>
<option value="1">BTC</option>
<option value="2">ETH</option>
</select>
</div>
</div> -->
<div class="layui-inline" style="margin-left: 10px">
<button class="layui-btn" lay-submit lay-filter="submit">查询</button>
</div>
</div>
<table id="demo" lay-filter="test"></table>
@endsection
@section('scripts')
<script id="barOpe" type="text/html">
<button class="layui-btn layui-btn-xs" lay-event="edit">编辑</button>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script type="text/html" id="statustml">
@{{d.status==1 ? '<span class="layui-badge layui-bg-green">'+'进行中'+'</span>' : '' }}
@{{d.status==0 ? '<span class="layui-badge layui-bg-red">'+'已结束'+'</span>' : '' }}
</script>
<script type="text/html" id="statushot">
@{{d.hot==1 ? '<span class="layui-badge layui-bg-green">'+'是'+'</span>' : '' }}
@{{d.hot==0 ? '<span class="layui-badge layui-bg-red">'+'否'+'</span>' : '' }}
</script>
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
var demo = table.render({
elem: '#demo'
,toolbar: '#toolbar'
,url: '{{url('admin/ai_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'id', minWidth:60, sort: true}
,{field: 'invest', title: 'AI名称', minWidth:200}
,{field: 'name', title: '会员等级', minWidth:200}
,{field: 'days', title: '运行时长', minWidth:100}
,{field: 'rate', title: '最大收益率%', minWidth: 115}
,{field: 'ratemax', title: '最大回撤率%', minWidth: 115}
,{field: 'amount', title: '投入金额', minWidth:100}
,{field: 'amax', title: '区间最低价', minWidth:100}
,{field: 'purchased_number', title: '人数', minWidth:100}
,{field: 'commission', title: '最大服务费', minWidth:100}
// ,{field: 'liquidateddamages', title: '违约金比例%', minWidth:110}
,{field: 'created', title: '创建时间', minWidth:110}
,{field: 'status', title: '状态', minWidth:60, templet: '#statustml'}
,{field: 'hot', title: '热门', minWidth:60, templet: '#statushot'}
,{fixed: 'right', title: '操作', minWidth:180,toolbar: '#barOpe'}
//,{title:'操作',width:80,toolbar: '#barDemo'}
]]
});
// 监听工具条
table.on('tool(test)', function (obj) {
var layEvent = obj.event
,data = obj.data
if (layEvent === 'edit') {
// layer.open({
// type: 2
// ,title: '编辑'
// ,content: '/admin/ai/editaiView' + '?id=' + data.id
// ,area: ['960px', '650px']
// });
var index = layer.open({
title: '编辑'
,type: 2
,content: '{{url('/admin/ai/editAiView')}}?id=' + data.id
,area: ['960px', '500px']
});
}
// if(obj.event === 'edit'){
// layer_show('编辑双币项目','{{url('admin/dual/editDualView')}}?id='+data.id);
// }
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "/admin/ai/del",
//?id=" + data.id,
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
layer.msg('操作成功');
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}
});
// //监听提交
// form.on('submit(mobile_search)', function(data){
// var id = data.field.id;
// table.reload('demo',{
// where:{currency_id:id},
// page: {curr: 1} //重新从第一页开始
// });
// return false;
// });
form.on('submit(submit)', function (data) {
var option = {
where: data.field
}
// console.log(21213231,option)
demo.reload(option);
});
// table.on('tool(test)', function(obj){
// var data = obj.data;
// if(obj.event === 'del'){
// layer.confirm('真的删除行么', function(index){
// $.ajax({
// url:'{{url('admin/currency_del')}}',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function (res) {
// if(res.type == 'error'){
// layer.msg(res.message);
// }else{
// obj.del();
// layer.close(index);
// }
// }
// });
// });
// } else if(obj.event === 'edit'){
// layer_show('编辑币种','{{url('admin/currency_add')}}?id='+data.id);
// } else if (obj.event == 'execute'){
// layer.confirm('确定执行上币脚本?', function(index){
// $.ajax({
// url:'{{url('admin/currency_execute')}}',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function (res) {
// layer.msg(res.message);
// }
// });
// });
// } else if (obj.event == 'match') {
// layer.open({
// title: '交易对管理'
// ,type: 2
// ,content: '/admin/currency/match/' + data.id
// ,area: ['960px', '600px']
// });
// } else if(obj.event == 'deposit'){
// layer.open({
// title: '质押管理'
// ,type: 2
// ,content: '/admin/currency/deposit/' + data.id
// ,area: ['960px', '600px']
// });
// }
// });
// //监听是否显示操作
// form.on('switch(isDisplay)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/currency_display')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
// //监听是否购买保险操作
// form.on('switch(isInsurancable)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/is_insurancable')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
// //监听工具条
// table.on('tool(adminList)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
// var data = obj.data; //获得当前行数据
// var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
// var tr = obj.tr; //获得当前行 tr 的DOM对象
// if(layEvent === 'del'){ //删除
// layer.confirm('真的要删除吗?', function(index){
// //向服务端发送删除指令
// $.ajax({
// url:'/admin/manager/delete',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function(res){
// if(res.type=='ok'){
// obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
// layer.msg(res.message);
// layer.close(index);
// }else{
// layer.close(index);
// layer.alert(res.message);
// }
// }
// });
// });
// } else if(layEvent === 'edit'){ //编辑
// //do something
// layer_show('修改管理员', '/admin/manager/add?id=' + data.id);
// }
// });
// //是否开启币币划转
// form.on('switch(is_transfer)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/is_transfer')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
// table.on('toolbar(test)', function (obj) {
// switch (obj.event) {
// case 'add':
// layer.open({
// title: '添加币种'
// ,type: 2
// ,content: '/admin/currency_add'
// ,area: ['480px', '650px']
// });
// break;
// default:
// break;
// }
// });
// table.on('tool(test)', function(obj){
// var data = obj.data;
// if(obj.event === 'del'){
// layer.confirm('真的删除行么', function(index){
// $.ajax({
// url:'{{url('admin/currency_del')}}',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function (res) {
// if(res.type == 'error'){
// layer.msg(res.message);
// }else{
// obj.del();
// layer.close(index);
// }
// }
// });
// });
// } else if(obj.event === 'edit'){
// layer_show('编辑币种','{{url('admin/currency_add')}}?id='+data.id);
// } else if (obj.event == 'execute'){
// layer.confirm('确定执行上币脚本?', function(index){
// $.ajax({
// url:'{{url('admin/currency_execute')}}',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function (res) {
// layer.msg(res.message);
// }
// });
// });
// } else if (obj.event == 'match') {
// layer.open({
// title: '交易对管理'
// ,type: 2
// ,content: '/admin/currency/match/' + data.id
// ,area: ['960px', '600px']
// });
// } else if(obj.event == 'deposit'){
// layer.open({
// title: '质押管理'
// ,type: 2
// ,content: '/admin/currency/deposit/' + data.id
// ,area: ['960px', '600px']
// });
// }
// });
});
</script>
@endsection
+109
View File
@@ -0,0 +1,109 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
p.percent {
text-align: right;
margin-right: 10px;
}
p.percent::after {
content: '%';
}
</style>
@endsection
@section('page-content')
<div class="layui-form">
<!--<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加双币项目','{{url('admin/ai/add')}}')">添加双币项目</button>-->
<!--搜索-->
<div class="layui-inline">
<label class="layui-form-label">用户ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="user_id" type="text" value="" placeholder="请输入用户ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="orderid" type="text" value="" placeholder="请输入订单ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline" style="width:90px;">
<select name="status">
<option value="">全部</option>
<option value="1">已结算</option>
<option value="0">未结算</option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="search" lay-filter="search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</div>
<table id="orderList" lay-filter="test"></table>
@endsection
@section('scripts')
<script type="text/html" id="statustml">
@{{d.status==1 ? '<span class="layui-badge layui-bg-green">'+'已结算'+'</span>' : '' }}
@{{d.status==0 ? '<span class="layui-badge layui-bg-red">'+'未结算'+'</span>' : '' }}
</script>
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
var orderList = table.render({
elem: '#orderList'
,toolbar: '#toolbar'
,url: '{{url('admin/ai/order_lists')}}' //数据接口
,page: true //开启分页
// ,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:40, sort: true}
,{field: 'user_id', title: '用户ID', minWidth: 80}
,{field: 'day', title: '运行时长', minWidth:110}
// ,{field: 'name', title: '量化名称', minWidth:200}
,{field: 'orderid', title: '订单ID', minWidth:200}
,{field: 'order_rate', title: '最大收益率%', minWidth:110}
,{field: 'amount', title: '投入金额', minWidth:110}
,{field: 'todayincome', title: '今日收益', minWidth:110}
,{field: 'totalincome', title: '总收益', minWidth:110}
//,{field: 'currency_id', title: '购买消耗币种', minWidth:110, templet: '#statusCurreny'}
,{field: 'created', title: '创建时间', minWidth:110}
,{field: 'expire', title: '到期时间', minWidth:110}
,{field: 'status', title: '状态', minWidth:80, templet: '#statustml'}
//,{title:'操作',width:80,toolbar: '#barorderList'}
]]
});
//监听提交
form.on('submit(search)', function (data) {
orderList.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
});
</script>
@endsection
+120
View File
@@ -0,0 +1,120 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">卖方账号</label>
<div class="layui-input-inline">
<input type="text" name="sell_account" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->sell_account)){{$result->sell_account}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">买方账号</label>
<div class="layui-input-inline">
<input type="text" name="buy_account" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->buy_account)){{$result->buy_account}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">交易币</label>
<div class="layui-input-inline">
<select name="currency_id" lay-filter="" lay-search>
<option value=""></option>
@if(!empty($currencies))
@foreach($currencies as $currency)
<option value="{{$currency->id}}" @if($currency->id == $result->currency_id) selected @endif>{{$currency->name}}</option>
@endforeach
@endif
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">法币</label>
<div class="layui-input-inline">
<select name="legal_id" lay-filter="">
<option value=""></option>
@if(!empty($currencies))
@foreach($legals as $legal)
<option value="{{$legal->id}}" @if($legal->id == $result->legal_id) selected @endif>{{$legal->name}}</option>
@endforeach
@endif
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价格区间下限</label>
<div class="layui-input-inline">
<input type="text" name="min_price" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->min_price)){{$result->min_price}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价格区间上限</label>
<div class="layui-input-inline">
<input type="text" name="max_price" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->max_price)){{$result->max_price}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数量随机下限</label>
<div class="layui-input-inline">
<input type="text" name="min_number" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->min_number)){{$result->min_number}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数量随机上限</label>
<div class="layui-input-inline">
<input type="text" name="max_number" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->max_number)){{$result->max_number}}@endif">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">下单频率</label>
<div class="layui-input-inline">
<input type="text" name="need_second" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="@if(!empty($result->need_second)){{$result->need_second}}@endif">
</div>
</div>
<input type="hidden" name="id" value="@if(!empty($result->id)){{$result->id}}@endif">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/auto_add')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
+139
View File
@@ -0,0 +1,139 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加机器人','{{url('admin/auto_add')}}')">添加机器人</button>
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_start" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_start == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="legal">
@{{d.is_legal==1 ? '<span >'+'是'+'</span>' : '' }}
@{{d.is_legal==0 ? '<span >'+'否'+'</span>' : '' }}
</script>
<script type="text/html" id="lever">
@{{d.is_lever==1 ? '<span >'+'是'+'</span>' : '' }}
@{{d.is_lever==0 ? '<span >'+'否'+'</span>' : '' }}
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
{{--<a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="execute">执行上币脚本</a>--}}
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/auto_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', Width:60, sort: true}
,{field: 'sell_account', title: '卖家', Width:80}
,{field: 'buy_account', title: '买家', minWidth:80}
,{field: 'currency_name', title: '交易币', minWidth:80}
,{field: 'legal_name', title: '法币', minWidth:80}
,{field: 'min_price', title: '最低区间', minWidth:80}
,{field: 'max_price', title: '最高区间', minWidth:80}
,{field: 'min_number', title: '随机最小数量', minWidth:80}
,{field: 'max_number', title: '随机最大数量', minWidth:80}
,{field: 'need_second', title: '频率(秒)', minWidth:80}
,{field: 'create_time', title: '添加时间', minWidth:80}
// ,{field: 'type', title: '基于BTC/ETH', minWidth:80, templet: '#typetml'}
// ,{field: 'is_legal', title: '是否法币', minWidth:80, templet: '#legal'}
// ,{field: 'is_lever', title: '是否杠杆币', minWidth:80, templet: '#level'}
,{field:'is_start', title:'是否开启', minWidth:85, templet: '#switchTpl', unresize: true}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听热卖操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/auto_start')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/currency_del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑机器人','{{url('admin/auto_add')}}?id='+data.id);
} else if (obj.event == 'execute'){
layer.confirm('确定执行上币脚本?', function(index){
$.ajax({
url:'{{url('admin/currency_execute')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.msg(res.message);
}
});
});
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
+111
View File
@@ -0,0 +1,111 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">收款方式</label>
<div class="layui-input-block">
<input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->name}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="number" class="layui-input" id="end_time" name="sort" value="{{$result->sort}}" placeholder="排序为升序">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">logo</label>
<div class="layui-input-block">
<button class="layui-btn" type="button" id="upload_test">选择图片</button>
<br>
<img src="
@if(!empty($result->logo))
{{$result->logo}}
@endif"
id="img_thumbnail" class="thumbnail"
style="display:
@if(!empty($result->logo))
{{"block"}}
@else{{"none"}}
@endif;
max-width: 200px;
height: auto;
margin-top: 5px;">
<input type="hidden" name="logo" id="thumbnail" value="@if(!empty($result->logo)){{$result->logo}}@endif">
</div>
</div>
<input type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#upload_test' //绑定元素
,url: '{{URL("api/upload")}}' //上传接口
,done: function(res){
//上传完毕回调
if (res.type == "ok"){
$("#thumbnail").val(res.message)
$("#img_thumbnail").show()
$("#img_thumbnail").attr("src",res.message)
} else{
alert(res.message)
}
}
,error: function(){
//请求异常回调
}
});
});
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/bank/add')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
+131
View File
@@ -0,0 +1,131 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加收款方式','{{url('admin/bank/add')}}')">添加收款方式</button>
{{--<form class="layui-form layui-form-pane layui-inline" action="">--}}
{{--<div class="layui-inline" style="margin-left: 50px;">--}}
{{--<label class="layui-form-label">用户名</label>--}}
{{--<div class="layui-input-inline">--}}
{{--<input type="text" name="account_number" autocomplete="off" class="layui-input">--}}
{{--</div>--}}
{{--</div>--}}
{{--<div class="layui-inline">--}}
{{--<div class="layui-input-inline">--}}
{{--<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>--}}
{{--</div>--}}
{{--</div>--}}
{{--</form>--}}
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_display" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_display == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
{{--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">调节账户</a>--}}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script type="text/html" id="logo">
<img src="@{{d.logo}}" >
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/bank/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'name', title: '支付方式', minWidth:80}
,{field: 'logo', title: '图标', minWidth:80,templet: '#logo'}
// ,{field: 'sort', title: '排序', minWidth:80}
,{field: 'sort', title: '排序', minWidth:80}
// ,{field: 'create_time', title: '添加时间', minWidth:80}
// ,{field: 'wechat_nickname', title: '微信昵称', minWidth:80}
// ,{field: 'wechat_account', title: '微信账号', minWidth:80}
// ,{field: 'ali_nickname', title: '支付宝昵称', minWidth:80}
// ,{field: 'ali_account', title: '支付宝账号', minWidth:80}
// ,{field: 'bank_name', title: '银行名称', minWidth:80}
// ,{field:'is_display', title:'是否显示', minWidth:85, templet: '#switchTpl', unresize: true}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听热卖操作
form.on('switch(sexDemo)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/currency_display')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/bank/del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑币种','{{url('admin/bank/add')}}?id='+data.id);
} else if(obj.event === 'detail'){
layer_show('调节账户','{{url('admin/adjust_account')}}?id='+data.id,800,600);
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
+509
View File
@@ -0,0 +1,509 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
.layui-fluid .layui-table-cell {
line-height: 20px;
padding: 5px 5px ;
position: relative;
box-sizing: border-box;
text-align: center;
overflow: visible;
height:auto;
overflow:visible;
text-overflow:inherit;
white-space:normal;
}
.reddot {
position: absolute;
right:5%;
color: red;
}
.layui-textarea{
height: 80px;
min-height: 80px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
@if(!empty($currency))
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>交易币种</label>
<div class="layui-input-block">
<select name='currency'>
@foreach($currency as $key => $value)
<option class='layui-option' value="{{$value['id']}}" >{{$value['name']}}</option>
@endforeach
</select>
</div>
</div>
@endif
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>交易类型</label>
<div class="layui-input-block" >
<select name='pay_type' id="select_type" lay-filter="select_type">
<option value='1' class='layui-option'>一口价</option>
<option value='2' class='layui-option'>竞拍</option>
<option value='3' class='layui-option'>盲盒</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>稀有度</label>
<div class="layui-input-block">
<select name='rarity' id="rarity" lay-filter="rarity">
<option value='N' class='layui-option'>N</option>
<option value='R' class='layui-option'>R</option>
<option value='SR' class='layui-option'>SR</option>
</select>
</div>
</div>
<!--<div class="layui-form-item" id="bind_select">-->
<!-- <label class="layui-form-label"><span class="reddot">*</span>该稀有度对应的盲盒</label>-->
<!-- <div class="layui-input-block">-->
<!-- <select name=''>-->
<!-- <option value=''>请选择</option>-->
<!-- </select>-->
<!-- </div>-->
<!--</div>-->
<div class="layui-form-item" id="bind_select">
<label class="layui-form-label"><span class="reddot">*</span>该稀有度对应的盲盒</label>
<div class="layui-input-block">
<select name='rarity_house_id' id="bind_select_val">
<!--<option value=''>请选择</option>-->
<!--<option class='layui-option' value="" ></option>-->
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>价格</label>
<div class="layui-input-block">
<input type="text" name="price" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item" id="auction" lay-filter="auction">
<label class="layui-form-label"><span class="reddot">*</span>竞拍每次加价</label>
<div class="layui-input-block">
<input type="text" id="auction_val" name="per_increase" autocomplete="off" placeholder="" class="layui-input" value="">
</div>
</div>
<div class="layui-form-item" id="margin_price" lay-filter="auction">
<label class="layui-form-label"><span class="reddot">*</span>保证金</label>
<div class="layui-input-block">
<input type="text" id="margin_price_val" name="margin" autocomplete="off" placeholder="" class="layui-input" value="">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>作者ID</label>
<div class="layui-input-block">
<input type="text" name="author" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>文件类型</label>
<div class="layui-input-block">
<select name='type'>
<option value='1' class='layui-option'>图片</option>
<option value='4' class='layui-option'>视频</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>文件上传</label>
<div class="layui-upload" style="border:1px solid #e6e6e6;border-radius:4px;padding:10px 0;margin-top:10px;margin-left:120px;">
<button type="button" class="layui-btn layui-btn-normal" id="cfile" style="margin-left:30px">选择文件</button> <br/>
<div><img src="" id="imageupload_img" style="display: none;cursor:pointer;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigImage(this)" /></div>
<div><video src="" id="imageupload_video" style="display: none;cursor:pointer;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigVideo(this)" /></div>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr>
<th>文件名</th>
<th>大小</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<input name="image" type="hidden" id="imageupload_val" value="" lay-verify="required">
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="uploadBegin" style="margin-left:30px">开始上传</button>
</div>
</div>
<!-- <div class="layui-form-item layui-form-text">-->
<!-- <label class="layui-form-label">文件上传</label>-->
<!-- <div class="layui-input-block">-->
<!-- <button class="layui-btn" type="button" id="upload_bindbox">选择文件</button>-->
<!-- <br>-->
<!-- <img src="@if(!empty($news->bindbox_upload)){{$news->bindbox_upload}}@endif" id="upload_bindbox_upload" class="bindbox_upload" style="display: @if(!empty($news->bindbox_upload)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 5px;">-->
<!-- <input type="hidden" name="image" id="bindbox_upload" value="@if(!empty($news->bindbox_upload)){{$news->bindbox_upload}}@endif">-->
<!-- </div>-->
<!--</div>-->
<!--<div class="layui-form-item">-->
<!-- <label class="layui-form-label">数量</label>-->
<!-- <div class="layui-input-block">-->
<!-- <input type="text" name="text" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">-->
<!-- </div>-->
<!--</div>-->
<!--<div class="layui-form-item">-->
<!-- <label class="layui-form-label">是否显示</label>-->
<!-- <div class="layui-input-block">-->
<!-- <select name='type'>-->
<!-- <option value='1' class='layui-option'>可用</option>-->
<!-- <option value='0' class='layui-option'>不可用</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
<label class="layui-form-label"><span class="reddot">*</span>开始时间</label>
<div class="layui-inline">
<input class="layui-input test-laydate-item" name="start_time" placeholder="年 - 月 - 日 &nbsp; -- : -- : --" id="start_time" autocomplete="off" lay-verify="required">
</div>
<div class="layui-inline" style="width: 80px;text-align: right">结束时间</div>
<div class="layui-inline">
<input class="layui-input test-laydate-item" name="end_time" placeholder="年 - 月 - 日 &nbsp; -- : -- : --" id="end_time" autocomplete="off" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">关于艺术家</label>
<div class="layui-input-block">
<textarea type="text" name="author_description" autocomplete="off" placeholder="" class="layui-textarea" value="" rows="10" cols="100"></textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">资产详情</label>
<div class="layui-input-block">
<textarea type="text" name="description" autocomplete="off" placeholder="" class="layui-textarea" value="" rows="10" cols="100"></textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="bindBoxsubmit" lay-filter="bindBoxsubmit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
// 若选择拍卖显示加价和保证金
$("#auction").hide();
$("#margin_price").hide();
$("#bind_select").hide();
layui.use(['layer', 'jquery', 'form'], function () {
var layer = layui.layer,
$ = layui.jquery,
form = layui.form;
form.on('select(select_type)', function(data){
if(data.value == '1'){
$("#auction").hide();
$("#auction_val").val("");
$("#margin_price").hide();
$("#margin_price_val").val("");
$("#bind_select").hide();
$("#bind_select_val").val("");
form.render('select');
}if(data.value == '2'){
$("#auction").show();
$("#margin_price").show();
$("#bind_select").hide();
$("#bind_select_val").val("");
form.render('select');
}if(data.value == '3'){
getRarity_house(form);
$("#auction").hide();
$("#auction_val").val("");
$("#margin_price").hide();
$("#margin_price_val").val("");
$("#bind_select").show();
form.render('select');
form.on('select(rarity)', function(data){
getRarity_house(form);
});
}
});
});
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(bindBoxsubmit)', function(data){
var data = data.field;
delete data.file;
// data.start_time=data.start_time.replace("T"," ")
// data.end_time=data.end_time.replace("T"," ")
$.ajax({
url:'{{url('admin/bind_box/addNFT')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='ok'){
layer.msg('操作成功!');
}if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
layui.use(['element', 'form', 'upload', 'layer', 'laydate'], function () {
var element = layui.element
,layer = layui.layer
,form = layui.form
,laydate = layui.laydate
,$ = layui.$;
//同时绑定多个
lay('.test-laydate-item').each(function(){
laydate.render({
elem: this
,trigger: 'click'
,type: 'datetime'
});
});
});
// layui.use('upload', function(){
// var upload = layui.upload;
// //执行实例
// var uploadInst = upload.render({
// elem: '#upload_bindbox' //绑定元素
// ,url: '{{URL("api/uploadNFT")}}?scene=admin' //上传接口
// ,done: function(res){
// //上传完毕回调
// if (res.type == "ok"){
// $("#bindbox_upload").val(res.message)
// $("#upload_bindbox_upload").show()
// $("#upload_bindbox_upload").attr("src",res.message)
// } else{
// alert(res.message)
// }
// }
// ,error: function(){
// //请求异常回调
// }
// });
// });
//获取盲盒种类
function getRarity_house(form){
var val = $("#rarity option:selected").val()
$.ajax({
url:'{{url('/admin/bind_box/getRarityHouse')}}'
,type:'post'
,dataType:'json'
,data: { rarity: val}
,success:function(res){
var bind_select_val = document.getElementById('bind_select_val')
var str = ''
res.rarity_house.forEach(function(item) {
str += "<option class='layui-option' value=' " + item.id + "' >"+ '名称:' + item.name + "</option>"
})
bind_select_val.innerHTML = "<option value=''>请选择</option>" + str
console.log('vvvvv', bind_select_val, res.rarity_house)
form.render('select');
// const value = res.message.data[0]
// $("#rarity_house").val(value.price)
}
});
}
function showBigImage(e) {
parent.layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true,
area: [$(e).width + 'px', $(e).height + 'px'],
content: "<img style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
function showBigVideo(e) {
parent.layer.open({
type: 1,
title: '视频预览',
closeBtn: 0,
shadeClose: true,
offset: 'auto',
area: 'auto',
content: "<video controls='controls' style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
var imageUpload = $('#uploadBegin').val()
layui.use('upload', function() {
var $ = layui.jquery,
upload = layui.upload; //声明上传组件
//文件列表示例
var num = "";
var show = "";
var demoListView = $('#demoList'), //上传表格的详情
uploadListIns = upload.render({ //渲染
elem: '#cfile', //绑定选择文件按钮
url: '{{url('api/uploadNFT')}}',
accept: 'file', //允许上传文件类型
multiple: false, //是否允许多文件上传开关
auto: false, //是否自动上传,true就是选择完文件之后自动上传
bindAction: '#uploadBegin', //绑定开始上传按钮,如果自动上传则不需要这个按钮
choose: function(obj) {
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result) {
var tr = $(['<tr id="upload-' + index + '">', '<td id="filename">' + file
.name + '</td>', '<td>' + (file.size / 1014).toFixed(1) +
'kb</td>', '<td>等待上传</td>', '<td>',
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
'</td>', '</tr>'
].join(''));
//删除
tr.find('.demo-delete').on('click', function() {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value =
''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
var filenum = $("tr").length;
if(filenum >= 2){
$("tr").first().remove()
}
});
},
before: function() { //这里暂时规定一次只能上传一个文件
var filenum = $("tr").length;
console.log(123123,filenum)
var file = $("#filename").text();
var ext = file.slice(file.lastIndexOf(".") + 1).toLowerCase();
if (filenum > 2) {
layer.msg("一次只能上传一个文件");
return false;
}
if (file == null || file == "") {
layer.msg("请选择文件");
return false;
}
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
},
done: function(res, index, upload) {
var loading = parent.layer.load(1, {
shade: 0.2,
time: 500
});
if (res.type == 'ok') { //上传成功
let imageUpload = res.message;
// console.log(1111111,imageUpload)
var reg = /\.(png|PNG|jpg|JPG|gif|GIF|jpeg|JPEG|webp|WEBP)$/;
var isImgVideo = reg.test(imageUpload);
if(isImgVideo){
$('#imageupload_val').val(imageUpload)
$("#imageupload_video").hide();
$("#imageupload_img").show();
$("#imageupload_img").attr("src",res.message)
}else{
$('#imageupload_val').val(imageUpload)
$("#imageupload_img").hide();
$("#imageupload_video").show();
$("#imageupload_video").attr("src",res.message)
}
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
return delete this.files[index]; //删除文件队列已经上传成功的文件
}
this.error(index, upload, res);
layer.close(loading);
},
error: function(index, upload, res) {
layer.msg(res.message);
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败:' + res.msg + '</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
//这里在点击上传是添加了一个文件类型的判断
// $(window).one("resize",function(){
// $(".import").click(function(){//上传按钮
// var file=document.getElementById("teacherFile").value;
// var ext = file.slice(file.lastIndexOf(".")+1).toLowerCase();
// if(file==null || file ==""){
// layer.msg("请选择文件");
// }
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
// else {
// layer.msg("选择文件规范");
// }
// })
// }).resize();
})
</script>
@endsection
@@ -0,0 +1,265 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
.layui-fluid .layui-table-cell {
line-height: 20px;
padding: 5px 5px ;
position: relative;
box-sizing: border-box;
text-align: center;
overflow: visible;
height:auto;
overflow:visible;
text-overflow:inherit;
white-space:normal;
}
.reddot {
position: absolute;
right:5%;
color: red;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>稀有度</label>
<div class="layui-input-block">
<select name='rarity' id="rarity" lay-filter="rarity">
<option value='N' class='layui-option'>N</option>
<option value='R' class='layui-option'>R</option>
<option value='SR' class='layui-option'>SR</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="reddot">*</span>文件上传</label>
<div class="layui-upload" style="border:1px solid #e6e6e6;border-radius:4px;padding:10px 0;margin-top:10px;margin-left:120px;">
<button type="button" class="layui-btn layui-btn-normal" id="cfile" style="margin-left:30px">选择文件</button> <br/>
<div><img src="" id="imageupload_img" style="display: none;cursor:pointer;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigImage(this)" /></div>
<div><video src="" id="imageupload_video" style="display: none;cursor:pointer;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigVideo(this)" /></div>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr>
<th>文件名</th>
<th>大小</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<input name="file" type="hidden" id="imageupload_val" value="" lay-verify="required">
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="uploadBegin" style="margin-left:30px">开始上传</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="bindBoxsubmit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(bindBoxsubmit)', function(data){
var data = data.field;
// data.start_time=data.start_time.replace("T"," ")
// data.end_time=data.end_time.replace("T"," ")
$.ajax({
url:'{{url('admin/bind_box/add_rarity_house')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='ok'){
layer.msg('操作成功!');
}if(res.type=='error'){
layer.msg(res.message);
}else{
layer.msg(res.message);
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
function showBigImage(e) {
parent.layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true,
area: [$(e).width + 'px', $(e).height + 'px'], //宽高
content: "<img style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
function showBigVideo(e) {
parent.layer.open({
type: 1,
title: '视频预览',
closeBtn: 0,
shadeClose: true,
offset: 'auto',
area: 'auto',
content: "<video controls='controls' style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
var imageUpload = $('#uploadBegin').val()
layui.use('upload', function() {
var $ = layui.jquery,
upload = layui.upload; //声明上传组件
//文件列表示例
var num = "";
var show = "";
var demoListView = $('#demoList'), //上传表格的详情
uploadListIns = upload.render({ //渲染
elem: '#cfile', //绑定选择文件按钮
url: '{{url('api/uploadNFT')}}',
accept: 'file', //允许上传文件类型
multiple: false, //是否允许多文件上传开关
auto: false, //是否自动上传,true就是选择完文件之后自动上传
bindAction: '#uploadBegin', //绑定开始上传按钮,如果自动上传则不需要这个按钮
choose: function(obj) {
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result) {
var tr = $(['<tr id="upload-' + index + '">', '<td id="filename">' + file
.name + '</td>', '<td>' + (file.size / 1014).toFixed(1) +
'kb</td>', '<td>等待上传</td>', '<td>',
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
'</td>', '</tr>'
].join(''));
//删除
tr.find('.demo-delete').on('click', function() {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value =
''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
var filenum = $("tr").length;
if(filenum >= 2){
$("tr").first().remove()
}
});
},
before: function() { //这里暂时规定一次只能上传一个文件
var filenum = $("tr").length;
var file = $("#filename").text();
var ext = file.slice(file.lastIndexOf(".") + 1).toLowerCase();
if (filenum > 2) {
layer.msg("一次只能上传一个文件");
return false;
}
if (file == null || file == "") {
layer.msg("请选择文件");
return false;
}
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
},
done: function(res, index, upload) {
var loading = parent.layer.load(1, {
shade: 0.2,
time: 500
});
if (res.type == 'ok') { //上传成功
let imageUpload = res.message;
// console.log(1111111,imageUpload)
var reg = /\.(png|PNG|jpg|JPG|gif|GIF|jpeg|JPEG|webp|WEBP)$/;
var isImgVideo = reg.test(imageUpload);
if(isImgVideo){
$('#imageupload_val').val(imageUpload)
$("#imageupload_video").hide();
$("#imageupload_img").show();
$("#imageupload_img").attr("src",res.message)
}else{
$('#imageupload_val').val(imageUpload)
$("#imageupload_img").hide();
$("#imageupload_video").show();
$("#imageupload_video").attr("src",res.message)
}
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
return delete this.files[index]; //删除文件队列已经上传成功的文件
}
this.error(index, upload, res);
layer.close(loading);
},
error: function(index, upload, res) {
layer.msg(res.message);
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败:' + res.msg + '</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
//这里在点击上传是添加了一个文件类型的判断
// $(window).one("resize",function(){
// $(".import").click(function(){//上传按钮
// var file=document.getElementById("teacherFile").value;
// var ext = file.slice(file.lastIndexOf(".")+1).toLowerCase();
// if(file==null || file ==""){
// layer.msg("请选择文件");
// }
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
// else {
// layer.msg("选择文件规范");
// }
// })
// }).resize();
})
</script>
@endsection
@@ -0,0 +1,341 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">哈希值</label>
<div class="layui-input-block">
<input type="text" name="code" autocomplete="off" style="color:#d2d2d2;" placeholder="" class="layui-input" value="{{$results->code}}" lay-verify="required" disabled="disabled">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">交易币种</label>
<div class="layui-input-block">
<input type="text" name="price" autocomplete="off" style="color:#d2d2d2;" placeholder="" class="layui-input" value="{{$results->currency_name}}" lay-verify="required" disabled="disabled">
</div>
</div>
<!--<div class="layui-form-item">-->
<!-- <label class="layui-form-label">名称</label>-->
<!-- <div class="layui-input-block">-->
<!-- <input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="">-->
<!-- </div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">交易类型</label>
<div class="layui-input-block" >
<select lay-filter="select_type" id="select_type" lay-verify="required" disabled="disabled">
<option value="1" class='layui-option' {{ ($results->pay_type) == 1 ? 'selected' : '' }} >一口价</option>
<option value="2" class='layui-option' {{ ($results->pay_type) == 2 ? 'selected' : '' }} >竞拍</option>
<option value="3" class='layui-option' {{ ($results->pay_type) == 3 ? 'selected' : '' }} >盲盒</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价格</label>
<div class="layui-input-block">
<input type="text" name="price" autocomplete="off" placeholder="" class="layui-input" value="{{$results->price}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item" id="auction" lay-filter="auction">
<label class="layui-form-label">竞拍每次加价</label>
<div class="layui-input-block">
<input type="text" name="per_increase" autocomplete="off" placeholder="" class="layui-input" value="{{$results->per_increase}}" lay-verify="required">
</div>
</div>
<!--<div class="layui-form-item" id="auction" lay-filter="auction">-->
<!-- <label class="layui-form-label">保证金</label>-->
<!-- <div class="layui-input-block">-->
<!-- <input type="text" name="margin" autocomplete="off" placeholder="" class="layui-input" value="{{$results->margin}}" lay-verify="required">-->
<!-- </div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">稀有度</label>
<div class="layui-input-block">
<select name='rarity'>
<option value="N" {{ ($results->rarity) == 'N' ? 'selected' : '' }} >N</option>
<option value="R" {{ ($results->rarity) == 'R' ? 'selected' : '' }} >R</option>
<option value="SR" {{ ($results->rarity) == 'SR' ? 'selected' : '' }} >SR</option>
</select>
</div>
</div>
<!--<div class="layui-form-item">-->
<!-- <div class="layui-input-block" style="min-height:0">-->
<!-- <span class="" style="padding:5px 10px;background-color:#ffb800;border-radius:3px;color:#FFF">请严格按照时间格式编辑!</span>-->
<!-- </div>-->
<!--</div>-->
<!-- <div class="layui-form-item">-->
<!-- <label class="layui-form-label">文件上传</label>-->
<!-- <div class="layui-upload" style="border:1px solid #e6e6e6;border-radius:4px;padding:10px 0;margin-top:10px;margin-left:120px;"> -->
<!-- <button type="button" class="layui-btn layui-btn-normal" id="cfile" style="margin-left:30px">选择文件</button> -->
<!-- <br/><img src="@if(!empty($results->image)){{$results->image}}@endif" id="imageupload_img" class="imageupload" style="display: @if(!empty($results->image)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;">-->
<!-- <div class="layui-upload-list">-->
<!-- <table class="layui-table">-->
<!-- <thead>-->
<!-- <tr>-->
<!-- <th>文件名</th>-->
<!-- <th>大小</th>-->
<!-- <th>状态</th>-->
<!-- <th>操作</th>-->
<!-- </tr> -->
<!-- </thead>-->
<!-- <input name="image" type="hidden" class="imageupload" value="{{$results->image}}" lay-verify="required">-->
<!-- <tbody id="demoList"></tbody> -->
<!-- </table>-->
<!-- </div>-->
<!-- <button type="button" class="layui-btn" id="uploadBegin" style="margin-left:30px">开始上传</button>-->
<!--<a type="button" class="layui-btn layui-btn-danger" href="../../teacher/download" style="margin-left:30px">模板下载</a>-->
<!--<div class="layui-upload-list" style="height:25px;"></div>-->
<!-- </div> -->
<!--</div>-->
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
<label class="layui-form-label">开始时间:</label>
<div class="layui-inline">
<input class="layui-input test-laydate-item" name="start_time" value="{{$results->start_time}}" id="start_time" autocomplete="off">
</div>
<div class="layui-inline" style="width: 80px;text-align: right">结束时间:</div>
<div class="layui-inline">
<input class="layui-input test-laydate-item" name="end_time" value="{{$results->end_time}}" id="end_time" autocomplete="off">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="bindBoxsubmit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
// 若选择拍卖显示加价
var select_val = $('#select_type').val()
if(select_val == '1'){
$("#auction").hide();
}if(select_val == '2'){
$("#auction").show();
}if(select_val == '3'){
$("#auction").hide();
}
// layui.use(['layer', 'jquery', 'form'], function () {
// var layer = layui.layer,
// $ = layui.jquery,
// form = layui.form;
// form.on('select(select_type)', function(data){
// if(data.value == '1'){
// $("#auction").hide();
// form.render('select');
// }if(data.value == '2'){
// $("#auction").show();
// form.render('select');
// }if(data.value == '3'){
// $("#auction").hide();
// form.render('select');
// }
// });
// });
layui.use(['element', 'form', 'upload', 'layer', 'laydate'], function () {
var element = layui.element
,layer = layui.layer
,form = layui.form
,laydate = layui.laydate
,$ = layui.$;
//同时绑定多个
lay('.test-laydate-item').each(function(){
laydate.render({
elem: this
,trigger: 'click'
,type: 'datetime'
});
});
});
layui.use(['form','laydate'],function() {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
form.render();
//监听提交
form.on('submit(bindBoxsubmit)', function(data){
var data = data.field;
delete data.file;
// data.start_time=data.start_time.replace("T"," ")
// data.end_time=data.end_time.replace("T"," ")
$.ajax({
url:'{{url('admin/bind_box/editNFT')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='ok'){
layer.msg('操作成功!');
parent.layer.close(index);
parent.window.location.reload();
}if(res.type=='error'){
layer.msg('操作失败'+res.message);
}else{
layer.msg('操作失败'+res.message);
}
}
});
return false;
});
});
// layui.use('upload', function(){
// var upload = layui.upload;
// //执行实例
// var uploadInst = upload.render({
// elem: '#upload_bindbox' //绑定元素
// ,url: '{{URL("api/uploadNFT")}}?scene=admin' //上传接口
// ,done: function(res){
// //上传完毕回调
// if (res.type == "ok"){
// $("#bindbox_upload").val(res.message)
// $("#upload_bindbox_upload").show()
// $("#upload_bindbox_upload").attr("src",res.message)
// } else{
// alert(res.message)
// }
// }
// ,error: function(){
// //请求异常回调
// }
// });
// });
// var imageUpload = $('.imageupload').val()
// layui.use('upload', function() {
// var $ = layui.jquery,
// upload = layui.upload; //声明上传组件
// //文件列表示例
// var num = "";
// var show = "";
// var demoListView = $('#demoList'), //上传表格的详情
// uploadListIns = upload.render({ //渲染
// elem: '#cfile', //绑定选择文件按钮
// url: '{{url('api/uploadNFT')}}',
// accept: 'file', //允许上传文件类型
// multiple: false, //是否允许多文件上传开关
// auto: false, //是否自动上传,true就是选择完文件之后自动上传
// bindAction: '#uploadBegin', //绑定开始上传按钮,如果自动上传则不需要这个按钮
// choose: function(obj) {
// var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
// //读取本地文件
// obj.preview(function(index, file, result) {
// var tr = $(['<tr id="upload-' + index + '">', '<td id="filename">' + file
// .name + '</td>', '<td>' + (file.size / 1014).toFixed(1) +
// 'kb</td>', '<td>等待上传</td>', '<td>',
// '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
// '</td>', '</tr>'
// ].join(''));
// //删除
// tr.find('.demo-delete').on('click', function() {
// delete files[index]; //删除对应的文件
// tr.remove();
// uploadListIns.config.elem.next()[0].value =
// ''; //清空 input file 值,以免删除后出现同名文件不可选
// });
// demoListView.append(tr);
// });
// },
// before: function() { //这里暂时规定一次只能上传一个文件
// var filenum = $("tr").length;
// var file = $("#filename").text();
// var ext = file.slice(file.lastIndexOf(".") + 1).toLowerCase();
// if (filenum > 2) {
// layer.msg("一次只能上传一个文件");
// return false;
// }
// if (file == null || file == "") {
// layer.msg("请选择文件");
// return false;
// }
// // else if (("xls" != ext)&&("xlsx" != ext) ) {
// // console.log(1211221)
// // layer.msg("所选择文件不规范");
// // return false;
// // }
// },
// done: function(res, index, upload) {
// show = layer.msg('上传中,请稍候', {
// icon: 16,
// time: true,
// shade: 0.8
// });
// if (res.type == 'ok') { //上传成功
// let imageUpload = res.message;
// $('.imageupload').val(imageUpload)
// $("#imageupload_img").show()
// $("#imageupload_img").attr("src",res.message)
// var tr = demoListView.find('tr#upload-' + index),
// tds = tr.children();
// tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
// tds.eq(3).html(''); //清空操作
// return delete this.files[index]; //删除文件队列已经上传成功的文件
// }
// this.error(index, upload, res);
// layer.close(show);
// },
// error: function(index, upload, res) {
// layer.msg(res.message);
// var tr = demoListView.find('tr#upload-' + index),
// tds = tr.children();
// tds.eq(2).html('<span style="color: #FF5722;">上传失败:' + res.msg + '</span>');
// tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
// }
// });
// //这里在点击上传是添加了一个文件类型的判断
// // $(window).one("resize",function(){
// // $(".import").click(function(){//上传按钮
// // var file=document.getElementById("teacherFile").value;
// // var ext = file.slice(file.lastIndexOf(".")+1).toLowerCase();
// // if(file==null || file ==""){
// // layer.msg("请选择文件");
// // }
// // else if (("xls" != ext)&&("xlsx" != ext) ) {
// // console.log(1211221)
// // layer.msg("所选择文件不规范");
// // return false;
// // }
// // else {
// // layer.msg("选择文件规范");
// // }
// // })
// // }).resize();
// })
</script>
@endsection
@@ -0,0 +1,264 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width:90px;
}
.layui-input-block {
margin-left: 120px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">名称</label>
<div class="layui-input-block">
<input type="text" name="name" autocomplete="off" placeholder="" class="layui-input" value="{{$results->name}}" lay-verify="required">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">稀有度</label>
<div class="layui-input-block">
<select name='rarity'>
<option value="N" {{ ($results->rarity) == 'N' ? 'selected' : '' }} >N</option>
<option value="R" {{ ($results->rarity) == 'R' ? 'selected' : '' }} >R</option>
<option value="SR" {{ ($results->rarity) == 'SR' ? 'selected' : '' }} >SR</option>
</select>
</div>
</div>
<!--<div class="layui-form-item">-->
<!-- <div class="layui-input-block" style="min-height:0">-->
<!-- <span class="" style="padding:5px 10px;background-color:#ffb800;border-radius:3px;color:#FFF">文件若无修改请勿上传!</span>-->
<!-- </div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">文件上传</label>
<div class="layui-upload" style="border:1px solid #e6e6e6;border-radius:4px;padding:10px 0;margin-top:10px;margin-left:120px;">
<button type="button" class="layui-btn layui-btn-normal" id="cfile" style="margin-left:30px">选择文件</button> <br/>
<div><img src="@if(!empty($results->file)){{$results->file}}@endif" id="imageupload_img" style="cursor:pointer;display: @if(!empty($results->file)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigImage(this)" /></div>
<div><video src="@if(!empty($results->file)){{$results->file}}@endif" id="imageupload_video" style="cursor:pointer;display: none;max-width: 200px;height: auto;margin-top: 10px;margin-left:30px;" onclick="showBigVideo(this)" /></div>
<div class="layui-upload-list">
<table class="layui-table">
<thead>
<tr>
<th>文件名</th>
<th>大小</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<input name="file" type="hidden" id="imageupload_val" value="{{$results->file}}" lay-verify="required">
<tbody id="demoList"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="uploadBegin" style="margin-left:30px">开始上传</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="bindBoxsubmit" lay-filter="bindBoxsubmit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function() {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
form.render();
//监听提交
form.on('submit(bindBoxsubmit)', function(data){
var data = data.field;
// delete data.file;
// data.start_time=data.start_time.replace("T"," ")
// data.end_time=data.end_time.replace("T"," ")
$.ajax({
url:'{{url('admin/bind_box/edit_rarity_house')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='ok'){
layer.msg('操作成功!');
}if(res.type=='error'){
layer.msg(res.message);
}else{
layer.msg(res.message);
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
function showBigImage(e) {
parent.layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true,
area: [$(e).width + 'px', $(e).height + 'px'], //宽高
content: "<img style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
function showBigVideo(e) {
parent.layer.open({
type: 1,
title: '视频预览',
closeBtn: 0,
shadeClose: true,
offset: 'auto',
area: 'auto',
content: "<video controls='controls' style='padding:12px;max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
var imageUpload = $('#imageupload_val').val()
layui.use('upload', function() {
var $ = layui.jquery,
upload = layui.upload; //声明上传组件
var reg = /\.(png|PNG|jpg|JPG|gif|GIF|jpeg|JPEG|webp|WEBP)$/;
var isImgVideo = reg.test(imageUpload);
console.log(213231213231,isImgVideo)
if(isImgVideo){
$('#imageupload_val').val(imageUpload)
$("#imageupload_video").hide();
$("#imageupload_img").show();
}else{
$('#imageupload_val').val(imageUpload)
$("#imageupload_img").hide();
$("#imageupload_video").show();
}
//文件列表示例
var num = "";
var show = "";
var demoListView = $('#demoList'), //上传表格的详情
uploadListIns = upload.render({ //渲染
elem: '#cfile', //绑定选择文件按钮
url: '{{url('api/uploadNFT')}}',
accept: 'file', //允许上传文件类型
multiple: false, //是否允许多文件上传开关
auto: false, //是否自动上传,true就是选择完文件之后自动上传
bindAction: '#uploadBegin', //绑定开始上传按钮,如果自动上传则不需要这个按钮
choose: function(obj) {
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function(index, file, result) {
var tr = $(['<tr id="upload-' + index + '">', '<td id="filename">' + file
.name + '</td>', '<td>' + (file.size / 1014).toFixed(1) +
'kb</td>', '<td>等待上传</td>', '<td>',
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
'</td>', '</tr>'
].join(''));
//删除
tr.find('.demo-delete').on('click', function() {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value =
''; //清空 input file 值,以免删除后出现同名文件不可选
});
demoListView.append(tr);
});
},
before: function() { //这里暂时规定一次只能上传一个文件
var filenum = $("tr").length;
var file = $("#filename").text();
var ext = file.slice(file.lastIndexOf(".") + 1).toLowerCase();
if (filenum > 2) {
layer.msg("一次只能上传一个文件");
return false;
}
if (file == null || file == "") {
layer.msg("请选择文件");
return false;
}
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
},
done: function(res, index, upload) {
var loading = parent.layer.load(1, {
shade: 0.2,
time: 500
});
if (res.type == 'ok') { //上传成功
let imageUpload = res.message;
// console.log(1111111,imageUpload)
if(isImgVideo){
$('#imageupload_val').val(imageUpload)
$("#imageupload_video").hide();
$("#imageupload_img").show();
$("#imageupload_img").attr("src",res.message)
}else{
$('#imageupload_val').val(imageUpload)
$("#imageupload_img").hide();
$("#imageupload_video").show();
$("#imageupload_video").attr("src",res.message)
}
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
tds.eq(3).html(''); //清空操作
return delete this.files[index]; //删除文件队列已经上传成功的文件
}
this.error(index, upload, res);
layer.close(loading);
},
error: function(index, upload, res) {
layer.msg(res.message);
var tr = demoListView.find('tr#upload-' + index),
tds = tr.children();
tds.eq(2).html('<span style="color: #FF5722;">上传失败:' + res.msg + '</span>');
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
});
//这里在点击上传是添加了一个文件类型的判断
// $(window).one("resize",function(){
// $(".import").click(function(){//上传按钮
// var file=document.getElementById("teacherFile").value;
// var ext = file.slice(file.lastIndexOf(".")+1).toLowerCase();
// if(file==null || file ==""){
// layer.msg("请选择文件");
// }
// else if (("xls" != ext)&&("xlsx" != ext) ) {
// console.log(1211221)
// layer.msg("所选择文件不规范");
// return false;
// }
// else {
// layer.msg("选择文件规范");
// }
// })
// }).resize();
})
</script>
@endsection
@@ -0,0 +1,332 @@
@extends('admin._layoutNew')
@section('page-head')
<style type="text/css">
.layui-table-cell{
height: auto;
white-space: normal;
/*overflow:visible;*/
/* text-overflow:inherit;*/
}
.layui-table img{
/*max-width:100px*/
}
</style>
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加NFT','{{url('admin/bind_box/add')}}')">添加NFT</button>
<button class="layui-btn layui-btn-danger layui-btn-radius " lay-event="datadel" id="datadel"><i class="layui-icon layui-icon-delete" style="font-size:20px;"></i> 批量删除</button>
<div class="layui-form" style="margin-top:10px;">
<div class="layui-inline">
<label class="layui-form-label">哈希值</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="code" type="text" value="" placeholder="请输入哈希值">
</div>
</div>
<!--@if(!empty($currency))-->
<!--<div class="layui-inline">-->
<!-- <label class="layui-form-label"><span class="reddot">*</span>交易币种</label>-->
<!-- <div class="layui-input-inline">-->
<!-- <select name='currency'>-->
<!-- @foreach($currency as $key => $value)-->
<!-- <option class='layui-option' value="{{$value['id']}}" >{{$value['name']}}</option>-->
<!-- @endforeach-->
<!-- </select>-->
<!-- </div>-->
<!--</div>-->
<!--@endif-->
<div class="layui-inline">
<label class="layui-form-label">交易类型</label>
<div class="layui-input-inline" style="width:90px;">
<select name="pay_type">
<option value="">全部</option>
<option value="1">一口价</option>
<option value="2">竞拍</option>
<option value="3">盲盒</option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="name" type="text" value="" placeholder="请输入名称">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">作者ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="author" type="text" value="" placeholder="请输入作者ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">稀有度</label>
<div class="layui-input-inline" style="width:90px;">
<select name="rarity">
<option value="">全部</option>
<option value="N" style="color:lightgray">N</option>
<option value="R" style="color:lightblue">R</option>
<option value="SR" style="color:purple">SR</option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="bindSearch" lay-filter="bindSearch">查询</button>
</div>
</div>
<table id="bindlist" lay-filter="bindlist"></table>
<script type="text/html" id="barBind">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
</script>
<!--<script type="text/html" id="bindTpl">-->
<!-- <input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.status == 1 ? 'checked' : '' }}>-->
<!--</script>-->
</div>
@endsection
@section('scripts')
<script type="text/html" id="bindType">
@{{d.type==1 ? '<span class="">'+'图片'+'</span>' : '' }}
@{{d.type==4 ? '<span class="">'+'视频'+'</span>' : '' }}
</script>
<script type="text/html" id="bindTpl">
@{{d.status==0 ? '<span class="">'+'已结束'+'</span>' : '' }}
@{{d.status==1 ? '<span class="">'+'开始'+'</span>' : '' }}
@{{d.status==2 ? '<span class="">'+'未开始'+'</span>' : '' }}
</script>
<!--<script type="text/html" id="bindHash">-->
<!--</script>-->
<!--<script type="text/html" id="logo">-->
<!-- <img width="40px" src="@{{d.image}}" onmouseover="layer.tips('<div style=\'background-color: #fff;\'><img style=\'width:300px;text-align:center;\' src=@{{d.image}}></div>',this,{tips: [1, '#fff'],area:['350px', 'auto'],time: 100000});" onmouseout="layer.closeAll();">-->
<!--</script>-->
<script type="text/html" id="bindTransaction">
@{{d.pay_type==1 ? '<span class="">'+'一口价'+'</span>' : '' }}
@{{d.pay_type==2 ? '<span class="">'+'竞拍'+'</span>' : '' }}
@{{d.pay_type==3 ? '<span class="">'+'盲盒'+'</span>' : '' }}
</script>
<script type="text/html" id="bindRarity">
@{{d.rarity=="N" ? "<span style='color:gray;font-weight:bold'>"+"N"+"</span>" : "" }}
@{{d.rarity=="R" ? "<span style='color:lightblue;font-weight:bold'>"+"R"+"</span>" : "" }}
@{{d.rarity=="SR" ? "<span style='color:purple;font-weight:bold'>"+"SR"+"</span>" : "" }}
</script>
<script type="text/html" id="bindFiles">
@{{(/\.(png|jpg|gif|jpeg|webp)$/).test(d.image) == true ? '<img src="'+d.image+'" alt="'+d.image+'" style="width:60px;cursor:pointer" onclick="showBigImage(this)">' : '<video src="'+d.image+'" alt="'+d.name+'" style="width:60px;cursor:pointer" onclick="showBigVideo(this)">' }}
</script>
<script type="text/javascript">
//显示大图片
function showBigImage(e) {
parent.layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true, //点击阴影关闭
area: [$(e).width + 'px', $(e).height + 'px'], //宽高
content: "<img style='max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
function showBigVideo(e) {
parent.layer.open({
type: 1,
title: $(e).attr('alt'),
closeBtn: 0,
shadeClose: true, //点击阴影关闭
offset: 'auto',
area: 'auto',
content: "<video controls='controls' style='max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
</script>
<script>
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element
,layer = layui.layer
,table = layui.table
,$ = layui.$
,form = layui.form
//第一个实例
var bindlist = table.render({
elem: '#bindlist'
,url: '{{url('admin/bind_box/list')}}' //数据接口
,page: true //开启分页
,limit: 20
,limits: [20, 50, 100, 200, 500, 1000]
,cols: [[ //表头
{field: 'check', type: 'checkbox', width: 40}
// ,{field: 'id', title: 'ID', width:70, sort: true}
,{field: 'code', title: '哈希值', minWidth:110}
,{field: 'currency_name', title: '交易币种', minWidth:85}
,{field: 'pay_type', title: '交易类型', minWidth:100, templet: '#bindTransaction'}
,{field: 'per_increase', title:'竞拍每次加价', minWidth:120,}
,{field: 'name', title: '名称', minWidth:110}
// ,{field: 'number', title: '数量', Width:30}
// ,{field: 'description', title: '资产详情', minWidth:80}
,{field: 'author', title: '作者ID', minWidth:80}
// ,{field: 'author_description', title: '关于艺术家', minWidth:80}
,{field: 'type', title: '文件类型', minWidth:85, templet: '#bindType'}
// ,{field: 'image', title: '文件内容', minWidth:80, templet:'<div><img src="@{{d.image}}" alt="" style="width:60px;cursor:pointer" onclick="showBigImage(this)"></div>'}
,{title: '封面图', minWidth:80, templet: "#bindFiles" }
,{field: 'rarity', title:'稀有度', minWidth:80, templet: '#bindRarity'}
,{field: 'price', title: '价格', minWidth:110, sort: true}
,{field: 'margin', title: '保证金', sort: true}
// ,{field: 'status', title:'状态', minWidth:85, templet: '#bindTpl'}
// ,{field: 'token_id', title:'唯一Token', minWidth:120}
,{field: 'created', title:'创建时间', minWidth:150}
// ,{field: 'start_time', title:'开始时间', minWidth:155 }
// ,{field: 'end_time', title:'失效时间', minWidth:155 }
// ,{field: 'start_time', title:'开始时间', minWidth:155, templet:function(data){
// return layui.util.toDateString(data.start_time*1000,"yyyy-MM-dd HH:mm:ss")
// }}
// ,{field: 'end_time', title:'失效时间', minWidth:155, templet:function(data){
// return layui.util.toDateString(data.start_time*1000,"yyyy-MM-dd HH:mm:ss")
// }}
,{title: '操作', minWidth:150, toolbar: '#barBind'}
]]
});
//监听热卖操作
// form.on('switch(sexDemo)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/currency_display')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
//监听提交
form.on('submit(bindSearch)', function (data) {
bindlist.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
//单个删除与编辑
table.on('tool(bindlist)', function(obj){
var data = obj.data;
var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
var tr = obj.tr; //获得当前行 tr 的DOM对象
if (layEvent === 'edit') {
var index = layer.open({
title: '编辑'
,type: 2
,content: '{{url('/admin/bind_box/edit')}}?id=' + data.id
,area: ['960px', '600px']
});
}
if(layEvent === 'del'){
layer.confirm('真的删除此行数据吗?删除后不可恢复!!!', function(index){
$.ajax({
type: 'POST'
,dataType: 'json'
,url: '/admin/bind_box/del'
,data:{'id':data.id}
,success: function (data) {
if(data.type=='ok'){
layer.msg('操作成功!');
window.location.reload()
}else if(data.type=='error'){
layer.msg(data.message);
}else{
layer.msg(data.message);
// parent.layer.close(index);
}
}
});
});
}
});
//批量删除
$("#datadel").on('click',function(){
//获取选中状态
var checkStatus = table.checkStatus('bindlist');
const ids = checkStatus.data.map(item => item.id)
//获取选中数量
if(ids.length == 0){
layer.msg('批量删除至少选中一项数据',function(){});
return false;
}
layer.confirm('真的要删除选中的项吗?删除后不可恢复!!!',function(index){
//layer.close(index);
$.ajax({
type:'post',
data:{id:ids},
url: '/admin/bind_box/del',
success:function(data){
if(data.type=='ok'){
layer.msg('操作成功!');
window.location.reload()
}else if(data.type=='error'){
layer.msg(data.message);
}else{
layer.msg(data.message);
// parent.layer.close(index);
// parent.location.reload();
}
},error:function(code){
layer.msg('操作失败!',data.message);
}
});
})
});
// //监听工具条
// table.on('tool(adminList)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
// var data = obj.data; //获得当前行数据
// var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
// var tr = obj.tr; //获得当前行 tr 的DOM对象
// if(layEvent === 'del'){ //删除
// layer.confirm('真的要删除吗?', function(index){
// //向服务端发送删除指令
// $.ajax({
// url:'/admin/manager/delete',
// type:'post',
// dataType:'json',
// data:{id:data.id},
// success:function(res){
// if(res.type=='ok'){
// obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
// layer.msg(res.message);
// layer.close(index);
// }else{
// layer.close(index);
// layer.alert(res.message);
// }
// }
// });
// });
// } else if(layEvent === 'edit'){ //编辑
// //do something
// layer_show('修改管理员', '/admin/manager/add?id=' + data.id);
// }
// });
});
</script>
@endsection
@@ -0,0 +1,159 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">哈希值</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="code" type="text" value="" placeholder="请输入哈希值">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">交易币种</label>
<div class="layui-input-inline" style="width: 150px">
<select name='currency_id'>
<option class='layui-option' value="" >请选择</option>
@foreach($currency as $key => $value)
<option class='layui-option' value="{{$value['id']}}" >{{$value['name']}}</option>
@endforeach
</select>
</div>
</div>
<!--<div class="layui-inline">-->
<!-- <label class="layui-form-label">交易类型</label>-->
<!-- <div class="layui-input-inline" style="width:90px;">-->
<!-- <select name="pay_type">-->
<!-- <option value="">全部</option>-->
<!-- <option value="1">一口价</option>-->
<!-- <option value="2">竞拍</option>-->
<!-- <option value="3">盲盒</option>-->
<!-- </select>-->
<!-- </div>-->
<!--</div>-->
<div class="layui-inline">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="name" type="text" value="" placeholder="请输入名称">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">买入者ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="buyer_id" type="text" value="" placeholder="请输入买入者ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">卖出者ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="sell_id" type="text" value="" placeholder="请输入卖出者ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">创作者ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="author_id" type="text" value="" placeholder="请输入创作者ID">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="bindOrderSearch" lay-filter="bindOrderSearch">查询</button>
</div>
</div>
<table id="bindOrderlist" lay-filter="bindOrderlist"></table>
<!--<script type="text/html" id="barBind">-->
<!-- <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
<!--</script>-->
<!--<script type="text/html" id="bindTpl">-->
<!-- <input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.status == 1 ? 'checked' : '' }}>-->
<!--</script>-->
</div>
@endsection
@section('scripts')
<script type="text/html" id="bindOrderStatus">
@{{d.status==1 ? '<span class="layui-badge layui-bg-green">'+'有效'+'</span>' : '' }}
@{{d.status==0 ? '<span class="layui-badge layui-bg-red">'+'无效'+'</span>' : '' }}
</script>
<script type="text/html" id="bindCode">
</script>
<script>
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element
,layer = layui.layer
,table = layui.table
,$ = layui.$
,form = layui.form
//第一个实例
var bindOrderlist = table.render({
elem: '#bindOrderlist'
,url: '{{url('admin/bind_box/orderList')}}' //数据接口
,page: true //开启分页
,limit: 20
,limits: [20, 50, 100, 200, 500, 1000]
,cols: [[ //表头
{field: 'id', title: '订单ID', minWidth:50, sort: true}
,{field: 'code', title: '哈希值', minWidth:350, templet:"bindCode"}
,{field: 'buyer_id', title: '买入者ID', minWidth:85}
,{field: 'sell_id', title: '卖出者ID', minWidth:100}
,{field: 'author_id', title: '创作者ID', minWidth:110}
,{field: 'status', title: '状态', minWidth:80, templet:"bindOrderStatus"}
,{field: 'order_price', title: '成交价', minWidth:110, sort: true}
,{field: 'currency_name', title:'交易币种', minWidth:80}
// ,{field: 'updated', title:'修改时间', minWidth:150}
,{field: 'created', title:'成交时间', minWidth:150}
// ,{title: '操作',fixed: 'right', Width:50, toolbar: '#barBind'}
]]
});
// //监听热卖操作
// form.on('switch(sexDemo)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/currency_display')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
// // 监听工具条
// table.on('tool(bindOrderlist)', function (obj) {
// var layEvent = obj.event
// ,data = obj.data
// if (layEvent === 'edit') {
// var index = layer.open({
// title: '编辑'
// ,type: 2
// ,content: '{{url('/admin/bind_box/edit')}}?id=' + data.id
// ,area: ['960px', '700px']
// });
// }
// });
//监听提交
form.on('submit(bindOrderSearch)', function (data) {
bindOrderlist.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,111 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">哈希值</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="code" type="text" value="" placeholder="请输入哈希值">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">交易币种</label>
<div class="layui-input-inline" style="width: 150px">
<select name='currency'>
<option class='layui-option' value="" >请选择</option>
@foreach($currency as $key => $value)
<option class='layui-option' value="{{$value['id']}}" >{{$value['name']}}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">买入者ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="buyer_id" type="text" value="" placeholder="请输入买入者ID">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="bindQuotationSearch" lay-filter="bindQuotationSearch">查询</button>
</div>
</div>
<table id="bindQuotationList" lay-filter="bindQuotationList"></table>
<!--<script type="text/html" id="barBind">-->
<!-- <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
<!--</script>-->
<!--<script type="text/html" id="bindTpl">-->
<!-- <input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.status == 1 ? 'checked' : '' }}>-->
<!--</script>-->
</div>
@endsection
@section('scripts')
<script type="text/html" id="bindOrderStatus">
@{{d.status==1 ? '<span class="layui-badge layui-bg-green">'+'有效'+'</span>' : '' }}
@{{d.status==0 ? '<span class="layui-badge layui-bg-red">'+'无效'+'</span>' : '' }}
</script>
<script type="text/html" id="bindCode">
</script>
<script>
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element
,layer = layui.layer
,table = layui.table
,$ = layui.$
,form = layui.form
//第一个实例
var bindQuotationList = table.render({
elem: '#bindQuotationList'
,url: '{{url('admin/bind_box/quotationList')}}' //数据接口
,page: true //开启分页
,limit: 20
,limits: [20, 50, 100, 200, 500, 1000]
,cols: [[ //表头
{field: 'id', title: '订单ID', minWidth:50, sort: true}
,{field: 'code', title: '哈希值', minWidth:350}
,{field: 'currency_name', title:'交易币种', minWidth:80}
,{field: 'buyer_id', title: '买入者ID', minWidth:85}
,{field: 'status', title: '状态', minWidth:80, templet:"#bindOrderStatus"}
,{field: 'price', title: '成交价', minWidth:110, sort: true}
,{field: 'created', title:'出价时间', minWidth:150}
// ,{title: '操作',fixed: 'right', Width:50, toolbar: '#barBind'}
]]
});
// // 监听工具条
// table.on('tool(bindQuotationList)', function (obj) {
// var layEvent = obj.event
// ,data = obj.data
// if (layEvent === 'edit') {
// var index = layer.open({
// title: '编辑'
// ,type: 2
// ,content: '{{url('/admin/bind_box/edit')}}?id=' + data.id
// ,area: ['960px', '700px']
// });
// }
// });
//监听提交
form.on('submit(bindQuotationSearch)', function (data) {
bindQuotationList.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,150 @@
@extends('admin._layoutNew')
@section('page-head')
<style type="text/css">
.layui-table-cell{
height: auto;
white-space: normal;
}
.layui-table img{
/*max-width:100px*/
}
</style>
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加盲盒','{{url('admin/bind_box/add_rarity_house_view')}}','960','500')">添加盲盒</button>
<div class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">名称</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="name" type="text" value="" placeholder="请输入名称">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">稀有度</label>
<div class="layui-input-inline" style="width:90px;">
<select name="rarity">
<option value="">全部</option>
<option value="N">N</option>
<option value="R">R</option>
<option value="SR">SR</option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="bindBoxSearch" lay-filter="bindBoxSearch">查询</button>
</div>
</div>
<table id="bindBoxlist" lay-filter="bindBoxlist"></table>
<!--<script type="text/html" id="bindTpl">-->
<!-- <input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.status == 1 ? 'checked' : '' }}>-->
<!--</script>-->
</div>
@endsection
@section('scripts')
<script type="text/html" id="bindBoxstatus">
@{{d.status==0 ? '<span class="">'+'未开启'+'</span>' : '' }}
@{{d.status==1 ? '<span class="">'+'已开启'+'</span>' : '' }}
</script>
<script type="text/html" id="barBindbox">
@{{d.status==0 ? '<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>' : '' }}
</script>
<script type="text/html" id="bindRarity">
@{{d.rarity=="N" ? "<span style='color:lightgray;font-weight:bold'>"+"N"+"</span>" : "" }}
@{{d.rarity=="R" ? "<span style='color:lightblue;font-weight:bold'>"+"R"+"</span>" : "" }}
@{{d.rarity=="SR" ? "<span style='color:purple;font-weight:bold'>"+"SR"+"</span>" : "" }}
</script>
<script type="text/html" id="bindRarity">
@{{d.rarity=="N" ? "<span style='color:lightgray;font-weight:bold'>"+"N"+"</span>" : "" }}
@{{d.rarity=="R" ? "<span style='color:lightblue;font-weight:bold'>"+"R"+"</span>" : "" }}
@{{d.rarity=="SR" ? "<span style='color:purple;font-weight:bold'>"+"SR"+"</span>" : "" }}
</script>
<script type="text/html" id="bindBoxfile">
@{{(/\.(png|PNG|jpg|JPG|gif|GIF|jpeg|JPEG|webp|WEBP)$/).test(d.file) == true ? '<img src="'+d.file+'" alt="" style="width:60px;cursor:pointer" onclick="showBigImage(this)">' : '<video src="'+d.file+'" alt="'+d.name+'" style="width:60px;cursor:pointer" onclick="showBigVideo(this)">' }}
</script>
<script type="text/javascript">
//显示大图片
function showBigImage(e) {
parent.layer.open({
type: 1,
title: false,
closeBtn: 0,
shadeClose: true, //点击阴影关闭
area: [$(e).width + 'px', $(e).height + 'px'], //宽高
content: "<img style='max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
function showBigVideo(e) {
parent.layer.open({
type: 1,
title: $(e).attr('alt'),
closeBtn: 0,
shadeClose: true, //点击阴影关闭
offset: 'auto',
area: 'auto',
content: "<video controls='controls' style='max-width:1400px;max-height:780px' src=" + $(e).attr('src') + " />"
});
}
</script>
<script>
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element
,layer = layui.layer
,table = layui.table
,$ = layui.$
,form = layui.form
//第一个实例
var bindBoxlist = table.render({
elem: '#bindBoxlist'
,url: '{{url('admin/bind_box/rarity_house_list')}}' //数据接口
,page: true //开启分页
,limit: 20
,limits: [20, 50, 100, 200, 500, 1000]
,cols: [[ //表头
{field: 'id', title: '盲盒ID', width:110, sort: true}
,{field: 'name', title: '名称', width:150}
,{field: 'file', title: '文件内容', width:150, templet:'#bindBoxfile'}
// ,{field: 'rarity', title: '稀有度', width:85, templet: '#bindRarity'}
,{field: 'status', title: '状态', width:85, templet:"#bindBoxstatus"}
,{field: 'created', title: '创建时间', width:180}
,{title: '操作',fixed: 'right', width:100, toolbar: '#barBindbox'}
]]
});
// 监听工具条
table.on('tool(bindBoxlist)', function (obj) {
var layEvent = obj.event
,data = obj.data
if (layEvent === 'edit') {
var index = layer.open({
title: '编辑'
,type: 2
,content: '{{url('/admin/bind_box/edit_rarity_house_view')}}?id=' + data.id
,area: ['960px', '700px']
});
}
});
//监听提交
form.on('submit(bindBoxSearch)', function (data) {
bindBoxlist.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,144 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">哈希值</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="code" type="text" value="" placeholder="请输入哈希值">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">用户ID</label>
<div class="layui-input-inline" style="width: 200px">
<input class="layui-input" name="user_id" type="text" value="" placeholder="请输入用户ID">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">支付情况</label>
<div class="layui-input-inline" style="width:90px;">
<select name="is_pay">
<option value="">全部</option>
<option value="1">已支付</option>
<option value="0">未支付</option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<div class="layui-input-inline" style="width: 60px;">
<button class="layui-btn" lay-submit="bindSuccessOrderSearch" lay-filter="bindSuccessOrderSearch">查询</button>
</div>
</div>
<table id="bindSuccessOrderlist" lay-filter="bindSuccessOrderlist"></table>
<!--<script type="text/html" id="barBind">-->
<!-- <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
<!--</script>-->
<!--<script type="text/html" id="bindTpl">-->
<!-- <input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.status == 1 ? 'checked' : '' }}>-->
<!--</script>-->
</div>
@endsection
@section('scripts')
<script type="text/html" id="bindSuccessOrderRead">
@{{d.is_read==1 ? '<span class="layui-badge layui-bg-green">'+'已读'+'</span>' : '' }}
@{{d.is_read==0 ? '<span class="layui-badge layui-bg-red">'+'未读'+'</span>' : '' }}
</script>
<script type="text/html" id="bindSuccessOrderPay">
@{{d.is_pay==1 ? '<span class="layui-badge layui-bg-green">'+'已支付'+'</span>' : '' }}
@{{d.is_pay==0 ? '<span class="layui-badge layui-bg-red">'+'未支付'+'</span>' : '' }}
</script>
<script type="text/html" id="bindSuccessOrderStatus">
@{{d.is_expired==1 ? '<span class="layui-badge layui-bg-green">'+'有效'+'</span>' : '' }}
@{{d.is_expired==0 ? '<span class="layui-badge layui-bg-red">'+'无效'+'</span>' : '' }}
</script>
<script type="text/html" id="bindCode">
</script>
<script>
layui.use(['element', 'form', 'layer', 'table'], function () {
var element = layui.element
,layer = layui.layer
,table = layui.table
,$ = layui.$
,form = layui.form
//第一个实例
var bindSuccessOrderlist = table.render({
elem: '#bindSuccessOrderlist'
,url: '{{url('admin/bind_box/success_order_list')}}' //数据接口
,page: true //开启分页
,limit: 20
,limits: [20, 50, 100, 200, 500, 1000]
,cols: [[ //表头
{field: 'id', title: '订单ID', minWidth:80, sort: true}
,{field: 'code', title: '哈希值', minWidth:350, templet:"bindCode"}
,{field: 'currency_name', title:'交易币种', minWidth:80}
,{field: 'user_id', title:'用户ID', minWidth:110}
,{field: 'is_read', title: '已读情况', minWidth:80,templet:"#bindSuccessOrderRead"}
,{field: 'is_pay', title: '支付情况', minWidth:80, templet:"#bindSuccessOrderPay"}
,{field: 'is_expired', title: '状态', minWidth:80, templet:"#bindSuccessOrderStatus"}
,{field: 'created', title:'创建时间', minWidth:155, templet:function(data){
return layui.util.toDateString(data.created*1000,"yyyy-MM-dd HH:mm:ss")
}}
,{field: 'overtime', title:'过期时间', minWidth:155, templet:function(data){
return layui.util.toDateString(data.overtime*1000,"yyyy-MM-dd HH:mm:ss")
}}
,{field: 'pay_time', title:'支付时间', minWidth:155, templet:function(data){
return layui.util.toDateString(data.pay_time*1000,"yyyy-MM-dd HH:mm:ss")
}}
// ,{title: '操作',fixed: 'right', Width:50, toolbar: '#barBind'}
]]
});
// //监听热卖操作
// form.on('switch(sexDemo)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/currency_display')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.message);
// }
// }
// });
// });
// // 监听工具条
// table.on('tool(bindSuccessOrderlist)', function (obj) {
// var layEvent = obj.event
// ,data = obj.data
// if (layEvent === 'edit') {
// var index = layer.open({
// title: '编辑'
// ,type: 2
// ,content: '{{url('/admin/bind_box/edit')}}?id=' + data.id
// ,area: ['960px', '700px']
// });
// }
// });
//监听提交
form.on('submit(bindSuccessOrderSearch)', function (data) {
bindSuccessOrderlist.reload({
where: data.field
,page: {
curr: 1 //重新从第 1 页开始
}
});
return false;
});
});
</script>
@endsection
+108
View File
@@ -0,0 +1,108 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_project">添加项目</button>
</div>
</div>
<table id="data_table" lay-filter="data_table"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script>
$('#add_project').click(function() {
var index = layer.open({
title:'添加项目'
,type:2
,content: '/admin/deposit/config/add/view'
,area: ['100%', '100%']
,maxmin: true
,anim: 3
});
});
let url=window.location.href;
let configId="";
if(url.indexOf("id")!=-1){
configId=url.substr(url.lastIndexOf("/")+1);
}
layui.use(['table', 'layer', 'form'], function() {
var table = layui.table
,layer = layui.layer
,form = layui.form
,$ = layui.$
var data_table = table.render({
elem: '#data_table'
,url: '/admin/deposit/config'
,height: 'full'
,toolbar: 'default'
,page: true
,cols: [[
{type: 'radio'}
,{field: 'id', title: 'id', width: 70}
,{field: 'currency_name', title: '交易币', width: 80}
,{field: 'day', title: '期限', width: 80}
,{field: 'interest_rate', title: '利息(%', width: 150}
,{field: 'intro', title: '文案', width: 150}
,{field: 'save_min', title: '最少存币数', width: 300}
,{field: 'created_at', title: '创建时间', width: 200}
,{fixed: 'right', title: '操作', width: 190, align: 'center', toolbar: '#barDemo'}
]]
});
table.on('tool(data_table)', function (obj) {
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
var selected = table.checkStatus('data_table')
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "/admin/deposit/config/delete",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}
if(layEvent === 'edit'){
if (selected.data.length != 1) {
layer.msg('只能编辑一个质押配置');
return false;
}
id = selected.data[0].id
var data=selected.data[0];
layer.open({
title: '编辑质押'
,type: 2
,content: '/admin/deposit/config/edit/view?id='+id
,area: ['600px', '380px']
});
}
});
});
</script>
@endsection
@@ -0,0 +1,94 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width: 150px;
}
.layui-input-block {
margin-left: 180px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<input type="hidden" id="id" data-type="0" >
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">币种</label>
<div class="layui-input-block">
<select name="currency_id" lay-verify="required" id="currency_id" lay-search>
@foreach ($currencies as $currency)
<option value="{{ $currency->id }}"> {{ $currency->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">期限</label>
<div class="layui-input-block">
<input type="text" name="day" id="day" required autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">利息(百分比)</label>
<div class="layui-input-block">
<input type="text" name="rate" id="rate" required autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文案</label>
<div class="layui-input-block">
<input type="text" name="intro" id="intro" required autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小值</label>
<div class="layui-input-block">
<input type="text" name="save_min" id="save_min" autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
let url=window.location.href;
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/deposit/add_deposit_config')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,90 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width: 150px;
}
.layui-input-block {
margin-left: 180px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<input type="hidden" id="id" data-type="0" >
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">币种</label>
<div class="layui-input-block">
<input type="text" disabled="disabled" name="currency_name" id="name" value="{{$model->currency_name}}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">期限</label>
<div class="layui-input-block">
<input type="text" name="day" id="day" required autocomplete="off" placeholder="" class="layui-input" value="{{$model->day}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">利息(百分比)</label>
<div class="layui-input-block">
<input type="text" name="rate" id="rate" required autocomplete="off" placeholder="" class="layui-input" value="{{$model->interest_rate}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文案</label>
<div class="layui-input-block">
<input type="text" name="intro" id="intro" required autocomplete="off" placeholder="" class="layui-input" value="{{$model->intro}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小值</label>
<div class="layui-input-block">
<input type="text" name="save_min" id="save_min" autocomplete="off" placeholder="" class="layui-input" value="{{$model->save_min}}">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
// let url=window.location.href;
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
// console.log(123);return;
var data = data.field;
$.ajax({
url:'{{url('admin/deposit/edit_deposit_config')}}?id='+{{$model->id}}
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,123 @@
@extends('admin._layoutNew')
@section('page-head')
@stop
@section('page-content')
<div class="larry-personal-body clearfix">
<form class="layui-form col-lg-5">
<div class="layui-form-item">
<label class="layui-form-label">用户账号</label>
<div class="layui-input-block">
<input type="text" name="account" id="account" autocomplete="off" class="layui-input layui-disabled" value="" placeholder="" disabled>
</div>
</div>
<!--<div class="layui-form-item">-->
<!-- <label class="layui-form-label">理财账户币种</label>-->
<!-- <div class="layui-input-block">-->
<!-- <select name="type" lay-verify="required" lay-filter="type" id="type">-->
<!-- <option value="1">AUTH</option>-->
<!-- <option value="2">USDT</option>-->
<!-- </select>-->
<!-- </div>-->
<!--</div>-->
<div class="layui-form-item">
<label class="layui-form-label">调节DF币种余额</label>
<div class="layui-input-block">
<input type="text" name="df_balance" id="df_balance" required lay-verify="required" placeholder="请输入要改成多少余额" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">调节USDT币种余额</label>
<div class="layui-input-block">
<input type="text" name="usdt_balance" id="usdt_balance" required lay-verify="required" placeholder="请输入要改成多少余额" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="user_submit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
@stop
@section('scripts')
<script type="text/javascript">
let url=window.location.href;
var account_id='';
var account='';
var df_balance='';
var usdt_balance='';
if(url.indexOf("?")!=-1){
url=url.substr(url.indexOf('?')+1);
url=url.split('&');
for(let i in url){
if(i==0){
user_id=url[i].split("=")[1]
}else{
account=url[i].split("=")[1]
}
}
$("#account").val(account);
$.ajax({
url:'{{url('admin/ybb/account')}}',
type: 'get',
dataType: 'json',
data: {
user_id:user_id
},
success: function (res) {
account_id=res.message.id;
df_balance = res.message.df_balance;
usdt_balance=res.message.usdt_balance
$("#df_balance").val(df_balance);
$("#usdt_balance").val(usdt_balance);
}
});
}
layui.use(['form','upload','layer'], function () {
var layer = layui.layer;
var form = layui.form;
var $ = layui.$;
form.on('select(type)', function (data) {
if(data.elem.value==1){
$("#balance").val(df_balance?df_balance:0)
}else if(data.elem.value==2){
$("#balance").val(usdt_balance?usdt_balance:0);
}
console.log(data);
});
form.on('submit(user_submit)', function (data) {
// var balance=$("#balance").val();
// var type=$("#type option:selected").val();
var data = data.field;
data.id=account_id;
// if(type==1){
// data.df_balance=balance;
// }else if(type==2){
// data.usdt_balance=balance;
// }
$.ajax({
url:'{{url('admin/ybb/account/edit')}}',
type: 'post',
dataType: 'json',
data: data,
success: function (res) {
layer.msg(res.message);
if(res.type == 'ok') {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
parent.window.location.reload();
}else{
return false;
}
}
});
return false;
});
});
</script>
@stop
@@ -0,0 +1,180 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">订单ID</label>
<div class="layui-input-block">
<input type="text" name="order_id" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">用户名,ID</label>
<div class="layui-input-block">
<input type="text" name="mobile" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<select name="status" class="layui-input">
<option value="">选择状态</option>
<option value="1">进行中</option>
<option value="2">毁约</option>
<option value="3">到期</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="searchtj">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<table id="boss" lay-filter="boss"></table>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelOrder" title='取消质押订单'><i class="layui-icon"></i>取消订单</a>
</script>
<script>
layui.use(['table','form'], function(){
// console.log(layui.setter.base)
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#boss'
,url: '{{url('admin/ybb/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: '订单ID', width:100, sort: true}
,{field: 'user_id', title: '用户ID', width:100}
,{field: 'account_number', title: '用户名', width:200}
,{field:'currency_name',title:'币种',width:100}
,{field:'day_rate',title: '日利率', width:100}
,{field: 'amount', title: '存币数量', width:200}
,{field: 'total_interest', title: '总利息', width:100}
,{field: 'start_at', title: '开始时间', width:120}
,{field: 'end_at', title: '到期时间',}
,{ title: '状态',templet:function(d){
if(d.is_cancel){
if(d.status==1){
return '<span style="color:#00c087">进行中</span>';
}else if(d.status==2){
return '<span style="color:#f00">毁约</span>';
}
}else{
if(d.status==1){
return '<span style="color:#00c087">进行中</span>';
}else if(d.status==2){
return '<span style="color:#f00">到期</span>';
}
}
}}
,{title:'操作',templet:function(d){
if(d.is_cancel){
if(d.status==1){
return '<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelOrder" title="取消质押订单"><i class="layui-icon"></i>取消订单</a>' ;
}else if(d.status==2){
return '<span style="color:#f00">已毁约</span>';
}
}else{
if(d.status==1){
return '<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="cancelOrder" title="取消质押订单"><i class="layui-icon"></i>取消订单</a>' ;
}else if(d.status==2){
return '<span style="color:#f00">到期</span>';
}
}
}}
]]
});
//监听提交
form.on('submit(searchtj)', function(data){
// var seller_name = data.field.seller_name
var account_number = data.field.mobile,
order_id = data.field.order_id,
status= data.field.status,
is_cancel=0;
if(status==2){
is_cancel=1;
}
if(status==3){
status=2;
is_cancel=0;
}
if(status==1 || status==""){
is_cancel='';
}
// ,currency_id = $('#currency_id').val()
table.reload('mobileSearch',{
where:{
is_cancel:is_cancel,
order_id:order_id,
account_number:account_number,
status:status,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
return false;
});
table.on('tool(boss)', function(obj){
var data = obj.data;
if(obj.event === 'getsons'){
table.reload('mobileSearch',{
where:{
p_id:data.id,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
}else if(obj.event === 'cancelOrder'){
//管理员取消质押订单
$.ajax({
url:'{{url('admin/deposit/cancelOrder')}}'
,type:'post'
,dataType:'json'
,data : {id: obj.data.id,}
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
layer.msg(res.message);
window.location.reload();
}
}
});
return false;
}
});
});
</script>
@endsection
@@ -0,0 +1,161 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
p.percent {
text-align: right;
margin-right: 10px;
}
p.percent::after {
content: '%';
}
</style>
@endsection
@section('page-content')
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">账号</label>
<div class="layui-input-inline">
<input type="text" name="search" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
<table id="demo" lay-filter="test"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
@{{d.status==0 ? '<a class="layui-btn layui-btn-xs" lay-event="del">确认</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="edit">驳回</a>' : '' }}
</script>
<script>
layui.use(['table','form','laydate'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
var laydate = layui.laydate;
//第一个实例
table.render({
elem: '#demo'
,toolbar: '#toolbar'
,url: '{{url('admin/ybb/unlock/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:60, sort: true}
,{field: 'account_number', title: '账号', minWidth:80}
,{field: 'amount', title: '存款数量', minWidth:80}
,{field: 'total_interest', title: '已产生利息', minWidth:80}
,{field: 'status', title: '状态', minWidth:80,templet:function(d){
if(d.status==1){
return '<span style="color:#5fb878">进行中</span>';
}
if(d.status==2){
return '<span style="color:#f00">已结束</span>';
}
return '';
}}
,{field: 'start_at', title: '开始时间', minWidth:80}
,{field: 'end_at', title: '完成时间', minWidth:80}
,{field: 'last_settle_time', title: '上次派息时间', minWidth:80}
,{field: 'is_cancel', title: '是否取消', minWidth:80,templet:function(d){
if(d.is_cancel==1){
return '<span style="color:#5fb878">是</span>';
}else{
return '<span style="color:#f00">否</span>';
}
}}
//,{field: 'create_time', title: '添加时间', width:160}
// ,{title:'操作',width:240,toolbar: '#barDemo'}
]]
});
//监听提交
// form.on('submit(mobile_search)', function(data){
// var account_number = data.field.account_number;
// var start_time = $("#start_time").val()
// var end_time = $("#end_time").val()
// var status = $('#status').val()
// table.reload('mobileSearch',{
// where:{mobile:account_number,status:status,start_time:start_time,end_time:end_time},
// page: {curr: 1} //重新从第一页开始
// });
// return false;
// });
laydate.render({
elem: '#start_time'
});
laydate.render({
elem: '#end_time'
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的确认么', function(index){
$.ajax({
url:'{{url('admin/flashagainst/affirm')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if (res.type == 'error') {
layer.msg(res.message);
} else {
layer.msg(res.message);
setTimeout(function () {
location.reload()
}, 2000)
}
}
});
});
} else if(obj.event === 'edit'){
layer.confirm('是否驳回', function(index){
$.ajax({
url:'{{url('admin/flashagainst/reject')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
layer.msg(res.message);
setTimeout(function () {
location.reload()
}, 2000)
}
}
});
});
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var search = data.field.search;
table.reload('mobileSearch',{
where:{search:search},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
+253
View File
@@ -0,0 +1,253 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label >用户交易账号&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<input type="text" name="account_number" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label >商家交易账号&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<input type="text" name="seller_number" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>买入/卖出&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="type" id="type_type">
<option value="" class="ww">全部</option>
<option value="sell" class="ww">买入</option>
<option value="buy" class="ww">卖出</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
{{--<button class="layui-btn layui-btn-normal daochu" onclick="javascrtpt:window.location.href='{{url('/admin/c2c_deal/csv')}}'">导出交易信息</button>--}}
<button class="layui-btn layui-btn-normal daochu">导出交易信息</button>
</div>
<div class="layui-card-body">
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
<ul class="layui-row layui-col-space10 layui-this">
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('买入交易总额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">
<h3>买入交易总额:</h3>
<p><cite style="color:#fff" id="all">{{$buy_all_number}}</cite></p>
</a>
</li>
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('卖出交易总额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">
<h3>卖出交易总额:</h3>
<p><cite style="color:#fff" id="toucun">{{$sell_all_number}}</cite></p>
</a>
</li>
{{--<li class="layui-col-xs3">--}}
{{--<a href="javascript:;" onclick="layer.tips('USDT购买总数量', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">--}}
{{--<h3>USDT购买总数量:</h3>--}}
{{--<p><cite style="color:#fff" id="shouxu">{{$buyall_usdt}}</cite></p>--}}
{{--</a>--}}
{{--</li>--}}
</ul>
</div>
{{--<div class="layui-carousel layadmin-backlog" style="background-color: #fff">--}}
{{--<ul class="layui-row layui-col-space10 layui-this">--}}
{{--<li class="layui-col-xs3">--}}
{{--<a href="javascript:;" onclick="layer.tips('USDT出售总数量', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">--}}
{{--<h3>USDT出售总数量:</h3>--}}
{{--<p><cite style="color:#fff" id="chujin">{{$sellall_usdt}}</cite></p>--}}
{{--</a>--}}
{{--</li>--}}
{{--<li class="layui-col-xs3">--}}
{{--<a href="javascript:;" onclick="layer.tips('USDT总冻结数量', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">--}}
{{--<h3>USDT总冻结数量:</h3>--}}
{{--<p><cite style="color:#fff" id="rujin">{{$all_lock_legal_balance}}</cite></p>--}}
{{--</a>--}}
{{--</li>--}}
{{--<li class="layui-col-xs3">--}}
{{--<a href="javascript:;" onclick="layer.tips('USDT总可用余额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;padding: 10px;">--}}
{{--<h3>USDT总可用余额:</h3>--}}
{{--<p><cite style="color:#fff" id="lock">{{$all_usdt_can_use}}</cite></p>--}}
{{--</a>--}}
{{--</li>--}}
{{--<li class="layui-col-xs3">--}}
{{--<a href="javascript:;" onclick="layer.tips('客户法币锁定余额', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;display: block;">--}}
{{--<h3>客户法币锁定余额</h3>--}}
{{--<p><cite style="color:#fff" id="locklage">0</cite></p>--}}
{{--</a>--}}
{{--</li>--}}
{{--</ul>--}}
{{--</div>--}}
</div>
<style>
element.style {
color: #fff;
background-color: #01AAED;
display: block;
}
</style>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<!-- <script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script> -->
<script type="text/html" id="type">
@{{d.type=="buy" ? '<span class="layui-badge layui-bg-green">'+'卖出'+'</span>' : '' }}
@{{d.type=="sell" ? '<span class="layui-badge layui-bg-red">'+'买入'+'</span>' : '' }}
</script>
<script type="text/html" id="is_sure">
@{{d.is_sure==0 ? '<span class="layui-badge layui-bg-red">'+'未确认'+'</span>' : '' }}
@{{d.is_sure==1 ? '<span class="layui-badge layui-bg-blue " >'+'已确认'+'</span>' : '' }}
@{{d.is_sure==2 ? '<span class="layui-badge layui-bg-orange">'+'已取消'+'</span>' : '' }}
@{{d.is_sure==3 ? '<span class="layui-badge layui-bg-green">'+'已付款'+'</span>' : '' }}
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/c2c_deal/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true}
,{field: 'legal_deal_send_id', title: '交易需求id', width:150}
,{field: 'account_number', title: '用户交易账号', width:120}
,{field: 'user_realname', title: '真实姓名', width:120}
,{field: 'seller_name', title: '商家名称', width:120}
,{field: 'type', title: '买入/卖出', width:100, templet: '#type'}
,{field: 'way_name', title: '支付方式', width:100}
,{field: 'price', title: '单价', width:100 }
,{field: 'number', title: '交易数量', width:100}
// ,{field: 'surplus_number', title: '剩余数量', width:100}
,{field: 'currency_name', title: '交易币', width:100}
,{field: 'deal_money', title: '交易总金额', width:100}
// ,{field: 'limitation', title: '限额', width:100, templet: '#limitation'}
,{field: 'is_sure', title: '交易状态', width:100, templet: '#is_sure'}
,{field: 'format_create_time', title: '交易时间', width:180}
,{field: 'format_update_time', title: '确认时间', width:180}
// ,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听提交
form.on('submit(mobile_search)', function(data){
var seller_number = data.field.seller_number
,type = $('#type_type').val()
// ,currency_id = $('#currency_id').val()
,account_number = data.field.account_number
table.reload('mobileSearch',{
where:{
account_number:account_number,
seller_number:seller_number,
type:type,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
return false;
});
$('.daochu').click(function(){
// var id = $("input[name='id']").val();
var account_number = $("input[name='account_number']").val();
var seller_number = $("input[name='seller_number']").val();
var type = $("select[name='type']").val();
location.href='/admin/c2c_deal/csv?&account_number='+account_number + '&seller_number='+seller_number + '&type='+type;
})
});
</script>
@endsection
+181
View File
@@ -0,0 +1,181 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label >发布方交易账号&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<input type="text" name="account_number" autocomplete="off" class="layui-input">
</div>
</div>
<!-- <div class="layui-inline" style="margin-left: 50px;">
<label >商家名称&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<input type="text" name="seller_name" autocomplete="off" class="layui-input">
</div>
</div> -->
<div class="layui-inline" style="margin-left: 50px;">
<label>出售/求购&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="type" id="type_type">
<option value="" class="ww">全部</option>
<option value="buy" class="ww">求购</option>
<option value="sell" class="ww">出售</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="back">撤回发布</a>
<!-- <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除发布</a> -->
</script>
<script type="text/html" id="type">
@{{d.type=="buy" ? '<span class="layui-badge layui-bg-green">'+'求购'+'</span>' : '' }}
@{{d.type=="sell" ? '<span class="layui-badge layui-bg-red">'+'出售'+'</span>' : '' }}
</script>
<script type="text/html" id="is_done">
@{{d.is_done==0 ? '<span class="layui-badge layui-bg-gray">'+'未完成'+'</span>' : '' }}
@{{d.is_done==1 ? '<span class="layui-badge">'+'已完成'+'</span>' : '' }}
</script>
<!-- <script type="text/html" id="limitation">
<span class="layui-badge layui-bg-gray">@{{d.limitation.min}}--@{{d.limitation.max}}</span>
</script> -->
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: '{{url('admin/c2c/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true}
,{field: 'seller_name', title: '用户名称', width:200}
,{field: 'type', title: '出售/求购', width:100, templet: '#type'}
,{field: 'way_name', title: '支付方式', width:100}
,{field: 'price', title: '单价', width:100 }
,{field: 'total_number', title: '数量', width:100}
// ,{field: 'surplus_number', title: '剩余数量', width:100}
,{field: 'currency_name', title: '交易币', width:100}
// ,{field: 'limitation', title: '限额', width:100, templet: '#limitation'}
,{field: 'is_done', title: '是否完成', width:100, templet: '#is_done'}
,{field: 'create_time', title: '创建时间', width:180}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('删除发布会删除此发布信息下的所有交易,请谨慎操作', function(index){
var loading = layer.load(1, {
shade: [0.1,'#fff'] //0.1透明度的白色背景
});
$.ajax({
url:'{{url('admin/c2c/send/del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.close(loading);
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'back'){
layer.confirm('撤回发布会把此发布信息下的所有未完成交易取消', function(index){
var loading = layer.load(1, {
shade: [0.1,'#fff'] //0.1透明度的白色背景
});
$.ajax({
url:'{{url('admin/c2c/send/back')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.close(loading);
layer.msg(res.message);
layer.close(index);
}
});
});
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
// var seller_name = data.field.seller_name
var account_number = data.field.account_number
,type = $('#type_type').val()
// ,currency_id = $('#currency_id').val()
table.reload('mobileSearch',{
where:{
account_number:account_number,
type:type,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,70 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">账号</label>
<div class="layui-input-block">
<input type="text" name="account_number" readonly="readonly" autocomplete="off" placeholder="" class="layui-input" value="{{$feedback->account_number}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提交内容</label>
<div class="layui-input-block">
<textarea name="" id="" cols="90" rows="4">{{$feedback->content}}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">回复内容</label>
<div class="layui-input-block">
<textarea name="reply_content" id="" cols="90" rows="10">{{$feedback->reply_content}}</textarea>
</div>
</div>
<input type="hidden" name="id" value="{{$feedback->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/feedback/reply')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,134 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="margin-top: 10px;width: 100%;margin-left: 10px;">
{{--<button class="layui-btn layui-btn-normal layui-btn-radius" onclick="layer_show('添加承兑商','{{url('admin/acceptor_add')}}')">添加承兑商</button>--}}
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline">
<input type="text" name="account_number" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
{{--<button class="layui-btn layui-btn-normal" onclick="javascrtpt:window.location.href='{{url('/admin/feedback/csv')}}'">导出用户</button>--}}
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="detail">查看</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script type="text/html" id="is_reply">
@{{d.is_reply==1 ? '<span class="layui-badge layui-bg-green">'+'已回复'+'</span>' : '' }}
@{{d.is_reply==0 ? '<span class="layui-badge layui-bg-red">'+'未回复'+'</span>' : '' }}
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: "{{url('admin/candytransfer/list')}}" //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true}
,{field: 'from_user_phone', title: '转出用户', ninWidth:100}
,{field: 'to_user_phone', title: '转入用户', ninWidth:100}
// ,{field: 'content', title: '提交内容', ninWidth:100}
,{field: 'transfer_qty', title: '转账数量', ninWidth:80}
,{field: 'transfer_rate', title: '手续费率(百分比)', ninWidth:80}
,{field: 'transfer_fee', title: '手续费', ninWidth:80}
,{field: 'create_time', title: '转账时间', ninWidth:80}
// ,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听热卖操作
// form.on('switch(sexDemo)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/product_hot')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.msg);
// }
// }
// });
// });
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:"{{url('admin/feedback/del')}}",
type:'get',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑承兑商','{{url('admin/feedback/detail')}}?id='+data.id);
} else if(obj.event === 'detail'){
layer_show('查看详情','{{url('admin/feedback/detail')}}?id='+data.id,800,600);
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
+211
View File
@@ -0,0 +1,211 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">提币信息</label>
<div class="layui-input-block">
<table class="layui-table">
<tbody>
<tr>
<td>
账户名:{{$wallet_out->account_number}}
</td>
<td>
币种:{{$wallet_out->currency_name}}
</td>
</tr>
<tr>
<td>
币种类型:基于{{$wallet_out->currency_type}}
</td>
<td>
费率:{{$wallet_out->rate}}
</td>
</tr>
<tr>
<td>
提币数量:{{$wallet_out->number}}
</td>
<td>
实际提币数量:{{$wallet_out->real_number}}
</td>
</tr>
<tr>
<td>
提币地址:{{$wallet_out->address}}
</td>
@if($wallet_out->type == 1 )
<td>
人民币价格:{{$wallet_out->real_rmb}}
</td>
@endif
</tr>
@if($wallet_out->type == 1 )
<tr>
<td>
真实姓名:{{$wallet_out->real_name}}
</td>
<td>
银行卡账号:{{$wallet_out->bank_account}}
</td>
</tr>
<tr>
<td>
开户银行:{{$wallet_out->bank_name}}
</td>
<td>
开户省市:{{$card_info->bank_dizhi}}
</td>
</tr>
@endif
@if($wallet_out->type == 2 )
@foreach ($card_info_data as $key => $item)
<tr>
<td colspan="2">
{{$key}}{{$item}}
</td>
</tr>
@endforeach
@endif
@if($wallet_out->status == 1 || $wallet_out->status == 2)
<!--<tr>-->
<!-- <td colspan="2">-->
<!-- <label class="layui-form-label" style="text-align: left; padding-left: 0px;{{$use_chain_api == 0 ? 'color: #f00' : ''}}">交易哈希:</label>-->
<!-- <div class="layui-input-inline" style="width: 80%;">-->
<!-- <input class="layui-input" type="text" name="txid" @if ($use_chain_api == 0) lay-verify="required" @endif placeholder="手工提币请输入交易哈希" autocomplete="off" value="{{$wallet_out->txid ?? ''}}" {{$wallet_out->status == 2 ? 'readonly disabled' : ''}}>-->
<!-- </div>-->
<!-- </td>-->
<!--</tr>-->
@endif
<tr>
<td>
申请时间:{{$wallet_out->create_time}}
</td>
<td>
当前状态:@if($wallet_out->status==1) 提交申请
@elseif($wallet_out->status==2) 提币成功
@elseif($wallet_out->status==3) 提币失败
@else
@endif
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">反馈信息</label>
<div class="layui-input-block">
<textarea name="notes" id="" cols="90" rows="5">{{$wallet_out->notes}}</textarea>
</div>
</div>
@if($wallet_out->status==1)
<!--<div class="layui-form-item">-->
<!-- <label class="layui-form-label">安全验证码</label>-->
<!-- <div class="layui-input-inline">-->
<!-- <input type="text" name="verificationcode" placeholder="" autocomplete="off" class="layui-input">-->
<!-- </div>-->
<!-- <button type="button" class="layui-btn layui-btn-primary" id="get_code">获取验证码</button>-->
<!--</div>-->
@endif
<input type="hidden" name="id" value="">
<div class="layui-form-item">
<div class="layui-input-block">
<input type="hidden" name='id' value='{{$wallet_out->id}}'>
@if($wallet_out->status==1)
<button class="layui-btn" lay-submit="" lay-filter="demo1" name='method' value="done">确认提币</button>
<button class="layui-btn layui-btn-danger" lay-submit="" lay-filter="demo2">退回申请</button>
@endif
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
$('#get_code').click(function () {
var that_btn = $(this);
$.ajax({
url: '/admin/safe/verificationcode'
,type: 'GET'
,success: function (res) {
if (res.type == 'ok') {
that_btn.attr('disabled', true);
that_btn.toggleClass('layui-btn-disabled');
}
layer.msg(res.message, {
time: 3000
});
}
,error: function () {
layer.msg('网络错误');
}
});
});
//监听提交
form.on('submit(demo1)', function(data) {
var data = data.field;
console.log(data);
if (data.verificationcode == '') {
layer.msg('请填写安全验证码');
return false;
}
layer.confirm('确定允许提币?', function (index) {
var loading = layer.load(1, {time: 30 * 1000});
layer.close(index);
$.ajax({
url: '{{url('admin/cashb_done')}}'+'?method=done'
,type: 'post'
,dataType: 'json'
,data : data
,success: function(res) {
if (res.type=='error') {
layer.msg(res.message);
} else {
layer.msg(res.message);
parent.layer.close(index);
parent.window.location.reload();
}
}
,complete: function () {
layer.close(loading);
}
});
});
return false;
});
form.on('submit(demo2)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/cashb_done')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
+156
View File
@@ -0,0 +1,156 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<style>
.status_bg_1{
background: #1E9FFF;
}
.status_bg_2{
background: #5fb878;
}
.status_bg_3{
background: #ff5722;
}
</style>
<div style="margin-top: 10px;width: 100%;">
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline">
<label class="layui-form-label">用户名</label>
<div class="layui-input-inline" style="margin-left: 10px">
<input type="text" name="user_name" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">用户ID</label>
<div class="layui-input-inline" style="margin-left: 10px">
<input type="text" name="user_id" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
<button class="layui-btn layui-btn-normal" style="margin-left: 10px" onclick="javascrtpt:window.location.href='{{url('/admin/cashb/csv')}}'">导出提币记录</button>
</div>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_recommend" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="sexDemo" @{{ d.is_recommend == 1 ? 'checked' : '' }}>
</script>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="show">查看</a>
</script>
<script type="text/html" id="statustml">
@{{d.status==1 ? '<span class="layui-badge status_bg_1">'+'申请提币'+'</span>' : '' }}
@{{d.status==2 ? '<span class="layui-badge status_bg_2">'+'提币完成'+'</span>' : '' }}
@{{d.status==3 ? '<span class="layui-badge status_bg_3">'+'申请失败'+'</span>' : '' }}
</script>
@endsection
@section('scripts')
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,url: "{{url('admin/cashb_list')}}" //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true}
,{field: 'user_name', title: '用户名', width:220}
,{field: 'user_id', title: '用户ID', width:220}
,{field: 'currency_name', title: '虚拟币', width:80}
,{field: 'number', title: '提币数量', minWidth:110}
,{field: 'rate', title: '手续费', minWidth:80}
,{field: 'real_number', title: '实际提币', minWidth:110}
// ,{field: 'address', title: '提币地址', minWidth:100}
,{field: 'status', title: '状态', minWidth:80, templet: '#statustml'}
// ,{field: 'hes_account', title: '承兑商交易账号', minWidth:180}
// ,{field: 'money', title: '交易额度', minWidth:100}
// ,{field: 'sure_name', title: '交易状态', minWidth:100}
,{field: 'create_time', title: '提币时间', minWidth:180}
,{title:'操作',minWidth:90,toolbar: '#barDemo'}
]]
});
//监听热卖操作
// form.on('switch(sexDemo)', function(obj){
// var id = this.value;
// $.ajax({
// url:'{{url('admin/product_hot')}}',
// type:'post',
// dataType:'json',
// data:{id:id},
// success:function (res) {
// if(res.error != 0){
// layer.msg(res.msg);
// }
// }
// });
// });
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/cashb_show')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'show'){
layer_show('确认提币','{{url('admin/cashb_show')}}?id='+data.id,800,600);
} else if(obj.event === 'back'){
layer_show('退回申请','{{url('admin/adjust_account')}}?id='+data.id,800,600);
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.user_name;
var user_id = data.field.user_id;
table.reload('mobileSearch',{
where:{account_number:account_number,user_id:user_id},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
+168
View File
@@ -0,0 +1,168 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
p.percent {
text-align: right;
margin-right: 10px;
}
p.percent::after {
content: '%';
}
</style>
@endsection
@section('page-content')
<form class="layui-form layui-form-pane layui-inline" action="">
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">交易账号</label>
<div class="layui-input-inline">
<input type="text" name="mobile" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label class="layui-form-label">姓名</label>
<div class="layui-input-inline">
<input type="text" name="name" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>保险类型&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="type" id="type" class="layui-input">
<option value="-1">所有类型</option>
@foreach ($ins_type as $key=> $ins)
<option value="{{ $ins->id }}">{{ $ins->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 50px;">
<label>理赔状态&nbsp;&nbsp;</label>
<div class="layui-input-inline">
<select name="apply_status" id="apply_status" class="layui-input">
<option value="-1">所有</option>
<option value="0">理赔中</option>
<option value="1">已赔付</option>
<option value="2">已拒绝</option>
</select>
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<button class="layui-btn" lay-submit="" lay-filter="mobile_search"><i class="layui-icon">&#xe615;</i></button>
</div>
</div>
</form>
<table id="demo" lay-filter="test"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
@{{d.apply_status==0 ? '<a class="layui-btn layui-btn-xs" lay-event="affirm">理赔</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="reject">拒绝</a>' : '' }}
</script>
<script>
layui.use(['table','form','laydate'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
var laydate = layui.laydate;
//第一个实例
table.render({
elem: '#demo'
,toolbar: '#toolbar'
,url: '{{url('admin/claim_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:60, sort: true}
,{field: 'mobile', title: '用户', minWidth:80}
,{field: 'user_name', title: '姓名', minWidth:80}
,{field: 'user_insurance_id', title: '保险单', minWidth:80}
,{field: 'insurance_type_name', title: '保险类型', minWidth:80}
,{field: 'amount', title: '保险金额', minWidth:80}
,{field: 'status_name', title: '理赔状态', minWidth:80}
,{field: 'compensate', title: '理赔金额', minWidth:80}
,{field: 'created_at', title: '申请时间', minWidth:80}
,{field: 'updated_at', title: '处理时间', minWidth:80}
,{title:'操作',width:240,toolbar: '#barDemo'}
]]
});
//监听提交
form.on('submit(mobile_search)', function(data){
console.log(data.field);
table.reload('mobileSearch',{
where:data.field,
page: {curr: 1} //重新从第一页开始
});
return false;
});
laydate.render({
elem: '#start_time'
});
laydate.render({
elem: '#end_time'
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'affirm'){
layer.confirm('确认理赔吗', function(index){
$.ajax({
url:'{{url('admin/claim_affirm')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.msg(res.message);
if(res.type == 'error'){
layer.msg(res.message);
}else{
table.reload('mobileSearch',{
page: {curr: 1} //重新从第一页开始
}); }
}
});
});
} else if(obj.event === 'reject'){
layer.confirm('是否驳回', function(index){
$.ajax({
url:'{{url('admin/claim_reject')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.msg(res.message);
if(res.type == 'error'){
layer.msg(res.message);
}else{
setTimeout(function () {
location.reload()
}, 2000)
}
}
});
});
}
});
});
</script>
@endsection
@@ -0,0 +1,175 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
[hide] {
display: none;
}
</style>
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<!--<div class="layui-inline">-->
<!-- <label class="layui-form-label">ID</label>-->
<!-- <div class="layui-input-block">-->
<!-- <input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">-->
<!-- </div>-->
<!--</div>-->
<div class="layui-inline">
<label class="layui-form-label">用户</label>
<div class="layui-input-inline">
<input type="text" name="mobile" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">交易类型</label>
<div class="layui-input-inline">
<select name="type" class="layui-input">
<option value="">选择交易类型</option>
<option value="1"></option>
<option value="2"></option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<select name="status" class="layui-input">
<option value="">选择状态</option>
<option value="1">委托中</option>
<option value="2">已完成</option>
<option value="3">已取消</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="searchtj">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<table id="coin_trade" lay-filter="coin_trade"></table>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
<!--<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="getsons"><i class="layui-icon layui-icon-friends"></i>下级</a>-->
<a class="layui-btn layui-btn-xs " style="@{{ d.status == 1 ? '' : 'display:none' }}" lay-event="qiangzhi">@{{ d.status == 1 ? '强制交易' : '' }}</a>
</script>
<script>
layui.use(['table','form'], function(){
// console.log(layui.setter.base)
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#coin_trade'
,url: '{{url('admin/coin_trade/list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', width:80, sort: true}
,{field: 'account_number', title: '用户', width:200}
,{ title: '交易类型', width:200,templet:function(d){
if(d.type==1){
return "<span style='color:#00c087'>买</span>";
}else if(d.type==2){
return "<span style='color:#f00'>卖</span>";
}
}}
,{ title: '交易对', width:200,templet:function(d){
return d.currency_name+"/"+d.legal_name;
}}
,{ title: '委托价', width:100,templet:function(d){
return (parseFloat(d.target_price).toFixed(2));
}}
,{ title: '委托量', width:120,templet:function(d){
return (parseFloat(d.trade_amount).toFixed(4));
}}
// ,{field: 'charge_fee', title: '手续费'}
,{ title: '手续费',templet:function(d){
return (d.target_price*d.trade_amount*d.charge_fee).toFixed(4);
}}
,{field: 'created_at', title: '委托时间'}
,{title: '状态' ,templet:function(d){
if(d.status==1){
return "<span style='color:#00c087'>委托中</span>";
}else if(d.status==2){
return "<span style='color:#f00'>已完成</span>";
}else if(d.status==3){
return "<span style='color:#999'>已取消</span>";
}
}}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听提交
form.on('submit(searchtj)', function(data){
// var seller_name = data.field.seller_name
var account_number = data.field.mobile,
type = data.field.type,
status = data.field.status;
// ,currency_id = $('#currency_id').val()
table.reload('mobileSearch',{
where:{
type:type,
status:status,
search:account_number,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
return false;
});
table.on('tool(coin_trade)', function(obj){
var data = obj.data;
if(obj.event === 'getsons'){
table.reload('mobileSearch',{
where:{
p_id:data.id,
// currency_id:currency_id,
},
page: {curr: 1} //重新从第一页开始
});
}
if(obj.event === 'qiangzhi'){
$.post('coin_trade/close',{
id:data.id
},function(res){
if(res.type=="ok"){
layer.msg('操作成功');
setTimeout(function (){
table.reload('mobileSearch',{
page: {curr: 1} //重新从第一页开始
});
},1500)
}else{
layer.msg('操作失败');
}
})
}
});
});
</script>
@endsection
@@ -0,0 +1,405 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.hide {
display: none;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基础参数</li>
<li>交割参数</li>
<li>提币参数</li>
<li>充币参数</li>
<li>插针参数</li>
<!-- <li>链上参数</li>-->
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">币种名称</label>
<div class="layui-input-inline">
<input type="text" name="name" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->name}}">
</div>
<div class="layui-form-mid layui-word-aux">请确保在交易所中该币种名称是惟一的</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">行情代码</label>
<div class="layui-input-inline">
<input type="text" name="vcode" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->vcode}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">展示名称</label>
<div class="layui-input-inline">
<input type="text" name="real_name" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->real_name}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="sort" name="sort" value="{{$result->sort}}" placeholder="排序为升序">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">基于链</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" id="type" name="type" value="{{$result->type}}" placeholder="标志">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类</label>
<div class="layui-input-block">
<input type="radio" name="is_class" title="加密货币" value="2" lay-skin="primary" @if($result->is_class ==2) checked @endif>
<input type="radio" name="is_class" title="期货" value="3" lay-skin="primary" @if($result->is_class ==3) checked @endif>
<input type="radio" name="is_class" title="外汇" value="0" lay-filter="microtrade" lay-skin="primary" @if($result->is_class ==0) checked @endif>
<input type="radio" name="is_class" title="股票" value="6" lay-skin="primary" @if($result->is_class ==6) checked @endif>
<input type="radio" name="is_class" title="ETF" value="9" lay-skin="primary" @if($result->is_class ==9) checked @endif>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">价值</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="price" name="price" value="{{$result->price}}" placeholder="价值">
</div>
<div class="layui-form-mid layui-word-aux">$</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">折合人民币比例</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="rmb_relation" name="rmb_relation" value="{{$result->rmb_relation}}" placeholder="百分比">
</div>
<!-- <div class="layui-form-mid layui-word-aux">%</div> -->
</div>
<div class="layui-form-item">
<label class="layui-form-label">账户资产类型</label>
<div class="layui-input-block">
<input type="checkbox" name="is_legal" title="法币交易" value="1" lay-skin="primary" @if($result->is_legal ==1) checked @endif>
<input type="checkbox" name="is_lever" title="合约交易" value="1" lay-skin="primary" @if($result->is_lever ==1) checked @endif>
<input type="checkbox" name="is_micro" title="期权交易" value="1" lay-filter="microtrade" lay-skin="primary" @if($result->is_micro ==1) checked @endif>
<input type="checkbox" name="is_match" title="闪兑交易" value="1" lay-skin="primary" @if($result->is_match ==1) checked @endif>
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">币种 logo</label>
<div class="layui-input-block">
<button class="layui-btn" type="button" id="upload_test">选择图片</button>
<br>
<img src="@if(!empty($result->logo)){{$result->logo}}@endif" id="img_thumbnail" class="thumbnail" style="display: @if(!empty($result->logo)){{"block"}}@else{{"none"}}@endif;max-width: 200px;height: auto;margin-top: 5px;">
<input type="hidden" name="logo" id="thumbnail" value="@if(!empty($result->logo)){{$result->logo}}@endif">
</div>
</div>
</div>
<div class="layui-tab-item">
<div id="micro_trade_fee" class="layui-form-item {{$result->is_micro == 1 ? '' : 'hide'}}">
<label class="layui-form-label">交割手续费</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="" name="micro_trade_fee" value="{{$result->micro_trade_fee}}" placeholder="百分比">
</div>
<div class="layui-form-mid layui-word-aux">%</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">下单数量范围</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" name="micro_min" value="{{$result->micro_min}}" placeholder="最小数量">
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="number" class="layui-input" name="micro_max" value="{{$result->micro_max}}" placeholder="最大数量">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最大持仓笔数</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" name="micro_holdtrade_max" value="{{$result->micro_holdtrade_max}}" placeholder="最大持仓笔数">
</div>
<div class="layui-form-mid layui-word-aux">用户最大可持仓笔数,为0不限制</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否购买保险</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="radio" name="insurancable" value="1" title="打开" @if (isset($result->insurancable)) {{$result->insurancable == 1 ? 'checked' : ''}} @endif >
<input type="radio" name="insurancable" value="0" title="关闭" @if (isset($result->insurancable)) {{$result->insurancable == 0 ? 'checked' : ''}} @else checked @endif >
</div>
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label class="layui-form-label">提币数量</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="end_time" name="min_number" value="{{$result->min_number}}" placeholder="最小数量">
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="end_time" name="max_number" value="{{$result->max_number}}" placeholder="最大数量">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提币费率</label>
<div class="layui-input-inline">
<input type="number" class="layui-input" id="end_time" name="rate" value="{{$result->rate}}" placeholder="百分比">
</div>
<div class="layui-form-mid"></div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item {{$result->id == 3 ? '' : 'hide'}}">
<label class="layui-form-label">充币地址trc20</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="address_omni" name="address_omni" value="{{$result->address_omni}}" placeholder="地址">
</div>
</div>
@if ( $result->id ==3)
<div class="layui-form-item">
<label class="layui-form-label">充币地址erc20</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="address_erc" name="address_erc" value="{{$result->address_erc}}" placeholder="地址">
</div>
</div>
@endif
@if ( $result->id !=3)
<div class="layui-form-item">
<label class="layui-form-label">充币地址</label>
<div class="layui-input-block">
<input type="text" class="layui-input" id="address_erc" name="address_erc" value="{{$result->address_erc}}" placeholder="地址">
</div>
</div>
@endif
<div class="layui-form-item">
<label class="layui-form-label">二级密码</label>
<div class="layui-input-block">
<input type="password" class="layui-input" id="second_pwd" name="second_pwd" value="" placeholder="二级密码">
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label class="layui-form-label">是否插针</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="radio" name="enabled" value="1" title="打开" @if (isset($result->enabled)) {{$result->enabled == 1 ? 'checked' : ''}} @endif >
<input type="radio" name="enabled" value="0" title="关闭" @if (isset($result->enabled)) {{$result->enabled == 0 ? 'checked' : ''}} @else checked @endif >
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">时间(分钟)</label>
<div class="layui-input-block">
<input type="number" name="min_unit" autocomplete="off" placeholder="请输入时间" class="layui-input" value="{{$result->min_unit}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">涨跌百分点</label>
<div class="layui-input-block">
<input type="number" name="count" autocomplete="off" placeholder="请输如涨跌百分点" class="layui-input" value="{{$result->count}}">
</div>
</div>
</div>
<div class="layui-tab-item">
<!--<div class="layui-form-item">
<label class="layui-form-label">基于币种</label>
<div class="layui-input-inline">
<select name="type" lay-verify="required">
<option value="btc" @if($result->type =='btc') selected @endif>BTC</option>
<option value="usdt" @if($result->type =='usdt') selected @endif>USDT</option>
<option value="eth" @if($result->type =='eth') selected @endif>ETH</option>
<option value="erc20" @if($result->type =='erc20') selected @endif>ERC20</option>
<option value="xrp" @if($result->type =='xrp') selected @endif>XRP</option>
</select>
</div>
<div class="layui-form-mid layui-word-aux">新添加币种必须指定正确所属区块链币种</div>
</div> -->
<div class="layui-form-item">
<label class="layui-form-label">总账号</label>
<div class="layui-input-block">
<input type="text" name="total_account" autocomplete="off" placeholder="运营者的钱包地址" class="layui-input" value="{{$result->total_account}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">私钥</label>
<div class="layui-input-block">
<input type="password" name="key" autocomplete="off" placeholder="运营者的钱包私钥" class="layui-input" value="{{$result->key}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">合约地址</label>
<div class="layui-input-block">
<input type="text" name="contract_address" autocomplete="off" placeholder="仅ERC20代币才需要填写" class="layui-input" value="{{$result->contract_address}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发币位数</label>
<div class="layui-input-inline">
<input type="text" name="decimal_scale" autocomplete="off" placeholder="" class="layui-input" value="{{$result->decimal_scale ?? 18}}">
</div>
<div class="layui-form-mid layui-word-aux">请务必保证与区域链上小数位一致</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">链上手续费</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="text" name="chain_fee" autocomplete="off" placeholder="" class="layui-input" value="{{$result->chain_fee ?? 0 }}">
</div>
<div class="layui-form-mid layui-word-aux">链上归拢、提币的手续费</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">安全验证码</label>
<div class="layui-input-inline">
<input type="text" name="verificationcode" placeholder="" autocomplete="off" class="layui-input">
</div>
<button type="button" class="layui-btn layui-btn-primary" id="get_code">获取验证码</button>
</div>
@if (isset($result->id) && $result->id > 0)
<div class="layui-form-item">
<label class="layui-form-label">总账号地址</label>
<div class="layui-input-block">
<button id="set_out_address" class="layui-btn layui-btn-warm layui-btn-sm" type="button" data-id="{{$result->id}}">转出地址</button>
<button id="set_in_address" class="layui-btn layui-btn-danger layui-btn-sm" type="button" data-id="{{$result->id}}">归拢地址</button>
</div>
</div>
@endif
</div>
</div>
</div>
<input id="currency_id" type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['upload', 'form', 'laydate', 'element', 'layer'], function () {
var upload = layui.upload
,form = layui.form
,layer = layui.layer
,$ = layui.$
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name)
,element = layui.element
var uploadInst = upload.render({
elem: '#upload_test' //绑定元素
,url: '{{URL("api/upload")}}?scene=admin' //上传接口
,done: function(res){
//上传完毕回调
if (res.type == "ok"){
$("#thumbnail").val(res.message)
$("#img_thumbnail").show()
$("#img_thumbnail").attr("src",res.message)
} else{
alert(res.message)
}
}
,error: function(){
//请求异常回调
}
});
var currency_id = $('#currency_id').val();
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/currency_add')}}'
,type:'post'
,dataType:'json'
,data: data
,success: function(res) {
layer.msg(res.message, {
time: 2000
,end: function () {
if(res.type == 'ok') {
parent.layer.close(index);
parent.window.location.reload();
}
}
});
}
});
return false;
});
form.on('checkbox(microtrade)', function (data) {
if (data.elem.checked) {
$('#micro_trade_fee').removeClass('hide');
} else {
$('#micro_trade_fee').addClass('hide');
}
});
//获取验证码
$('#get_code').click(function () {
var that_btn = $(this);
$.ajax({
url: '/admin/safe/verificationcode'
,type: 'GET'
,success: function (res) {
if (res.type == 'ok') {
that_btn.attr('disabled', true);
that_btn.toggleClass('layui-btn-disabled');
}
layer.msg(res.message, {
time: 3000
});
}
,error: function () {
layer.msg('网络错误');
}
});
});
// 设置转出地址
$('#set_out_address').click(function () {
parent.layui.layer.open({
title: '设置转出地址'
,type: 2
,content: '/admin/currency/set_out_address/' + currency_id
,area: ['490px', '350px']
});
});
// 设置转入地址
$('#set_in_address').click(function () {
parent.layui.layer.open({
title: '设置转入地址'
,type: 2
,content: '/admin/currency/set_in_address/' + currency_id
,area: ['490px', '250px']
});
});
});
</script>
@endsection
@@ -0,0 +1,120 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.layui-form-label {
width: 150px;
}
.layui-input-block {
margin-left: 180px;
}
</style>
@endsection
@section('page-content')
<form class="layui-form" action="">
<input type="hidden" id="myid" data-type="0">
<div class="layui-form-item">
<label class="layui-form-label">期限</label>
<div class="layui-input-block">
<input type="text" name="day" id="day" required autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">利息</label>
<div class="layui-input-block">
<input type="text" name="rate" id="rate" required autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小值</label>
<div class="layui-input-block">
<input type="text" name="save_min" id="save_min" autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
let url=window.location.href;
if(url.indexOf("c_id")!=-1){
let id=url.substr(url.indexOf("c_id")+5);
$("#myid").attr('data-type',0)
$("#myid").val(id);
}else if(url.indexOf("id")!=-1){
let arr=url.substr(url.indexOf("?")+1);
arr=arr.split("&");
for(let i=0;i<arr.length;i++){
if(i==0){
$("#myid").attr('data-type',1)
$("#myid").val(arr[i].split("=")[1]);
}
if(i==1){
$("#day").val(arr[i].split("=")[1]);
}
if(i==2){
$("#rate").val(arr[i].split("=")[1]);
}
if(i==3){
$("#save_min").val(arr[i].split("=")[1]);
}
}
}
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
if($("#myid").attr('data-type')==0){
data['currency_id']=$("#myid").val();
$.ajax({
url:'{{url('admin/currency/add_deposit_config')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
}
if($("#myid").attr('data-type')==1){
data['id']=$("#myid").val();
$.ajax({
url:'{{url('admin/currency/edit_deposit_config')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
}
});
});
</script>
@endsection
@@ -0,0 +1,201 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
p.percent {
text-align: right;
margin-right: 10px;
}
p.percent::after {
content: '%';
}
</style>
@endsection
@section('page-content')
<table id="demo" lay-filter="test"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs" lay-event="edit#">编辑</a>
@{{# if (d.is_legal == 1) { }}
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="match">交易对</a>
@{{# } }}
</script>
<script type="text/html" id="toolbar">
<!-- <div>
<button class="layui-btn layui-btn-sm layui-btn-primary" lay-event="add"> <i class="layui-icon layui-icon-add-1"></i> 添加</button>
</div>-->
</script>
<script type="text/html" id="switchTpl">
<input type="checkbox" name="is_display" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isDisplay" @{{ d.is_display == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="micro">
<input type="checkbox" name="is_micro" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isMicro" disabled @{{ d.is_micro == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="match">
<input type="checkbox" name="is_match" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isMatch" disabled @{{ d.is_match == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="legal">
<input type="checkbox" name="is_legal" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isLegal" disabled @{{ d.is_legal == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="lever">
<input type="checkbox" name="is_lever" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isLever" disabled @{{ d.is_lever == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="insurancable">
<input type="checkbox" name="insurancable" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="isInsurancable" @{{ d.insurancable == 1 ? 'checked' : '' }}>
</script>
<script type="text/html" id="is_display">
<input type="checkbox" name="is_display" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="is_display" @{{ d.is_display == 1 ? 'checked' : '' }}>
</script>
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
table.render({
elem: '#demo'
,toolbar: '#toolbar'
,url: '{{url('admin/currency_listclass')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'id', width:60, sort: true}
,{field: 'sort', title: '排序', width:90}
,{field: 'pcname', title: '名称', width:90}
,{field:'is_display', title:'显示', width:85, templet: '#is_display', unresize: true}
//,{field: 'create_time', title: '添加时间', width:160}
,{title:'操作',width:340,toolbar: '#barDemo'}
]]
});
//监听是否显示操作
form.on('switch(isDisplay)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/currency_class')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
//监听是否购买保险操作
form.on('switch(isInsurancable)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/is_insurancable')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
//是否开启币币划转
form.on('switch(is_display)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/class_transfer')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
table.on('toolbar(test)', function (obj) {
switch (obj.event) {
case 'add':
layer.open({
title: '添加分类'
,type: 2
,content: '/admin/currency_addclass'
,area: ['480px', '650px']
});
break;
default:
break;
}
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/currency_delclass')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑币种','{{url('admin/currency_add')}}?id='+data.id);
} else if (obj.event == 'execute'){
layer.confirm('确定执行上币脚本?', function(index){
$.ajax({
url:'{{url('admin/currency_execute')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
layer.msg(res.message);
}
});
});
} else if (obj.event == 'match') {
layer.open({
title: '交易对管理'
,type: 2
,content: '/admin/currency/match/' + data.id
,area: ['960px', '600px']
});
} else if(obj.event == 'deposit'){
layer.open({
title: '质押管理'
,type: 2
,content: '/admin/currency/deposit/' + data.id
,area: ['960px', '600px']
});
}
});
//监听提交
form.on('submit(mobile_search)', function(data){
var account_number = data.field.account_number;
table.reload('mobileSearch',{
where:{account_number:account_number},
page: {curr: 1} //重新从第一页开始
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,220 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<div style="display:none">
<div class="layui-form-item">
<label class="layui-form-label">期限</label>
<div class="layui-input-block">
<input type="text" id="day" name="day" autocomplete="off" placeholder="" class="layui-input" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">利息</label>
<div class="layui-input-block">
<input type="text" name="total_interest_rate" autocomplete="off" placeholder="" class="layui-input" id="total_interest_rate">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最小值</label>
<div class="layui-input-block">
<input type="text" name="save_min" id="save_min" autocomplete="off" placeholder="" class="layui-input">
</div>
</div>
</div>
<table id="data_table" lay-filter="data_table"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a>
</script>
<script>
let url=window.location.href;
let configId="";
if(url.indexOf("id")!=-1){
configId=url.substr(url.lastIndexOf("/")+1);
}
var currency_id = {{ Request::route('currency_id') }}
layui.use(['table', 'layer', 'form'], function() {
var table = layui.table
,layer = layui.layer
,form = layui.form
,$ = layui.$
var data_table = table.render({
elem: '#data_table'
,url: '/admin/currency/deposit/'+ currency_id +'/list'
,height: 'full'
,toolbar: 'default'
,page: true
,cols: [[
{type: 'radio'}
,{field: 'id', title: 'id', width: 70}
,{field: 'name', title: '交易币', width: 80}
,{field: 'day', title: '期限', width: 80}
,{field: 'total_interest_rate', title: '利率(%)', width: 80}
,{field: 'save_min', title: '最少存币数', width: 80}
,{field: 'created_at', title: '创建时间', width: 180}
// ,{fixed: 'right', title: '操作', width: 190, align: 'center', toolbar: '#barDemo'}
]]
});
table.on('tool(data_table)', function (obj) {
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'delete') { //删除
layer.confirm('真的要删除吗?', function (index) {
//向服务端发送删除指令
$.ajax({
url: "admin//currency/delete_deposit_config",
type: 'post',
dataType: 'json',
data: {id: data.id},
success: function (res) {
if (res.type == 'ok') {
obj.del(); //删除对应行(tr)的DOM结构,并更新缓存
layer.close(index);
} else {
layer.close(index);
layer.alert(res.message);
}
}
});
});
}
// console.log(obj)
// var id = 0
// ,selected = table.checkStatus('data_table')
// switch (obj.event) {
// case 'add':
// layer.open({
// title: '添加交易对'
// ,type: 2
// ,content: '/admin/currency/add_config?id=' + configId
// ,area: ['600px', '380px']
// });
// break;
// case 'update':
// if (selected.data.length != 1) {
// layer.msg('只能编辑一个交易对');
// return false;
// }
// id = selected.data[0].id
// layer.open({
// title: '编辑交易对'
// ,type: 2
// ,content: '/admin/currency/edit_config/' + id
// ,area: ['600px', '380px']
// });
// break;
// case 'delete':
// if (selected.data.length != 1) {
// layer.msg('选择一个交易对才能删除');
// return false;
// }
// id = selected.data[0].id
// layer.confirm('真的确定要删除吗?', function (index) {
// $.ajax({
// url: '/admin/currency/delete_config/' + id
// ,type: 'GET'
// ,success: function (res) {
// layer.msg(res.message, {
// time: 2000
// ,end: function () {
// if (res.type == 'ok') {
// data_table.reload();
// }
// }
// });
// }
// ,error: function (res) {
// }
// });
// });
// break;
// default:
// break;
// }
});
table.on('toolbar(data_table)', function (obj) {
console.log(obj)
var id = 0
,selected = table.checkStatus('data_table')
switch (obj.event) {
case 'add':
layer.open({
title: '添加锁仓挖矿'
,type: 2
,content: '/admin/currency/deposit_config?c_id='+currency_id
,area: ['600px', '380px']
});
break;
case 'update':
if (selected.data.length != 1) {
layer.msg('只能编辑一个锁仓挖矿');
return false;
}
id = selected.data[0].id
var data=selected.data[0];
layer.open({
title: '编辑锁仓挖矿'
,type: 2
,content: '/admin/currency/deposit_config?id=' + id+"&day="+data.day+"&rate="+data.total_interest_rate+"&save_min="+data.save_min
,area: ['600px', '380px']
});
break;
case 'delete':
if (selected.data.length != 1) {
layer.msg('选择一个锁仓挖矿才能删除');
return false;
}
id = selected.data[0].id
layer.confirm('真的确定要删除吗?', function (index) {
$.ajax({
url: "/admin/currency/delete_deposit_config",
type: 'post',
dataType: 'json',
data: {id: id},
success: function (res) {
layer.msg(res.message, {
time: 2000
,end: function () {
if (res.type == 'ok') {
data_table.reload();
}
}
});
}
});
});
// $.ajax({
// url: 'admin/currency/delete_deposit_config'
// ,type: 'post'
// data: {id: data.id},
// ,success: function (res) {
// layer.msg(res.message, {
// time: 2000
// ,end: function () {
// if (res.type == 'ok') {
// data_table.reload();
// }
// }
// });
// }
// ,error: function (res) {
// }
// });
break;
default:
break;
}
});
});
</script>
@endsection

Some files were not shown because too many files have changed in this diff Show More