|
@@ -987,12 +987,12 @@ class OrderPay extends BaseController{
|
|
if (!$val_item->check($value)) return error_show(1004, $val_item->getError());
|
|
if (!$val_item->check($value)) return error_show(1004, $val_item->getError());
|
|
|
|
|
|
if (!isset($company[$value['companyNo']])) $company[$value['companyNo']] = $value['companyNo'];
|
|
if (!isset($company[$value['companyNo']])) $company[$value['companyNo']] = $value['companyNo'];
|
|
-
|
|
|
|
- if (isset($tradNos[$value['tradNo']])) $tradNos[$value['tradNo']] = bcadd($tradNos[$value['tradNo']], $value['trad_fee'], 2);
|
|
|
|
- else $tradNos[$value['tradNo']] = $value['trad_fee'];
|
|
|
|
-
|
|
|
|
- if (isset($orderCodes[$value['orderCode']])) $orderCodes[$value['orderCode']] = bcadd($orderCodes[$value['orderCode']], $value['trad_fee'], 2);
|
|
|
|
- else $orderCodes[$value['orderCode']] = $value['trad_fee'];
|
|
|
|
|
|
+//
|
|
|
|
+// if (isset($tradNos[$value['tradNo']])) $tradNos[$value['tradNo']] = bcadd($tradNos[$value['tradNo']], $value['trad_fee'], 2);
|
|
|
|
+// else $tradNos[$value['tradNo']] = $value['trad_fee'];
|
|
|
|
+//
|
|
|
|
+// if (isset($orderCodes[$value['orderCode']])) $orderCodes[$value['orderCode']] = bcadd($orderCodes[$value['orderCode']], $value['trad_fee'], 2);
|
|
|
|
+// else $orderCodes[$value['orderCode']] = $value['trad_fee'];
|
|
}
|
|
}
|
|
|
|
|
|
//判断绑定公司
|
|
//判断绑定公司
|
|
@@ -1007,91 +1007,81 @@ class OrderPay extends BaseController{
|
|
Db::startTrans();
|
|
Db::startTrans();
|
|
|
|
|
|
try {
|
|
try {
|
|
-
|
|
|
|
- $date = date('Y-m-d H:i:s');
|
|
|
|
- $all_trade = Db::name('trade')
|
|
|
|
|
|
+ $i=0;
|
|
|
|
+ //批量资金认领
|
|
|
|
+ foreach ($list as $key=>$value){
|
|
|
|
+ //资金明细判断
|
|
|
|
+ $all_trade = Db::name('trade')
|
|
->where('is_del', 0)
|
|
->where('is_del', 0)
|
|
->whereIn('status', [1, 2])
|
|
->whereIn('status', [1, 2])
|
|
- ->whereIn('tradNo', array_keys($tradNos))
|
|
|
|
- ->column('id,balance,used_fee,companyNo,trade_time', 'tradNo');
|
|
|
|
-
|
|
|
|
- foreach ($tradNos as $tradNo => $fee) {
|
|
|
|
- if (!isset($all_trade[$tradNo])) throw new Exception($tradNo . '未找到资金信息');
|
|
|
|
- if ($all_trade[$tradNo]['balance'] < $fee) throw new Exception($tradNo . '资金余额不足核销');
|
|
|
|
- $balance = bcsub($all_trade[$tradNo]['balance'], $fee, 2);
|
|
|
|
- Db::name('trade')
|
|
|
|
- ->where('id', $all_trade[$tradNo]['id'])
|
|
|
|
|
|
+ ->where('tradNo', $value['tradNo'])
|
|
|
|
+ ->field('id,balance,used_fee,companyNo,trade_time')
|
|
|
|
+ ->findOrEmpty();
|
|
|
|
+ if(empty($all_trade))throw new Exception("{$value['tradNo']}资金未找到数据");
|
|
|
|
+ if($all_trade['balance']<$value['trad_fee'])throw new Exception("{$value['tradNo']}资金余额不足");
|
|
|
|
+ //订单明细判断
|
|
|
|
+ $all_order=Db::name('qrd_info')
|
|
|
|
+ ->where('is_del', 0)
|
|
|
|
+ ->whereIn('sequenceNo',$value['orderCode'])
|
|
|
|
+ ->field('id,customerNo,status,pay_fee,apay_fee,wpay_fee,pay_status,totalPrice')
|
|
|
|
+ ->findOrEmpty();
|
|
|
|
+ if(empty($all_order))throw new Exception("{$value['orderCode']}销售单未找到数据");
|
|
|
|
+ if($all_trade['wpay_fee']<$value['trad_fee'])throw new Exception("{$value['orderCode']}销售单未付款金额不足核销金额");
|
|
|
|
+ $OrderCodeToAssocNo = substr(makeNo('AS'), 0, -3).str_pad($i,3,'0',STR_PAD_LEFT);
|
|
|
|
+ $OrderCodeToLogNo = substr(makeNo('TRC'), 0, -3).str_pad($i,3,'0',STR_PAD_LEFT);
|
|
|
|
+ //资金数据更新处理
|
|
|
|
+ $balance = bcsub($all_trade['balance'], $value['trad_fee'], 2);
|
|
|
|
+ $tradeUp=Db::name('trade')
|
|
|
|
+ ->where($all_trade)
|
|
->update([
|
|
->update([
|
|
'balance' => $balance,
|
|
'balance' => $balance,
|
|
- 'used_fee' => bcadd($all_trade[$tradNo]['used_fee'], $fee, 2),
|
|
|
|
|
|
+ 'used_fee' => bcadd($all_trade['used_fee'], $value['trad_fee'], 2),
|
|
'status' => $balance == 0 ? 3 : 2,
|
|
'status' => $balance == 0 ? 3 : 2,
|
|
- 'updatetime' => $date,
|
|
|
|
|
|
+ 'updatetime' =>date("Y-m-d H:i:s"),
|
|
]);
|
|
]);
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- Db::name('trade_pool')
|
|
|
|
- ->where(['is_del' => 0, 'status' => 1])
|
|
|
|
- ->whereIn('tradNo', array_keys($tradNos))
|
|
|
|
- ->update([
|
|
|
|
- 'status' => 2,
|
|
|
|
- 'updatetime' => $date
|
|
|
|
- ]);
|
|
|
|
-
|
|
|
|
- $all_qrd_info = Db::name('qrd_info')
|
|
|
|
- ->where('is_del', 0)
|
|
|
|
- ->whereIn('sequenceNo', array_keys($orderCodes))
|
|
|
|
- ->column('id,customerNo,status,pay_fee,apay_fee,wpay_fee,pay_status,totalPrice', 'sequenceNo');
|
|
|
|
- foreach ($orderCodes as $orderCode => $fee) {
|
|
|
|
- if (!isset($all_qrd_info[$orderCode])) throw new Exception($orderCode . '销售单信息未找到');
|
|
|
|
- if ($all_qrd_info[$orderCode]['wpay_fee'] < $fee) throw new Exception($orderCode . '销售单未付款金额不足核销金额');
|
|
|
|
- Db::name('qrd_info')
|
|
|
|
- ->where('id', $all_qrd_info[$orderCode]['id'])
|
|
|
|
|
|
+ if($tradeUp==false ) throw new Exception("{$value['tradNo']}资金更新失败");
|
|
|
|
+ //订单数据更新处理
|
|
|
|
+ $orderUp=Db::name('qrd_info')
|
|
|
|
+ ->where($all_order)
|
|
->update([
|
|
->update([
|
|
- 'apay_fee' => bcadd($all_qrd_info[$orderCode]['apay_fee'], $fee, 2),
|
|
|
|
- 'wpay_fee' => bcsub($all_qrd_info[$orderCode]['wpay_fee'], $fee, 2),
|
|
|
|
- 'pay_status' => 2,
|
|
|
|
|
|
+ 'apay_fee' => bcadd($all_order['apay_fee'], $value['trad_fee'], 2),
|
|
|
|
+ 'wpay_fee' => bcsub($all_order['wpay_fee'], $value['trad_fee'], 2),
|
|
|
|
+ 'pay_status' => bcsub($all_order['wpay_fee'], $value['trad_fee'], 2)==0 &&$all_order['pay_fee']==0? 3:2,
|
|
'status' => 1,
|
|
'status' => 1,
|
|
- 'updatetime' => $date
|
|
|
|
|
|
+ 'updatetime' => date("Y-m-d H:i:s")
|
|
]);
|
|
]);
|
|
-
|
|
|
|
- $OrderCodeToAssocNo[$orderCode] = makeNo('AS');
|
|
|
|
- $OrderCodeToLogNo[$orderCode] = makeNo('TRC');
|
|
|
|
-
|
|
|
|
- $assoc_insert_data[] = [
|
|
|
|
- 'assocNo' => $OrderCodeToAssocNo[$orderCode],
|
|
|
|
|
|
+ if($orderUp==false ) throw new Exception("{$value['orderCode']}销售单更新失败");
|
|
|
|
+ //资金订单关联数据
|
|
|
|
+ $assoc_insert_data[]=[
|
|
|
|
+ 'assocNo' => $OrderCodeToAssocNo,
|
|
'apply_id' => $this->uid,
|
|
'apply_id' => $this->uid,
|
|
'apply_name' => $this->uname,
|
|
'apply_name' => $this->uname,
|
|
'type' => 2,
|
|
'type' => 2,
|
|
- 'orderCode' => $orderCode,
|
|
|
|
- 'customerNo' => $all_qrd_info[$orderCode]['customerNo'],
|
|
|
|
- 'viceCode' => $OrderCodeToLogNo[$orderCode],
|
|
|
|
- 'order_total' => $all_qrd_info[$orderCode]['totalPrice'],
|
|
|
|
- 'vice_total' => $fee,//这个地方存疑,貌似下方cancel_fee字段以订单为维度,但是该字段以tradeNo为维度,此处订单与tradeNo无关联
|
|
|
|
- 'cancel_fee' => $fee,
|
|
|
|
|
|
+ 'orderCode' => $value['orderCode'],
|
|
|
|
+ 'customerNo' => $all_order['customerNo'],
|
|
|
|
+ 'viceCode' => $OrderCodeToLogNo,
|
|
|
|
+ 'order_total' => $all_order['totalPrice'],
|
|
|
|
+ 'vice_total' => $value['trad_fee'],
|
|
|
|
+ 'cancel_fee' => $value['trad_fee'],
|
|
'status' => 2,//认领通过
|
|
'status' => 2,//认领通过
|
|
- 'addtime' => $date,
|
|
|
|
- 'updatetime' => $date,
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- foreach ($list as $item) {
|
|
|
|
- $trade_pool_insert_data[] = [
|
|
|
|
- 'logNo' => $OrderCodeToLogNo[$item['orderCode']],
|
|
|
|
- 'tradNo' => $item['tradNo'],
|
|
|
|
- 'companyNo' => $item['companyNo'],
|
|
|
|
- 'customerNo' => $all_qrd_info[$item['orderCode']]['customerNo'],
|
|
|
|
|
|
+ 'addtime' => date("Y-m-d H:i:s"),
|
|
|
|
+ 'updatetime' => date("Y-m-d H:i:s"),
|
|
|
|
+ ];
|
|
|
|
+ //资金认领数据
|
|
|
|
+ $trade_pool_insert_data[]=[
|
|
|
|
+ 'logNo' => $OrderCodeToLogNo,
|
|
|
|
+ 'tradNo' => $value['tradNo'],
|
|
|
|
+ 'companyNo' => $value['companyNo'],
|
|
|
|
+ 'customerNo' => $all_order['customerNo'],
|
|
'apply_id' => $this->uid,
|
|
'apply_id' => $this->uid,
|
|
'apply_name' => $this->uname,
|
|
'apply_name' => $this->uname,
|
|
- 'trade_time' => $all_trade[$item['tradNo']]['trade_time'],
|
|
|
|
- 'total_fee' => $item['trad_fee'],
|
|
|
|
|
|
+ 'trade_time' => $all_trade['trade_time'],
|
|
|
|
+ 'total_fee' => $value['trad_fee'],
|
|
'status' => 2,//2审核通过
|
|
'status' => 2,//2审核通过
|
|
- 'addtime' => $date,
|
|
|
|
- 'updatetime' => $date,
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ 'addtime' => date("Y-m-d H:i:s"),
|
|
|
|
+ 'updatetime' => date("Y-m-d H:i:s"),
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
if ($assoc_insert_data) Db::name('assoc')->insertAll($assoc_insert_data);
|
|
if ($assoc_insert_data) Db::name('assoc')->insertAll($assoc_insert_data);
|
|
if ($trade_pool_insert_data) Db::name('trade_pool')->insertAll($trade_pool_insert_data);
|
|
if ($trade_pool_insert_data) Db::name('trade_pool')->insertAll($trade_pool_insert_data);
|
|
|
|
|