会长提现--更新

master
chenxiaojun 5 years ago
parent 35ea788ed0
commit 0758062837

@ -1038,7 +1038,90 @@ public function auto_rrdae(){
//会长提现 //会长提现
public function promoteWithdraw() public function promoteWithdraw()
{ {
$promoteMap['level'] = 1; $map['level'] = 1;
$promotes = M('promote', 'tab_')->where(); $map['ver_status'] = 1;
$promotes = M('promote', 'tab_')->field('id, account, chain')->where($map)->select();
$success = 0;
$error_withdraw = 0;
$error_spend = 0;
$error_balance = 0;
if (!empty($promotes)) {
foreach ($promotes as $promote) {
$result = $this->promoteWithdrawByPromote($promote);
switch ($result) {
case -2:
$error_balance++;
break;
case -1:
$error_spend++;
break;
case 0:
$error_withdraw++;
break;
case 1:
$success++;
break;
}
}
}
echo "success{$success} error_withdraw{$error_withdraw} error_spend{$error_spend} error_balance{$error_balance}";
}
private function promoteWithdrawByPromote($promote)
{
$promoteMap['chain'] = ['like', "{$promote['chain']}{$promote['id']}/%"];
$promoteIds = M('promote', 'tab_')->where($promoteMap)->getField('id', true);
$promoteIds[] = $promote['id'];
$settlementEndTime = strtotime(date('Y-m-d')) - 1;
$spendMap['pay_status'] = 1;
$spendMap['selle_status'] = 0;
$spendMap['promote_id'] = ['in', $promoteIds];
$spendMap['pay_time'] = ['elt', $settlementEndTime];
$spendModel = M('spend', 'tab_');
$balance = $spendModel->field("sum(if(selle_ratio > 0, pay_amount * selle_ratio, 0)) as balance")
->where($spendMap)
->find()['balance'];
$balance = bcdiv($balance, 100, 2);
if ($balance < 100) {
return -2;//余额不足
}
$thisTime = time();
$add['sum_money'] = $balance;
$add['promote_id'] = $promote['id'];
$add['promote_account'] = $promote['account'];
$add['create_time'] = $thisTime;
$add['status'] = 0;
$add['widthdraw_number'] = D('withdraw')->produceWithdrawNumber();
$add['settlement_begin_time'] = 0;
$add['settlement_end_time'] = $settlementEndTime;
$add['spend_ids'] = '';
$add['op_id'] = 0;
$add['op_type'] = 3;
$add['last_op_id'] = $add['op_id'];
$add['last_op_type'] = 3;
M()->startTrans();//开启事物
$withdrawId = D('withdraw')->add($add);
if (!$withdrawId) {
M()->rollback();//事物回滚
return 0;//提现失败
}
$save['selle_status'] = 1;
$save['selle_time'] = $thisTime;
$save['withdraw_id'] = $withdrawId;
$res = $spendModel->where($spendMap)->save($save);
if ($res === false) {
D('withdraw')->delete($withdrawId);
M()->rollback();//事物回滚
return -1;
}
M()->commit();//事物提交
return 1;
} }
} }

@ -13,7 +13,7 @@ use Admin\Model\WithdrawModel;
class QueryController extends ThinkController class QueryController extends ThinkController
{ {
//生成提现单号 //生成提现单号
private function produceWithdrawNumber() public function produceWithdrawNumber()
{ {
$prefix = 'WD_'; $prefix = 'WD_';
$number = ''; $number = '';
@ -148,7 +148,7 @@ class QueryController extends ThinkController
$records = M('withdraw', 'tab_')->field('id, promote_account, widthdraw_number, sum_money, op_id, op_type, last_op_id, last_op_type, settlement_begin_time, settlement_end_time, create_time, status, respond') $records = M('withdraw', 'tab_')->field('id, promote_account, widthdraw_number, sum_money, op_id, op_type, last_op_id, last_op_type, settlement_begin_time, settlement_end_time, create_time, status, respond')
->where($map) ->where($map)
->order('') ->order('create_time desc')
->page($page, $row) ->page($page, $row)
->select(); ->select();
$count = M('withdraw', 'tab_')->field('id, promote_account, widthdraw_number, sum_money, op_id, op_type, last_op_id, last_op_type, settlement_begin_time, settlement_end_time, create_time, status, respond') $count = M('withdraw', 'tab_')->field('id, promote_account, widthdraw_number, sum_money, op_id, op_type, last_op_id, last_op_type, settlement_begin_time, settlement_end_time, create_time, status, respond')
@ -247,7 +247,7 @@ class QueryController extends ThinkController
$add['promote_account'] = $promote['account']; $add['promote_account'] = $promote['account'];
$add['create_time'] = $thisTime; $add['create_time'] = $thisTime;
$add['status'] = 0; $add['status'] = 0;
$add['widthdraw_number'] = $this->produceWithdrawNumber(); $add['widthdraw_number'] = D('withdraw')->produceWithdrawNumber();
$add['settlement_begin_time'] = $beginTime; $add['settlement_begin_time'] = $beginTime;
$add['settlement_end_time'] = $endTime; $add['settlement_end_time'] = $endTime;
$add['spend_ids'] = ''; $add['spend_ids'] = '';

@ -17,6 +17,7 @@ class WithdrawModel extends Model{
const OP_TYPE_PROMOTE = 1; const OP_TYPE_PROMOTE = 1;
const OP_TYPE_ADMIN = 2; const OP_TYPE_ADMIN = 2;
const OP_TYPE_AUTO = 3;
/** /**
* 构造函数 * 构造函数
@ -34,6 +35,7 @@ class WithdrawModel extends Model{
public static $opTypeList = [ public static $opTypeList = [
self::OP_TYPE_PROMOTE => '推广员', self::OP_TYPE_PROMOTE => '推广员',
self::OP_TYPE_ADMIN => '管理员', self::OP_TYPE_ADMIN => '管理员',
self::OP_TYPE_AUTO => '自动',
]; ];
/* /*
@ -107,4 +109,20 @@ class WithdrawModel extends Model{
} }
//生成提现单号
public function produceWithdrawNumber()
{
$prefix = 'WD_';
$number = '';
while (true) {
$randomNum = rand(10, 99);
$number = $prefix . time() . $randomNum;
$map['widthdraw_number'] = $number;
$res = $this->where($map)->getField('id');
if (!$res) {
break;
}
}
return $number;
}
} }

@ -191,16 +191,20 @@
<td> <td>
<if condition="$record.op_type eq 1"> <if condition="$record.op_type eq 1">
{:get_promote_name($record['op_id'])} {:get_promote_name($record['op_id'])}
<else /> <elseif condition="$record.op_type eq 2"/>
{:getAdminNickname($record['op_id'])} {:getAdminNickname($record['op_id'])}
<else/>
自动
</if> </if>
</td> </td>
<td>{:getPromoteWithdrawOpType($record['op_type'])}</td> <td>{:getPromoteWithdrawOpType($record['op_type'])}</td>
<td> <td>
<if condition="$record.last_op_type eq 1"> <if condition="$record.last_op_type eq 1">
{:get_promote_name($record['last_op_id'])} {:get_promote_name($record['last_op_id'])}
<else /> <elseif condition="$record.last_op_type eq 2"/>
{:getAdminNickname($record['last_op_id'])} {:getAdminNickname($record['last_op_id'])}
<else/>
自动
</if> </if>
</td> </td>
<td>{:getPromoteWithdrawOpType($record['last_op_type'])}</td> <td>{:getPromoteWithdrawOpType($record['last_op_type'])}</td>

@ -159,16 +159,20 @@
<td> <td>
<if condition="$data.op_type eq 1"> <if condition="$data.op_type eq 1">
{:get_promote_name($data['op_id'])} {:get_promote_name($data['op_id'])}
<else /> <elseif condition="$data.op_type eq 2"/>
{:getAdminNickname($data['op_id'])} {:getAdminNickname($data['op_id'])}
<else/>
自动
</if> </if>
</td> </td>
<td>{:getPromoteWithdrawOpType($data['op_type'])}</td> <td>{:getPromoteWithdrawOpType($data['op_type'])}</td>
<td> <td>
<if condition="$data.last_op_type eq 1"> <if condition="$data.last_op_type eq 1">
{:get_promote_name($data['last_op_id'])} {:get_promote_name($data['last_op_id'])}
<else /> <elseif condition="$data.last_op_type eq 2"/>
{:getAdminNickname($data['last_op_id'])} {:getAdminNickname($data['last_op_id'])}
<else/>
自动
</if> </if>
</td> </td>
<td>{:getPromoteWithdrawOpType($data['last_op_type'])}</td> <td>{:getPromoteWithdrawOpType($data['last_op_type'])}</td>

@ -924,7 +924,7 @@ ADD COLUMN `settlement_begin_time` int(10) NOT NULL DEFAULT 0 COMMENT '结算开
ALTER TABLE `tab_withdraw` ALTER TABLE `tab_withdraw`
ADD COLUMN `op_id` int(11) NOT NULL DEFAULT 0 COMMENT '操作id'; ADD COLUMN `op_id` int(11) NOT NULL DEFAULT 0 COMMENT '操作id';
ALTER TABLE `tab_withdraw` ALTER TABLE `tab_withdraw`
ADD COLUMN `op_type` tinyint(3) NOT NULL DEFAULT 1 COMMENT '操作人1-推广员 2-管理员'; ADD COLUMN `op_type` tinyint(3) NOT NULL DEFAULT 1 COMMENT '操作人1-推广员 2-管理员 3-自动';
ALTER TABLE `tab_withdraw` ALTER TABLE `tab_withdraw`
ADD COLUMN `last_op_id` int(11) NOT NULL DEFAULT 0 COMMENT '最后操作人id', ADD COLUMN `last_op_id` int(11) NOT NULL DEFAULT 0 COMMENT '最后操作人id',
ADD COLUMN `last_op_type` tinyint(3) NOT NULL DEFAULT 1 COMMENT '最后操作人1-推广员 2-管理员'; ADD COLUMN `last_op_type` tinyint(3) NOT NULL DEFAULT 1 COMMENT '最后操作人1-推广员 2-管理员 3-自动';
Loading…
Cancel
Save