|
@@ -4,7 +4,10 @@
|
|
|
namespace app\admin\controller;
|
|
|
use app\admin\BaseController;
|
|
|
use app\admin\model\ReportCode;use think\App;
|
|
|
-use think\facade\Db;use think\queue\command\Retry;
|
|
|
+use think\Exception;
|
|
|
+use think\facade\Db;
|
|
|
+use think\facade\Validate;
|
|
|
+use think\queue\command\Retry;
|
|
|
|
|
|
class OrderPay extends BaseController{
|
|
|
public function __construct(App $app) {parent::__construct($app);}
|
|
@@ -273,7 +276,7 @@ class OrderPay extends BaseController{
|
|
|
if($companyNo!==""){
|
|
|
$condition[]=["companyNo","=",$companyNo];
|
|
|
}
|
|
|
- $relaComNo= isset($post['relaComNo'])&&$post['relaComNo']!="" ? trim($post['relaComNo']) :"";
|
|
|
+ $relaComNo= isset($this->post['relaComNo'])&&$this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :"";
|
|
|
if($relaComNo!=""){
|
|
|
$condition[]=["companyNo","=",$relaComNo];
|
|
|
}
|
|
@@ -331,9 +334,9 @@ class OrderPay extends BaseController{
|
|
|
if($companyNo!==""){
|
|
|
$condition[]=["a.companyNo","=",$companyNo];
|
|
|
}
|
|
|
- $relaComNo= isset($post['relaComNo'])&&$post['relaComNo']!="" ? trim($post['relaComNo']) :"";
|
|
|
+ $relaComNo= isset($this->post['relaComNo'])&&$this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :"";
|
|
|
if($relaComNo!=""){
|
|
|
- $condition[]=["companyNo","=",$relaComNo];
|
|
|
+ $condition[]=["a.companyNo","=",$relaComNo];
|
|
|
}
|
|
|
if($tradNo!==""){
|
|
|
$condition[]=["a.tradNo","like","%$tradNo%"];
|
|
@@ -352,10 +355,10 @@ class OrderPay extends BaseController{
|
|
|
$condition[]=["b.trade_out","like","%$name%"];
|
|
|
}
|
|
|
if($start!=""){
|
|
|
- $condition[]=["a.add_time",">=",date("Y-m-d 00:00:00",strtotime($start))];
|
|
|
+ $condition[]=["a.addtime",">=",date("Y-m-d 00:00:00",strtotime($start))];
|
|
|
}
|
|
|
if($end!=""){
|
|
|
- $condition[]=["a.add_time","<=",date("Y-m-d 23:59:59",strtotime($start))];
|
|
|
+ $condition[]=["a.addtime","<=",date("Y-m-d 23:59:59",strtotime($start))];
|
|
|
}
|
|
|
if($status!==""){
|
|
|
$condition[]=["a.status","=",$status];
|
|
@@ -522,7 +525,7 @@ class OrderPay extends BaseController{
|
|
|
if($companyNo!==""){
|
|
|
$condition[]=["a.companyNo","=",$companyNo];
|
|
|
}
|
|
|
- $relaComNo= isset($post['relaComNo'])&&$post['relaComNo']!="" ? trim($post['relaComNo']) :"";
|
|
|
+ $relaComNo= isset($this->post['relaComNo'])&&$this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :"";
|
|
|
if($relaComNo!=""){
|
|
|
$condition[]=["a.companyNo","=",$relaComNo];
|
|
|
}
|
|
@@ -933,4 +936,145 @@ class OrderPay extends BaseController{
|
|
|
return app_show(1004, $e->getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //批量认领资金,跟订单相关
|
|
|
+ public function importTradeByBatchOrderCode()
|
|
|
+ {
|
|
|
+
|
|
|
+ $list = $this->request->post('list', [], 'trim');
|
|
|
+
|
|
|
+ $val = Validate::rule(['list|导入数据' => 'require|array|max:100']);
|
|
|
+
|
|
|
+ if (!$val->check(['list' => $list])) return error_show(1004, $val->getError());
|
|
|
+
|
|
|
+ $company = $tradNos = $orderCodes = $assoc_insert_data = $OrderCodeToAssocNo = $OrderCodeToLogNo = [];
|
|
|
+
|
|
|
+ $val_item = Validate::rule([
|
|
|
+ 'companyNo|卖出方公司编号' => 'require|max:255',
|
|
|
+ 'tradNo|资金编号' => 'require|max:255',
|
|
|
+ 'orderCode|订单编号' => 'require|max:255',
|
|
|
+ 'trad_fee|认领资金' => 'require|float|gt:0|max:999999999.99',
|
|
|
+ ]);
|
|
|
+ foreach ($list as $key => $value) {
|
|
|
+ if (!$val_item->check($value)) return error_show(1004, $val_item->getError());
|
|
|
+
|
|
|
+ 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'];
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断绑定公司
|
|
|
+ $companyNo = Db::name('user_role')
|
|
|
+ ->where(['is_del' => 0, 'status' => 1, 'uid' => $this->uid])
|
|
|
+ ->whereIn('companyNo', $company)
|
|
|
+ ->column('companyNo');
|
|
|
+
|
|
|
+ $tmp = array_diff($company, $companyNo);//二者取差集
|
|
|
+ if(!empty($tmp)) return error_show(1004,'不能操作以下公司数据:'.implode(',',$tmp));
|
|
|
+
|
|
|
+ Db::startTrans();
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ $date = date('Y-m-d H:i:s');
|
|
|
+ $all_trade = Db::name('trade')
|
|
|
+ ->where('is_del', 0)
|
|
|
+ ->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'])
|
|
|
+ ->update([
|
|
|
+ 'balance' => $balance,
|
|
|
+ 'used_fee' => bcadd($all_trade[$tradNo]['used_fee'], $fee, 2),
|
|
|
+ 'status' => $balance == 0 ? 3 : 2,
|
|
|
+ 'updatetime' => $date,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ 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,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'])
|
|
|
+ ->update([
|
|
|
+ 'pay_fee' => bcadd($all_qrd_info[$orderCode]['pay_fee'], $fee, 2),
|
|
|
+ 'wpay_fee' => bcsub($all_qrd_info[$orderCode]['wpay_fee'], $fee, 2),
|
|
|
+ 'pay_status' => 2,
|
|
|
+ 'status' => 1,
|
|
|
+ 'updatetime' => $date
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $OrderCodeToAssocNo[$orderCode] = makeNo('AS');
|
|
|
+ $OrderCodeToLogNo[$orderCode] = makeNo('TRC');
|
|
|
+
|
|
|
+ $assoc_insert_data[] = [
|
|
|
+ 'assocNo' => $OrderCodeToAssocNo[$orderCode],
|
|
|
+ 'apply_id' => $this->uid,
|
|
|
+ 'apply_name' => $this->uname,
|
|
|
+ '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,
|
|
|
+ 'status' => 1,
|
|
|
+ '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'],
|
|
|
+ 'apply_id' => $this->uid,
|
|
|
+ 'apply_name' => $this->uname,
|
|
|
+ 'trade_time' => $all_trade[$item['tradNo']]['trade_time'],
|
|
|
+ 'total_fee' => $item['trad_fee'],
|
|
|
+ 'status' => 2,//2审核通过
|
|
|
+ 'addtime' => $date,
|
|
|
+ 'updatetime' => $date,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0, '批量认领资金成功');
|
|
|
+ } catch (Exception $exception) {
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1004, '批量认领资金失败,' . $exception->getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|