|
|
@@ -105,15 +105,7 @@ 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"}
|
|
|
@@ -124,9 +116,9 @@ class Order extends Api
|
|
|
$val_arr = explode(',', $limit_task['which_start']);
|
|
|
if(in_array($user['task_num'] + 1, $val_arr)){
|
|
|
//从这单开始卡单
|
|
|
- if(!($user['freeze'] > 0)){
|
|
|
- //冻结现有余额,并
|
|
|
- $freeze = Users::where('id', $user['id'])->update(['freeze' => -$goods_info['price']]);
|
|
|
+ if(!($user['freeze'] < 0)){
|
|
|
+ //冻结金额不小于0时,说明未卡单,则进行卡单操作:向用户展示余额时,显示 负的订单金额
|
|
|
+ $freeze = true;
|
|
|
}
|
|
|
$task_income = $task_income * $limit_task['income_multiple'];//单次收益
|
|
|
$amount_mini = $limit_task['min_amount'];
|
|
|
@@ -134,25 +126,41 @@ 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'],
|
|
|
- 'title' => $goods_info['title'],
|
|
|
+ //'title' => $goods_info['title'],
|
|
|
'amount' => $goods_info['price'],
|
|
|
'bonus' => $goods_info['price'] * $task_income,
|
|
|
'user_type' => $user['user_type'],
|
|
|
'status' => OrderModel::Pending,
|
|
|
];
|
|
|
|
|
|
+
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
+ if($freeze){
|
|
|
+ //卡单操作,不扣款,只冻结订单金额
|
|
|
+ $freeze = Users::where('id', $user['id'])->update(['freeze' => -$goods_info['price']]);
|
|
|
+ $order_data['status'] = OrderModel::Default;
|
|
|
+ }else{
|
|
|
+ //正常订单 账变
|
|
|
+ (new MoneyLog())->change($user['id'], -$goods_info['price'], MoneyLog::Pay, '', '');
|
|
|
+ }
|
|
|
// 创建订单
|
|
|
OrderModel::create($order_data);
|
|
|
|
|
|
- //账变
|
|
|
- //(new MoneyLog())->change($user['id'], -$goods_info['price'], MoneyLog::Pay, '', '');
|
|
|
-
|
|
|
// 提交事务
|
|
|
Db::commit();
|
|
|
} catch (Exception $e) {
|
|
|
@@ -193,6 +201,10 @@ class Order extends Api
|
|
|
$this->error(__('余额不足'));
|
|
|
}
|
|
|
|
|
|
+ if($user['freeze'] < 0){
|
|
|
+ $this->error(__('余额不足'));
|
|
|
+ }
|
|
|
+
|
|
|
if($order_info['status'] == OrderModel::Success){
|
|
|
$this->success('');
|
|
|
}
|
|
|
@@ -200,18 +212,25 @@ class Order extends Api
|
|
|
// 启动事务
|
|
|
Db::startTrans();
|
|
|
try {
|
|
|
- // 创建订单
|
|
|
+ // 更新订单
|
|
|
(new OrderModel)
|
|
|
->where('id', $order_info['id'])
|
|
|
->update([
|
|
|
'status' => OrderModel::Success
|
|
|
]);
|
|
|
|
|
|
- //账变
|
|
|
- (new MoneyLog())->change($user['id'], $order_info['amount'], MoneyLog::PayBack, '', '');
|
|
|
- //订单佣金
|
|
|
- (new MoneyLog())->change($user['id'], $order_info['bonus'], MoneyLog::OrderBonus, '', '');
|
|
|
- //累积佣金和任务次数
|
|
|
+ if($order_info['status'] == OrderModel::Default){
|
|
|
+ //卡单订单不扣款,不返款,直接发佣金
|
|
|
+ //订单佣金
|
|
|
+ (new MoneyLog())->change($user['id'], $order_info['bonus'], MoneyLog::OrderBonus, '', '卡单订单');
|
|
|
+ }else{
|
|
|
+ //账变
|
|
|
+ (new MoneyLog())->change($user['id'], $order_info['amount'], MoneyLog::PayBack, '', '');
|
|
|
+ //订单佣金
|
|
|
+ (new MoneyLog())->change($user['id'], $order_info['bonus'], MoneyLog::OrderBonus, '', '');
|
|
|
+ }
|
|
|
+
|
|
|
+ //累积佣金和任务次数
|
|
|
(new Users())
|
|
|
->where('id', $user['id'])
|
|
|
->update([
|