You've already forked qlg.tsgz.moe
							
							Init Repo
This commit is contained in:
		
							
								
								
									
										321
									
								
								hyhproject/common/model/Settlements.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										321
									
								
								hyhproject/common/model/Settlements.php
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,321 @@ | ||||
| <?php | ||||
| namespace wstmart\common\model; | ||||
| use think\Db; | ||||
| /** | ||||
|  * ============================================================================ | ||||
|  * 结算类 | ||||
|  */ | ||||
| class Settlements extends Base | ||||
| { | ||||
|     /** | ||||
|      * 即时计算 | ||||
|      */ | ||||
|     public function speedySettlement($orderId) | ||||
|     { | ||||
|         $order = model('common/orders')->get($orderId); | ||||
|         $shops = model('common/shops')->get($order->shopId); | ||||
|         if (empty($shops)) return WSTReturn('结算失败,商家不存在'); | ||||
|         //获取优惠款 价格*优惠率 | ||||
|         $m = Model('common/Table'); | ||||
|         $m->setTable('order_goods'); | ||||
|         $orderGoodsList = $m->getList(['orderId'=>$orderId],'goodsPrice,goodsNum,freight,discountRate'); | ||||
|         $discountMoney = 0;//优惠款 | ||||
|         foreach ($orderGoodsList as &$v) { | ||||
|             //$discountMoney += ($v['goodsPrice']*$v['goodsNum'] + $v['freight']) * ($v['discountRate']*0.01);//优惠款 | ||||
|             $discountMoney += ($v['goodsPrice']*$v['goodsNum']) * ($v['discountRate']*0.01);//优惠款 | ||||
|         } | ||||
|         $discountMoney = round($discountMoney,2); | ||||
|         //加入快代付值 | ||||
|         $fastScale = dataConf('fastPayInSaleScale'); | ||||
|         $fastNum = round($discountMoney * ($fastScale*0.01),5); | ||||
|         Model('SysSummary')->addToPayFast($orderId,$fastNum,$fastScale); | ||||
|         //获取产品额 | ||||
|         $totalMoney = $order->realTotalMoney;//产品额 | ||||
|         if(2 != $order->goodsType){//助微吧商品不给购户券值 | ||||
|             //  购户的所得分配 | ||||
|             // 1,购户获得预获产品券为产品额的100% buyerPreProductInProductScale | ||||
|             // 2,购户获得预获优惠券为优惠款的50% buyerPreCoupousInSaleScale | ||||
|             // 3,获得预获产品券为被扣手续费的100% buyerPreProductInHandlingFeeScale | ||||
|             // 4,获得预获产品券为被扣税费的100% buyerPreProductInTaxFeeScale | ||||
|             // 5,获得预获产品券为被扣手续费的100% buyerPreProductInProductHandlingFeeScale | ||||
|             // 6,获得预获产品券为被扣税费的100% buyerPreProductInProductTaxFeeScale | ||||
|  | ||||
|             $buyerPreProductNum = round(($totalMoney + $order->deliverMoney)* (dataConf('buyerPreProductInProductScale')*0.01),2);//1 | ||||
|             $buyerPreCoupousNum = round($discountMoney * (dataConf('buyerPreCoupousInSaleScale')*0.01),2);//2 | ||||
|             $buyerPreProductNum +=  round($order->productHandlingFee * (dataConf('buyerPreProductInHandlingFeeScale')*0.01),2);//3 | ||||
|             $buyerPreProductNum +=  round($order->productTaxFee * (dataConf('buyerPreProductInTaxFeeScale')*0.01),2);//4 | ||||
|             $buyerPreProductNum +=  round($order->couponsHandlingFee * (dataConf('buyerPreProductInProductHandlingFeeScale')*0.01),2);//5 | ||||
|             $buyerPreProductNum +=  round($order->couponsTaxFee * (dataConf('buyerPreProductInProductTaxFeeScale')*0.01),2);//6 | ||||
|             if($buyerPreProductNum >= 0.01 || $buyerPreCoupousNum>=0.01){ | ||||
|                 Model('common/UserVouchers')->insertVouchersNotice($order->userId,$orderId,$buyerPreProductNum,$buyerPreCoupousNum,'交易订单【'.$order->orderNo.'】购户购物所得'); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|          | ||||
|         //  商户的所得分配 | ||||
|         // 1,商户获得预获产品券占优惠款比例 100% sellerPreProductInProductScale | ||||
|         // 2,商户获得预获优惠券占优惠款比例 100% sellerPreCoupousInSaleScale | ||||
|         // 3,优惠款-产品-优惠券-旺旺券,大于0是商户需付公司的钱,小于0是公司需付给商户的钱,即旺旺券 | ||||
|         // $discountMoney-$order->productNum-$order->couponsNum-$order->wangNum-$order->moneyNum | ||||
|         $sellerPreProductNum = round($discountMoney * (dataConf('sellerPreProductInProductScale')*0.01),2);//1 | ||||
|         $sellerPreCoupousNum = round($discountMoney * (dataConf('sellerPreCoupousInSaleScale')*0.01),2);//2 | ||||
|         if($sellerPreProductNum >= 0.01 || $sellerPreCoupousNum>=0.01){ | ||||
|            Model('common/UserVouchers')->insertVouchersNotice($shops['userId'],$orderId,$sellerPreProductNum,$sellerPreCoupousNum,'交易订单【'.$order->orderNo.'】商户售物所得'); | ||||
|         } | ||||
|          | ||||
|         | ||||
|         //旺旺券结算 | ||||
|         $payVouchersNum = ($order->productNum - $order->productHandlingFee - $order->productTaxFee) + ($order->couponsNum - $order->couponsHandlingFee - $order->couponsTaxFee) + $order->wangNum;////3个券的付款总额+$order->moneyNum; | ||||
|         $giveWangNum = round($payVouchersNum - $discountMoney,2); | ||||
|         $m->setTable('orders'); | ||||
|         if($giveWangNum > 0){ | ||||
|             $m->updateInfo(['orderId'=>$orderId],['certificateStatus'=>1,'payable'=>$giveWangNum]); | ||||
|             Model('common/LogMoneys')->addMoneyLog(1,$order->shopId,$order->orderId,1,'交易订单【'.$order->orderNo.'】结算收入¥'.$giveWangNum,1,$giveWangNum,'qlgpay',3);        | ||||
|         }else{ | ||||
|             $m->updateInfo(['orderId'=>$orderId],['certificateStatus'=>0,'payable'=>$giveWangNum]); | ||||
|         } | ||||
|         //商超,商厦,商都所得 | ||||
|         // 1,获得预获优惠券时限上日有消费≥100元为产品额的5%。 | ||||
|         // shopPreCoupousYdGTMoney    shopPreCoupousYesInProductScale | ||||
|         // 2,获得预获优惠券时限上日有消费<100元为产品额的2.5% shopPreCoupousNoInProductScale | ||||
|         $m->setTable('shops'); | ||||
|         $positionInfo = $m->getInfo(['shopId'=>$order->shopId,'dataFlag'=>1],'villageId,townId,countyId'); | ||||
|         if($positionInfo){             | ||||
|             $m->setTable('user_update'); | ||||
|             //村代理 | ||||
|             $agentAreaId = 'villageId'; | ||||
|             $agentUserId = $m->getField(['applyLevel'=>2,$agentAreaId=>$positionInfo[$agentAreaId],'status'=>1],'userId'); | ||||
|             if($agentUserId && $vInfo = getUserInfo(['userId'=>$agentUserId,'dataFlag'=>1,'userStatus'=>1],'userId')){ | ||||
|                 $yesterdayBuyMoney = Model('common/Orders')->getYesterdayBuyMoney($agentUserId,'realTotalMoney'); | ||||
|                 $agentProductMoney = 0; | ||||
|                 if($yesterdayBuyMoney >= dataConf('shopPreCoupousYdGTMoney')){//大于设定值 | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousYesInProductScale')*0.01),2);//1 | ||||
|                 }else{ | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousNoInProductScale')*0.01),2);//2 | ||||
|                 } | ||||
|                 if($agentProductMoney >= 0.01){ | ||||
|                     Model('common/UserVouchers')->insertVouchersNotice($agentUserId,$orderId,0,$agentProductMoney,'交易订单【'.$order->orderNo.'】商超所得'); | ||||
|                 } | ||||
|             }             | ||||
|             //乡镇代理 | ||||
|              | ||||
|             $m->setTable('user_update'); | ||||
|             $agentAreaId = 'townId'; | ||||
|             $agentUserId = $m->getField(['applyLevel'=>3,$agentAreaId=>$positionInfo[$agentAreaId],'status'=>1],'userId'); | ||||
|             if($agentUserId && $vInfo = getUserInfo(['userId'=>$agentUserId,'dataFlag'=>1,'userStatus'=>1],'userId')){ | ||||
|                 $yesterdayBuyMoney = Model('common/Orders')->getYesterdayBuyMoney($agentUserId,'realTotalMoney'); | ||||
|                 $agentProductMoney = 0; | ||||
|                 if($yesterdayBuyMoney >= dataConf('shopPreCoupousYdGTMoney')){//大于设定值 | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousYesInProductScale')*0.01),2);//1 | ||||
|                 }else{ | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousNoInProductScale')*0.01),2);//2 | ||||
|                 } | ||||
|                 if($agentProductMoney >= 0.01){ | ||||
|                     Model('common/UserVouchers')->insertVouchersNotice($agentUserId,$orderId,0,$agentProductMoney,'交易订单【'.$order->orderNo.'】商厦所得'); | ||||
|                 } | ||||
|             } | ||||
|             //区县代理             | ||||
|             $m->setTable('user_update'); | ||||
|             $agentAreaId = 'countyId'; | ||||
|             $agentUserId = $m->getField(['applyLevel'=>4,$agentAreaId=>$positionInfo[$agentAreaId],'status'=>1],'userId'); | ||||
|             if($agentUserId && $vInfo = getUserInfo(['userId'=>$agentUserId,'dataFlag'=>1,'userStatus'=>1],'userId')){ | ||||
|                 $yesterdayBuyMoney = Model('common/Orders')->getYesterdayBuyMoney($agentUserId,'realTotalMoney'); | ||||
|                 $agentProductMoney = 0; | ||||
|                 if($yesterdayBuyMoney >= dataConf('shopPreCoupousYdGTMoney')){//大于设定值 | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousYesInProductScale')*0.01),2);//1 | ||||
|                 }else{ | ||||
|                     $agentProductMoney = round($totalMoney * (dataConf('shopPreCoupousNoInProductScale')*0.01),2);//2 | ||||
|                 } | ||||
|                 if($agentProductMoney >= 0.01){ | ||||
|                     Model('common/UserVouchers')->insertVouchersNotice($agentUserId,$orderId,0,$agentProductMoney,'交易订单【'.$order->orderNo.'】商都所得'); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         //推荐人所得 | ||||
|         // 1,推荐人获得预获产品券时限上日有消费≥10元为优惠款的50%。 | ||||
|         // refPreProductYdGTMoney     refPreProductYesInSaleScale | ||||
|         // 2,推荐人获得预获产品券时限上日有消费<10元为优惠款的25% refPreProductNoInSaleScale | ||||
|         $m->setTable('user_trees'); | ||||
|         $pid = $m->getField(['uid'=>$shops['userId']],'pid'); | ||||
|         if($pid && $pInfo = getUserInfo(['userId'=>$pid,'dataFlag'=>1,'userStatus'=>1],'userId')){//有推荐人并且推荐人状态正常 | ||||
|             $yesterdayBuyMoney = Model('common/Orders')->getYesterdayBuyMoney($pid,'realTotalMoney'); | ||||
|             $refProductMoney = 0; | ||||
|             if($yesterdayBuyMoney >= dataConf('refPreProductYdGTMoney')){//大于设定值 | ||||
|                 $refProductMoney = round($discountMoney * (dataConf('refPreProductYesInSaleScale')*0.01),2);//1 | ||||
|             }else{ | ||||
|                 $refProductMoney = round($discountMoney * (dataConf('refPreProductNoInSaleScale')*0.01),2);//2 | ||||
|             } | ||||
|             if($refProductMoney > 0){ | ||||
|                 Model('common/UserVouchers')->insertVouchersNotice($pid,$orderId,$refProductMoney,0,'交易订单【'.$order->orderNo.'】推荐所得'); | ||||
|             }          | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|     /** | ||||
|      * 即时计算 | ||||
|      */ | ||||
| //     public function speedySettlement($orderId) | ||||
| //     { | ||||
| //         $order = model('common/orders')->get($orderId); | ||||
| //         $shops = model('common/shops')->get($order->shopId); | ||||
| //         if (empty($shops)) return WSTReturn('结算失败,商家不存在'); | ||||
| //         //$backMoney = 0; | ||||
| //         $sub_deposit = 0; | ||||
| //         $deposit_msg = ''; | ||||
| //         $payFrom = $order->payFrom; | ||||
| //         if ($order->payType == 1) { | ||||
| //             //在线支付的返还金额=实付金额+惠宝抵扣金额-佣金 | ||||
| //             // $backMoney = $order->realTotalMoney+$order->scoreMoney-$order->commissionFee; | ||||
| //             //修改为不加入惠宝的结算金额 mark hsf 20180308 | ||||
| //             if ($payFrom == 'ect') { | ||||
| //                 $ectInfo = db('orders_ect')->where('orderId', $order['orderId'])->field('orderEctNum,ectPrice')->find(); | ||||
| //                 $commissionFee = $order->commissionFee;//佣金 | ||||
| //                 $backMoney = round($ectInfo['orderEctNum'] - ($order->commissionFee / $ectInfo['ectPrice']), 2); | ||||
| //             } else { | ||||
|  | ||||
| //                 //订单业务员提成 | ||||
| //                 $comDeduct = Db::name('shop_commission')->where('shopId',$order->shopId)->field('comDeduct,userId,userName,deductMoney')->find(); | ||||
| //                 if($comDeduct && $comDeduct['comDeduct']>0){ | ||||
| //                     $deductMoney = $order->realTotalMoney * $comDeduct['comDeduct'] * 0.01; | ||||
|  | ||||
| //                     $deduct['userId'] = $comDeduct['userId']; | ||||
| //                     $deduct['orderId'] = $order['orderId']; | ||||
| //                     $deduct['deductMoney'] = $deductMoney; | ||||
| //                     $deduct['createTime'] = time(); | ||||
| //                     // dump($deduct);die; | ||||
| //                     Db::name('shop_commission_deduct')->insert($deduct); | ||||
| //                     $manDeduct = $comDeduct['deductMoney'] + $deductMoney; | ||||
| //                     Db::name('shop_commission')->where('userId',$comDeduct['userId'])->update(['deductMoney'=>$manDeduct]); | ||||
| //                 } | ||||
|                  | ||||
| //                 $commissionFee = $order->commissionFee;//佣金 | ||||
| //                 $backMoney = $order->realTotalMoney - $commissionFee;//返还金额 | ||||
|  | ||||
| //                 //商家质保金未交齐,则扣除在线支付返回金额的30% | ||||
| //                 $deposit_info = Db::name('shops_deposit')->where('shopId', $order->shopId)->field('isFinish,payDeposit,cashDeposit')->find(); | ||||
| //                 if(!$deposit_info){ | ||||
| //                     $deposit_info['shopId']=$order->shopId; | ||||
| //                     $deposit_info['isFinish']=2; | ||||
| //                     $deposit_info['cashDeposit']=0; | ||||
| //                     $deposit_info['payDeposit']=1000;//老商户1000质保金 | ||||
| //                     $deposit_info['passTime']=time(); | ||||
| //                     Db::name('shops_deposit')->insert($deposit_info); | ||||
| //                 } | ||||
| //                 if (2 == $deposit_info['isFinish']) {//未交齐质保金 | ||||
| //                     $no_money = $deposit_info['payDeposit'] - $deposit_info['cashDeposit']; | ||||
| //                     if ($no_money > 0) { | ||||
| //                         $sub_money = $backMoney * 0.3;//质保金不足,订单扣除30%质保金 | ||||
| //                         $data_deposit = []; | ||||
| //                         if ($no_money > $sub_money) {//未完成 | ||||
| //                             $sub_deposit = $sub_money;                                 | ||||
| //                         } else { | ||||
| //                             $sub_deposit = $no_money; | ||||
| //                             $data_deposit['isFinish'] = 1; | ||||
| //                             $data_deposit['completeTime'] = time(); | ||||
| //                             //记录店铺订单中扣除的质保金                                | ||||
| //                         } | ||||
| //                         //添加到质保金里 | ||||
| //                         $data_deposit['cashDeposit'] = $deposit_info['cashDeposit'] + $sub_deposit; | ||||
| //                         Db::name('shops_deposit')->where('shopId', $order->shopId)->update($data_deposit); | ||||
| //                         //添加到质保金记录 | ||||
| //                         $detail = []; | ||||
| //                         $detail['shopId'] = $order->shopId; | ||||
| //                         $detail['orderId'] = $order->orderId; | ||||
| //                         $detail['cashDeposit'] = $sub_deposit; | ||||
| //                         $detail['payType'] = 2; | ||||
| //                         $detail['payTime'] = time(); | ||||
| //                         Db::name('shops_deposit_detail')->insert($detail); | ||||
|                          | ||||
| //                         $backMoney -= $sub_deposit; | ||||
| //                         $deposit_msg = ',质保金抵扣¥:'.$sub_deposit; | ||||
| //                     } | ||||
| //                 } | ||||
| //             } | ||||
| //             if ($backMoney < 0) { | ||||
| //                 return true; | ||||
| //             } | ||||
| //         } else { | ||||
| //             //货到付款的返还金额=惠宝抵扣金额-佣金 | ||||
| //             //$backMoney = $order->scoreMoney-$order->commissionFee; | ||||
| //             //修改为不加入惠宝的结算金额 mark hsf 20180308 | ||||
| //             $backMoney = 0; | ||||
| //         } | ||||
|  | ||||
| //         $data = []; | ||||
| //         $data['settlementType'] = 1; | ||||
| //         $data['shopId'] = $order->shopId; | ||||
| //         //修改为不加入惠宝的结算金额 mark hsf 20180308 | ||||
| //         $data['settlementMoney'] = ($order->payType == 1) ? $order->realTotalMoney : 0;//$order->scoreMoney+(($order->payType==1)?$order->realTotalMoney:0); | ||||
| //         $data['commissionFee'] = $commissionFee; | ||||
| //         $data['backMoney'] = $backMoney; | ||||
| //         $data['settlementStatus'] = 1; | ||||
| //         $data['settlementTime'] = date('Y-m-d H:i:s'); | ||||
| //         $data['createTime'] = date('Y-m-d H:i:s'); | ||||
| //         $data['settlementNo'] = ''; | ||||
| //         $settlementId = $this->insertGetId($data); | ||||
| //         if ($settlementId > 0) { | ||||
| //             $settlementNo = $settlementId . uniqid() . mt_rand(10, 99);//(fmod($this->settlementId,7)); | ||||
| //             $this->where(['settlementId' => $settlementId])->update(['settlementNo' => $settlementNo]); | ||||
| //             $order->settlementId = $settlementId; | ||||
| //             $order->save(); | ||||
| // //            dump($backMoney); | ||||
| // //            dump($payFrom);exit; | ||||
| //             if ($payFrom == "ect") { | ||||
| //                 ectLog($shops['userId'], $backMoney, 12, '结算', ['userECT' => ['exp', 'userECT+' . $backMoney]], 1); | ||||
| //             } else { | ||||
| //                 //修改商家钱包 | ||||
| //                 $shops->shopMoney = $shops['shopMoney'] + $backMoney; | ||||
| //                 $shops->save(); | ||||
| //             } | ||||
|  | ||||
| //             //返还金额 | ||||
| //             $lmarr = []; | ||||
| //             //如果是货到付款并且有惠宝支付的话,还要补上一个惠宝支付的资金流水记录,不然流水上金额不对。 | ||||
| //             // if($order->payType==0 && $order->scoreMoney >0){ | ||||
| //             //     $lm = []; | ||||
| //             //     $lm['targetType'] = 1; | ||||
| //             //     $lm['targetId'] = $order->shopId; | ||||
| //             //     $lm['dataId'] = $this->settlementId; | ||||
| //             //     $lm['dataSrc'] = 2; | ||||
| //             //     $lm['remark'] = '结算订单申请【'.$this->settlementNo.'】惠宝支付金额¥'.$order->scoreMoney; | ||||
| //             //     $lm['moneyType'] = 1; | ||||
| //             //     $lm['money'] =$order->scoreMoney; | ||||
| //             //     $lm['payType'] = 0; | ||||
| //             //     $lm['createTime'] = date('Y-m-d H:i:s'); | ||||
| //             //     $lmarr[] = $lm; | ||||
| //             // } | ||||
| //             //收取佣金 | ||||
| //             if ($commissionFee > 0) { | ||||
| //                 $lm = []; | ||||
| //                 $lm['targetType'] = 1; | ||||
| //                 $lm['targetId'] = $order->shopId; | ||||
| //                 $lm['dataId'] = $settlementId; | ||||
| //                 $lm['dataSrc'] = 2; | ||||
| //                 $lm['remark'] = '结算订单申请【' . $settlementNo . '】收取订单佣金¥' . $commissionFee; | ||||
| //                 $lm['moneyType'] = 0; | ||||
| //                 $lm['money'] = $commissionFee; | ||||
| //                 $lm['payType'] = 0; | ||||
| //                 $lm['createTime'] = date('Y-m-d H:i:s'); | ||||
| //                 $lmarr[] = $lm; | ||||
| //             } | ||||
|  | ||||
| //             if ($backMoney > 0) { | ||||
| //                 $lm = []; | ||||
| //                 $lm['targetType'] = 1; | ||||
| //                 $lm['targetId'] = $order->shopId; | ||||
| //                 $lm['dataId'] = $settlementId; | ||||
| //                 $lm['dataSrc'] = 2; | ||||
| //                 $lm['remark'] = '结算订单申请【' . $settlementNo . '】返还金额¥' . $backMoney.$deposit_msg; | ||||
| //                 $lm['moneyType'] = 1; | ||||
| //                 $lm['money'] = $backMoney; | ||||
| //                 $lm['payType'] = 0; | ||||
| //                 $lm['createTime'] = date('Y-m-d H:i:s'); | ||||
| //                 $lmarr[] = $lm; | ||||
| //             } | ||||
| //             model('common/LogMoneys')->saveAll($lmarr); | ||||
| //             return true; | ||||
| //         } | ||||
| //         return false; | ||||
| //     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user