123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- <?php
- namespace App\Modules\Finance\Models;
- use App\Libs\PayHelper;
- use App\Modules\Finance\Services\BankService;
- use App\Modules\Finance\Services\BatchPaymentService;
- use App\Modules\Finance\Services\CashAccountService;
- use App\Modules\Finance\Services\PaymentService;
- use App\Modules\Finance\Services\WithdrawCashService;
- use App\Modules\Manage\Services\ManageService;
- use Illuminate\Database\Eloquent\Model;
- use DB;
- class BatchPayments extends Model
- {
- protected $table = 'batch_payments';
- protected $fillable = ['id','amount','amount_person', 'remark', 'pay_time','pay_merchant_source','trade_no', 'status',
- 'is_company','pay_merchant_source_msg','pay_merchant_source_result','bank_account','account_name','account_bank',
- 'channel_user_id','check_user_id','check_user_name','serial_number'];
- public static function addBatchPayment($param){
- return self::create($param);
- }
- public static function getBatchPayment($statusIn,$is_all){
- if(is_numeric($statusIn)) {
- $status = WithdrawCashService::getBatchWithdrawCashStatusStrList($statusIn);
- }
- $obj = self::leftjoin('channel_users','channel_users.id','=','batch_payments.channel_user_id')
- ->leftjoin('companies','companies.id','=','channel_users.company_id')
- ->select([DB::raw('batch_payments.*'),'companies.name as company_name'])
- ->where('status',$status);
- if($is_all){
- return $obj->get();
- }
- return $obj->paginate();
- }
- public static function getById($id) {
- return self::where('id',$id)->first();
- }
- public static function makeThreeSourcePayment($userId, $batch_payment_id, $amount, $remark) {
-
- $batch_payment = self::getById($batch_payment_id);
- if(empty($batch_payment)) {
- return false;
- }
- $payType = '';
-
- $payType = "LIANLIANPAY";
- if($payType) {
- try {
-
- $transactionSerialNumber = date('YmdHis')."_".($batch_payment->channel_user_id);
-
-
- $bankCode = '';
- $bankName = $batch_payment->account_bank;
- $bankAccountNO = $batch_payment->bank_account;
- $bankAccountName = $batch_payment->account_name;
- $payAmount = $amount;
- $summaryPay = "summary";
- $remarkPay = "remark";
-
-
- $isCompany = $batch_payment->is_company;
- $pay_id = $batch_payment->id;
- DB::beginTransaction();
- try{
-
- $batch_payment->serial_number=$transactionSerialNumber;
- $batch_payment->status=WithdrawCashService::getWithdrawCashStatusStr(21);
- $savePayment=$batch_payment->save();
- if($savePayment) {
-
-
-
-
-
- $withdraws = WithdrawCashService::getByBatchPaymentId($pay_id);
- \Log::info($withdraws);
- foreach ($withdraws as $withdraw){
- WithdrawCashService::updateWithdrawCashStatus($withdraw->id, $userId, 21, $remark, $transactionSerialNumber);
- }
-
- $resultPayData = ['code'=>1,'http_result_data'=>['123']];
- \Log::info('lianlianpay_ret:'.$transactionSerialNumber.':'.json_encode($resultPayData));
- $resultDataMsg = $remark;
- if(!empty($resultPayData) && !empty($resultPayData['msg'])) {
- $resultDataMsg = $resultDataMsg."_【".$resultPayData['msg']."】";
- }
- if(!empty($resultPayData) && $resultPayData['code'] == 1) {
- $resultDataHttpDataMsg = json_encode($resultPayData['http_result_data']);
- self::updatePaymentStatus($pay_id, WithdrawCashService::getWithdrawCashStatusStr(21), $resultDataHttpDataMsg, $resultDataMsg);
- } else {
- $resultDataHttpDataMsg = json_encode($resultPayData['http_result_data']);
- foreach ($withdraws as $withdraw) {
- WithdrawCashService::updateWithdrawCashStatus($withdraw->id, $userId, 41, $resultDataMsg, $transactionSerialNumber);
- }
- self::updatePaymentStatus($savePayment['id'], WithdrawCashService::getWithdrawCashStatusStr(41), $resultDataHttpDataMsg, $resultDataMsg);
- }
- }
- DB::commit();
- } catch (\Exception $e){
- Log::error($e->getMessage());
- DB::rollback();
-
- }
- } catch (\Exception $e){
-
- }
- return true;
- } else {
- return false;
- }
- }
- public static function updatePaymentStatus($id, $status = '', $pay_merchant_source_msg, $pay_merchant_source_result) {
- $dataPayment = self::find($id);
- if(!empty($dataPayment)) {
- if($status) {
- $dataPayment['status'] = $status;
- }
- $dataPayment['pay_merchant_source_msg'] = $pay_merchant_source_msg;
- $dataPayment['pay_merchant_source_result'] = $pay_merchant_source_result;
- $dataPayment = $dataPayment->save();
- }
- return $dataPayment;
- }
- public static function getBatchPaymentPaying(){
- $res = self::where('status',WithdrawCashService::getWithdrawCashStatusStr(21))->get();
- return $res;
- }
- public static function updateWithdrawCashStatus($id, $userId = '', $statusIn, $remark='', $serialNumber='') {
-
-
- $withdrawCashs = WithdrawCash::where('batch_payment_id', $id)->get();
-
- try{
-
- foreach ($withdrawCashs as $withdrawCash){
- if(!empty($withdrawCash) && is_numeric($statusIn)) {
- if(WithdrawCashService::isWithdrawCashStatusPaymentIngStr($withdrawCash->status)) {
-
- } else {
- if(WithdrawCashService::isEditWithdrawCashStatus($id)) {
- return $withdrawCash;
- }
- }
- $userName = "";
- if($userId) {
- $manage = ManageService::getById($userId);
- if(!empty($manage)) {
- $userName = $manage['nickname'];
- }
- }
- $statusStr = WithdrawCashService::getWithdrawCashStatusStr($statusIn);
- if(empty($statusStr)) {
- } else {
- if($statusStr) {
- $withdrawCash->status = $statusStr;
- }
- }
- if(WithdrawCashService::isWithdrawCashStatusCodeSuccess($statusIn)) {
-
- $financialStat = FinancialStat::getByDistributionChannel($withdrawCash->distribution_channel_id);
-
- $financialStat->accumulative_withdrawal_amount = (float)($financialStat->accumulative_withdrawal_amount) + (float)($withdrawCash->amount);
-
- $financialStat->withdraw_pending_amount = (float)($financialStat->withdraw_pending_amount) - (float)$withdrawCash->amount;
- $financialStat->save();
-
-
-
-
-
-
-
-
- }
- if($userId) {
- $withdrawCash->check_user_id = $userId;
- }
- if($userName) {
- $withdrawCash->check_user_name = $userName;
- }
- if($remark) {
- $withdrawCash->remark = $remark;
- }
- if($serialNumber) {
- if(strpos($withdrawCash->serial_number, $serialNumber) !== false) {
-
- } else {
- $serialNumber = ($withdrawCash->serial_number).",".$serialNumber;
- }
- $withdrawCash->serial_number = $serialNumber;
- }
- $withdrawCash->save();
- }
- }
-
- print_r('commited');
- }catch (\Exception $exception){
-
- \Log::error('pay_query_failed:'.($exception->getMessege()));
-
- print_r('pay_query_failed:'.($exception->getMessage()));
- }
- }
- }
|