|
@@ -91,9 +91,6 @@ class Wallet extends Model
|
|
|
$point = $accountType == 'jewel' ? 1 : 0;
|
|
|
bcscale($point);
|
|
|
|
|
|
- //钱包名称
|
|
|
- $wallet_name = $this->getwalletname($accountType);
|
|
|
-
|
|
|
//检测0
|
|
|
$number = floatval( $number );
|
|
|
if( $number == 0 )
|
|
@@ -114,30 +111,127 @@ class Wallet extends Model
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- //之前的余额
|
|
|
- $wallet_before = $wallet[$accountType];
|
|
|
+ //扣除金币单独方法
|
|
|
+ if(bccomp($number, 0) === -1 && $accountType == 'gold'){
|
|
|
+ //两个钱包的合,是否足够
|
|
|
+ $wallet_sum = bcadd($wallet['gold'],$wallet['jewel']);
|
|
|
+ if(bccomp(bcadd($wallet_sum, $number), 0) === -1)
|
|
|
+ {
|
|
|
+ $result['msg'] = '余额不足!';
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //gold不够,
|
|
|
+ if(bccomp(bcadd($wallet['gold'], $number), 0) === -1)
|
|
|
+ {
|
|
|
+ //gold全扣
|
|
|
+ //钱币操作
|
|
|
+ $data = array();
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
+ $data['log_type'] = $logtype;
|
|
|
+ $data['money_type'] = $accountType;
|
|
|
+ $data['before'] = $wallet['gold'];
|
|
|
+ $data['change_value'] = $wallet['gold'];
|
|
|
+ $data['remain'] = 0;
|
|
|
+ $data['table'] = $table;
|
|
|
+ $data['table_id'] = $table_id;
|
|
|
+ $data['remark'] = $remark;
|
|
|
+ $data['createtime'] = time();
|
|
|
+ $data['updatetime'] = time();
|
|
|
+
|
|
|
+ $result = $this->wallet_do($user_id,$accountType,$data,$result);
|
|
|
+ if($result['status'] == false){
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //jewel扣剩余部分
|
|
|
+ $jewel_change = bcadd($number,$wallet['gold']);
|
|
|
+ $jewel_after = bcadd($wallet['jewel'],$jewel_change);
|
|
|
+ //钱币操作
|
|
|
+ $data = array();
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
+ $data['log_type'] = $logtype;
|
|
|
+ $data['money_type'] = $accountType;
|
|
|
+ $data['before'] = $wallet['jewel'];
|
|
|
+ $data['change_value'] = $jewel_change;
|
|
|
+ $data['remain'] = $jewel_after;
|
|
|
+ $data['table'] = $table;
|
|
|
+ $data['table_id'] = $table_id;
|
|
|
+ $data['remark'] = $remark;
|
|
|
+ $data['createtime'] = time();
|
|
|
+ $data['updatetime'] = time();
|
|
|
+
|
|
|
+ $result = $this->wallet_do($user_id,$accountType,$data,$result);
|
|
|
+ if($result['status'] == false){
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ }else{
|
|
|
+ //gold自己扣
|
|
|
+
|
|
|
+ //之前的余额
|
|
|
+ $wallet_before = $wallet[$accountType];
|
|
|
+ //钱币操作
|
|
|
+ $data = array();
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
+ $data['log_type'] = $logtype;
|
|
|
+ $data['money_type'] = $accountType;
|
|
|
+ $data['before'] = $wallet_before;
|
|
|
+ $data['change_value'] = $number;
|
|
|
+ $data['remain'] = bcadd($wallet_before, $number);
|
|
|
+ $data['table'] = $table;
|
|
|
+ $data['table_id'] = $table_id;
|
|
|
+ $data['remark'] = $remark;
|
|
|
+ $data['createtime'] = time();
|
|
|
+ $data['updatetime'] = time();
|
|
|
+
|
|
|
+ $result = $this->wallet_do($user_id,$accountType,$data,$result);
|
|
|
+ if($result['status'] == false){
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return $result;
|
|
|
+
|
|
|
+ }else{
|
|
|
+ //gold的增加,jewel的增、减
|
|
|
+
|
|
|
+ //之前的余额
|
|
|
+ $wallet_before = $wallet[$accountType];
|
|
|
+
|
|
|
+ //正常方法
|
|
|
+ if(bccomp(bcadd($wallet_before, $number), 0) === -1)
|
|
|
+ {
|
|
|
+ $result['msg'] = '余额不足!';
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //钱币操作
|
|
|
+ $data = array();
|
|
|
+ $data['user_id'] = $user_id;
|
|
|
+ $data['log_type'] = $logtype;
|
|
|
+ $data['money_type'] = $accountType;
|
|
|
+ $data['before'] = $wallet_before;
|
|
|
+ $data['change_value'] = $number;
|
|
|
+ $data['remain'] = bcadd($wallet_before, $number);
|
|
|
+ $data['table'] = $table;
|
|
|
+ $data['table_id'] = $table_id;
|
|
|
+ $data['remark'] = $remark;
|
|
|
+ $data['createtime'] = time();
|
|
|
+ $data['updatetime'] = time();
|
|
|
+
|
|
|
+ $result = $this->wallet_do($user_id,$accountType,$data,$result);
|
|
|
+ if($result['status'] == false){
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
|
|
|
- //检查是否够扣
|
|
|
-
|
|
|
- if(bccomp(bcadd($wallet_before, $number), 0) === -1)
|
|
|
- {
|
|
|
- $result['msg'] = $wallet_name.'余额不足!';
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- //钱币记录
|
|
|
- $data = array();
|
|
|
- $data['user_id'] = $user_id;
|
|
|
- $data['log_type'] = $logtype;
|
|
|
- $data['money_type'] = $accountType;
|
|
|
- $data['before'] = $wallet_before;
|
|
|
- $data['change_value'] = $number;
|
|
|
- $data['remain'] = bcadd($wallet_before, $number);
|
|
|
- $data['table'] = $table;
|
|
|
- $data['table_id'] = $table_id;
|
|
|
- $data['remark'] = $remark;
|
|
|
- $data['createtime'] = time();
|
|
|
- $data['updatetime'] = time();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private function wallet_do($user_id,$accountType,$data,$result){
|
|
|
|
|
|
$log_table = 'user_gold_log';
|
|
|
$rs2_id = Db::name($log_table)->insertGetId($data);
|
|
@@ -158,7 +252,6 @@ class Wallet extends Model
|
|
|
$result['log_id'] = $rs2_id;
|
|
|
|
|
|
return $result;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|