Commit 62a2f8d0 authored by twj's avatar twj

期权提现

parent c16957ce
<?php <?php
namespace app\apicom\home; namespace app\apicom\home;
use app\money\model\EsopPlan as EsopPlanModel; use app\money\model\EsopPlan as EsopPlanModel;
use app\money\model\EsopPlanRecord as EsopPlanRecordModel; use app\money\model\EsopPlanRecord as EsopPlanRecordModel;
use think\db; use think\db;
use think\Request; use think\Request;
use think\helper\Hash;
class Esop extends Common class Esop extends Common
{ {
...@@ -12,18 +14,133 @@ class Esop extends Common ...@@ -12,18 +14,133 @@ class Esop extends Common
* 期权计划 * 期权计划
* @return [type] [description] * @return [type] [description]
*/ */
public function getEsopPlanList(){ public function getEsopPlanList()
if(!MID) ajaxmsg('登陆后才能进行查询',0); {
if (!MID) ajaxmsg('登陆后才能进行查询', 0);
// 获取查询条件 // 获取查询条件
$map = $this->getMap(); $map = $this->getMap();
$map['mid']=MID; $map['mid'] = MID;
$order = 'id desc'; $order = 'id desc';
$page = intval($this->request->param("page")); $page = intval($this->request->param("page"));
$page = $page ? $page : 1; $page = $page ? $page : 1;
$offset = $page; $offset = $page;
// 数据列表 // 数据列表
$data_list = EsopPlanModel::getEsopPlanList($map,"*", $order,$offset); $data_list = EsopPlanModel::getEsopPlanList($map, $order, $offset);
foreach ($data_list as $k => $v) {
$data_list[$k]['release_account'] = bcdiv($v['release_account'], 100, 2);
$data_list[$k]['plan_account'] = bcdiv($v['plan_account'], 100, 2);
$data_list[$k]['remain_account'] = bcdiv($v['remain_account'], 100, 2);
$data_list[$k]['account'] = bcdiv($v['account'], 100, 2);
}
ajaxmsg('数据列表', 1, $data_list);
}
/**
* 期权计划
* @return [type] [description]
*/
public function getEsopPlanRecordList()
{
if (!MID) ajaxmsg('登陆后才能进行查询', 0);
// 获取查询条件
$map = $this->getMap();
$map['mid'] = MID;
$order = 'id desc';
//期权计划ID
$esop_plan_id = intval($this->request->param("esop_plan_id"));
if ($esop_plan_id) {
$map['esop_plan_id'] = $esop_plan_id;
}
$page = intval($this->request->param("page"));
$page = $page ? $page : 1;
$offset = $page;
// 数据列表
$data_list = EsopPlanRecordModel::getEsopPlanRecordList($map, $order, $offset, 15);
foreach ($data_list as $k => $v) {
$data_list[$k]['affect'] = bcdiv($v['affect'], 100, 2);
$data_list[$k]['surplus'] = bcdiv($v['surplus'], 100, 2);
$data_list[$k]['type'] = getTypeNameForEsop($v['type']);
$data_list[$k]['stock'] = [];
if ($v['stock_trust_id']) {
}
}
ajaxmsg('数据列表',1,$data_list); ajaxmsg('数据列表', 1, $data_list);
}
/**
* 查询可提现期权
* @return [type] [description]
*/
public function getEsopPlanForWithdraw()
{
if (!MID) ajaxmsg('登陆后才能进行查询', 0);
// 获取查询条件
$map = $this->getMap();
$map['mid'] = MID;
$order = 'id desc';
// 数据列表
$data_list = EsopPlanModel::view('esop_plan ep', 'id,account')
->view('stock_list', 'title', 'stock_list.id=ep.stock_id', 'left')
->where(['ep.account' => ['>', 0], 'ep.mid' => MID, 'ep.status' => 1])
->select();
foreach ($data_list as $k => $v) {
$data_list[$k]['account'] = bcdiv($v['account'], 100, 2);
}
ajaxmsg('数据列表', 1, $data_list);
}
/*
* 操作提现操作
*/
public function doWithdraw()
{
$data = [];
//银行卡id
$data['bank_id'] = $this->request->param('bank_id');
//用户id
$data['mid'] = MID;
//提现申请金额
$data['money'] = $this->request->param("money");
//期权计划id
$data['esop_plan_id'] = $this->request->param("esop_plan_id");
if (!$data['esop_plan_id']) {
ajaxmsg('请选择要提现的期权!', 0);
}
//提现规则基本校验
$result = $this->validate($data, "Withdraw.create");
if (true !== $result) {
ajaxmsg($result, 0);
}
if ($data['money'] < 0) {
ajaxmsg('提现金额错误!', 0);
}
//校验当前期权计划余额
$money_res = EsopPlanModel::where(['id' => $data['esop_plan_id']])->find();
if (empty($money_res['account']) || ($money_res['account'] <= 0)) {
ajaxmsg('查询账户资金出错!', 0);
}
if (isset($money_res['account']) && $money_res['account'] < $data['money']) {
ajaxmsg('提现金额已经大于可用余额!', 0);
}
//查询是否已申请过提现,一次只能有一笔提现
$withdraw_info = Db::name('money_withdraw')
->where(['mid' => MID])
->where(['status' => 0])
->find();
if (!empty($withdraw_info)) {
ajaxmsg('您已有提现申请,请耐心等待审核。', 0);
}
//校验支付密码
$c = Db::name('member')->where(["id" => MID])->find();
if (Hash::check((string)$data['paywd'], $c['paywd'])) {
$res = EsopPlanModel::esopWithdraw($data);
} else {
ajaxmsg('支付密码错误', 0);
}
if ($res['status']) {
ajaxmsg('提现申请已提交,请耐心等待审核', 1);
} else {
ajaxmsg('提现申请提交失败', 0);
}
} }
} }
...@@ -4,6 +4,10 @@ namespace app\money\model; ...@@ -4,6 +4,10 @@ namespace app\money\model;
use think\helper\Hash; use think\helper\Hash;
use app\money\model\Role as RoleModel; use app\money\model\Role as RoleModel;
use app\money\model\EsopPlanRecord as EsopPlanRecordModel;
use app\money\model\Withdraw as MoneyWithdrawModel;
use app\member\model\Bank as BankModel;
use app\member\model\MemberMessage as MemberMessageModel;
use think\model; use think\model;
use think\Db; use think\Db;
...@@ -36,23 +40,70 @@ class EsopPlan extends Model ...@@ -36,23 +40,70 @@ class EsopPlan extends Model
*获取期权计划列表 *获取期权计划列表
* @author 2024-06-20 * @author 2024-06-20
*/ */
public static function getEsopPlanList($where = [], $field = '*', $order = 'id asc', $offset, $pagesize = 15) public static function getEsopPlanList($where = [], $order = 'id asc', $offset, $pagesize = 15)
{ {
$esop_plan_list = self::view('esop_plan ep', true) $esop_plan_list = self::view('esop_plan ep', 'id,mid,account,plan_account,release_account,remain_account,release_time')
->view("stock_list sl", 'title,code', 'stock_list.id=ep.stock_id', 'left') ->view("stock_list sl", 'title,code', 'sl.id=ep.stock_id', 'left')
->field(["CONCAT(ROUND(release_account / plan_account * 100, 2), ' % ')" => 'accuracy']) ->field(["CONCAT(ROUND(release_account / plan_account * 100, 2), ' % ')" => 'accuracy'])
->field(["FROM_UNIXTIME(create_time,'%Y-%m-%d %T')" => 'create_time']) ->field(["FROM_UNIXTIME(ep.create_time,'%Y-%m-%d %T')" => 'create_time'])
->where($where) ->where($where)
->field($field)
->order($order) ->order($order)
->page($offset, $pagesize) ->page($offset, $pagesize)
->select() ->select();
->each(function ($item, $key) {
$item->account = money_convert($item->account);
$item->plan_account = money_convert($item->plan_account);
$item->remain_account = money_convert($item->remain_account);
$item->release_account = money_convert($item->release_account);
});;
return $esop_plan_list; return $esop_plan_list;
} }
/**
* 期权提现
*/
public static function esopWithdraw($parameter)
{
$bank_id = $parameter['bank_id'];
$bank = BankModel::bankInfo($bank_id); //银行卡信息
$where1['id'] = $parameter['mid']; //会员ID
$where1['status'] = 1; //会员状态
$names = Db::name('member')->field('name')->where($where1)->find(); //用户基本信息
//组合提现记录
$data['bank'] = $bank['bank'] . "|" . $bank['card'] . '|' . $bank['province'] . $bank['city'] . $bank['branch'] . "|" . $names['name'];
$data['mid'] = $parameter['mid'];
$data['money'] = $parameter['money'] * 100;
$data['order_no'] = 'tx' . generate_rand_str(10, 3);
$data['create_time'] = time();
$data['create_ip'] = get_client_ip(1);
Db::startTrans();
//查看当前期权的信息
$money_info = self::where(['id' => $data['esop_plan_id']])->find();
//计算余额
$account = bcsub($money_info['account'], $data['money']);
try {
$res1 = MoneyWithdrawModel::create($data);
//写入期权变化明细表
$arr = [
'mid' => $parameter['mid'],
'stock_id' => $parameter['stock_id'],
'esop_plan_id' => $parameter['esop_plan_id'],
'affect' => $parameter['money'],
'surplus' => $account,
'heatos' => -1,
'type' => 3,
'info' => "期权申请提现,金额:" . $parameter['money'],
'create_time' => time(),
'create_ip' => get_client_ip(1)
];
$res2 = EsopPlanRecordModel::create($arr);
//更新期权信息
$res3 = self::where('id', $parameter['esop_plan_id'])->update('account', $account);
if ($res1 && $res2 && $res3) {
Db::commit();
return ['status' => 1, 'message' => '提交成功'];
} else {
Db::rollback();
return ['status' => 0, 'message' => '提交失败'];
}
} catch (\Exception $e) {
Db::rollback();
return ['status' => 0, 'message' => '数据异常'];
}
}
} }
...@@ -34,15 +34,15 @@ class EsopPlanRecord extends Model ...@@ -34,15 +34,15 @@ class EsopPlanRecord extends Model
*获取期权明细记录列表 *获取期权明细记录列表
* @author 2024-06-20 * @author 2024-06-20
*/ */
public static function getEsopPlanRecordList($where = [], $field = '*', $order = 'id asc') public static function getEsopPlanRecordList($where = [], $order = 'id asc',$offset,$pagesize)
{ {
$esop_plan_list = self::view('esop_plan_record epr', true) $esop_plan_record_list = self::view('esop_plan_record epr', "id,mid,stock_id,stock_trust_id,affect,surplus,heatos,type,info")
->view("stock_list sl", 'title,code', 'stock_list.id=ep.stock_id', 'left') ->view("stock_list sl", 'title,code', 'sl.id=epr.stock_id', 'left')
->view("esop_plan ep", 'title,code', 'stock_list.id=ep.stock_id', 'left') ->field(["FROM_UNIXTIME(epr.create_time,'%Y-%m-%d %T')" => 'create_time'])
->where($where) ->where($where)
->field($field)
->order($order) ->order($order)
->paginate(); ->page($offset, $pagesize)
return $esop_plan_list; ->select();
return $esop_plan_record_list;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment