|
|
@@ -34,7 +34,7 @@ class Order extends Api
|
|
|
$data['task_income'] = (new Config())->getValue('task_income');//单次任务收益
|
|
|
|
|
|
$data['task_num'] = $user['task_num'];//今日已做任务
|
|
|
- $data['balance'] = $user['balance'];
|
|
|
+ $data['balance'] = $user['freeze'] < 0 ? $user['freeze']: $user['balance'];
|
|
|
$data['bonus_sum'] = $user['bonus_sum'];
|
|
|
$data['bonus_today'] = (new OrderModel())
|
|
|
->where('user_id', $user['id'])
|
|
|
@@ -76,21 +76,17 @@ class Order extends Api
|
|
|
if($user['open_task'] != 1){
|
|
|
$this->error(__('暂停抢单'));
|
|
|
}
|
|
|
-
|
|
|
- if(!($user['freeze'] < 0)){
|
|
|
- //冻结金额《0时,需要充值
|
|
|
+ if(bccomp($user['freeze'], 0, 2) ===-1){
|
|
|
+ //冻结金额< 0时,需要充值
|
|
|
$this->error(__('余额不足'));
|
|
|
}
|
|
|
-
|
|
|
if(!($user['balance'] > 0)){
|
|
|
$this->error(__('余额不足'));
|
|
|
}
|
|
|
-
|
|
|
$day_tasks_num = (new Config())->getValue('day_tasks_num');//单日任务数
|
|
|
$task_income = (new Config())->getValue('task_income');//单次收益
|
|
|
$amount_mini = $user['balance'] * 0.4;
|
|
|
$amount_max = $user['balance'] * 0.8;
|
|
|
-
|
|
|
if($user['task_num'] >= $day_tasks_num){
|
|
|
if(!empty($user['task_last_time']) && (date('md',time()) != date('md', $user['task_last_time']))){
|
|
|
//当日接单量 >= 任务数时,最后一次接单时间和当前不是同一天,则重置当日接单量
|
|
|
@@ -102,7 +98,6 @@ class Order extends Api
|
|
|
$this->error(__('今日任务已完成'));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
$check_order = (new OrderModel)
|
|
|
->where('user_id', $user['id'])
|
|
|
->where('status', '<', OrderModel::Success)
|
|
|
@@ -110,7 +105,16 @@ class Order extends Api
|
|
|
if($check_order){
|
|
|
$this->error(__('有未完成订单'));
|
|
|
}
|
|
|
-
|
|
|
+ $goods_info = (new Goods())
|
|
|
+ ->fetchSql(false)
|
|
|
+ ->whereBetween('price', [$amount_mini, $amount_max])
|
|
|
+ ->where('status', 1)
|
|
|
+ ->orderRaw("RAND()")
|
|
|
+ ->find();
|
|
|
+ if(empty($goods_info)){
|
|
|
+ $this->error(__('未匹配到商品'));
|
|
|
+ }
|
|
|
+ $freeze = false; //是否有冻结金额
|
|
|
if($user['is_limit_task'] == 1){
|
|
|
//卡单 limit_task 字段值为json {"which_start":"7","min_amount":"100","max_amount":"1000","income_multiple":"2"}
|
|
|
$limit_task = json_decode($user['limit_task'], true);
|
|
|
@@ -122,6 +126,7 @@ class Order extends Api
|
|
|
//从这单开始卡单
|
|
|
if(!($user['freeze'] > 0)){
|
|
|
//冻结现有余额,并
|
|
|
+ $freeze = Users::where('id', $user['id'])->update(['freeze' => -$goods_info['price']]);
|
|
|
}
|
|
|
$task_income = $task_income * $limit_task['income_multiple'];//单次收益
|
|
|
$amount_mini = $limit_task['min_amount'];
|
|
|
@@ -129,16 +134,6 @@ class Order extends Api
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $goods_info = (new Goods())
|
|
|
- ->fetchSql(false)
|
|
|
- ->whereBetween('price', [$amount_mini, $amount_max])
|
|
|
- ->where('status', 1)
|
|
|
- ->orderRaw("RAND()")
|
|
|
- ->find();
|
|
|
- if(empty($goods_info)){
|
|
|
- $this->error(__('未匹配到商品'));
|
|
|
- }
|
|
|
-
|
|
|
$order_data = [
|
|
|
'order_no' => 'O' . $user['id'] . time(),
|
|
|
'user_id' => $user['id'],
|
|
|
@@ -156,7 +151,7 @@ class Order extends Api
|
|
|
OrderModel::create($order_data);
|
|
|
|
|
|
//账变
|
|
|
- (new MoneyLog())->change($user['id'], -$goods_info['price'], MoneyLog::Pay, '', '');
|
|
|
+ //(new MoneyLog())->change($user['id'], -$goods_info['price'], MoneyLog::Pay, '', '');
|
|
|
|
|
|
// 提交事务
|
|
|
Db::commit();
|
|
|
@@ -165,12 +160,10 @@ class Order extends Api
|
|
|
Db::rollback();
|
|
|
$this->error($e->getMessage());
|
|
|
}
|
|
|
-
|
|
|
unset($order_data['user_type']);
|
|
|
unset($order_data['status']);
|
|
|
-
|
|
|
- $order_data['img_url'] = $goods_info['img_url'];
|
|
|
-
|
|
|
+ $order_data['amount'] = $freeze?(-$goods_info['price']):$goods_info['price'];
|
|
|
+ $order_data['img_url']= $goods_info['img_url'];
|
|
|
$this->success('', $order_data);
|
|
|
}
|
|
|
|