| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
- declare (strict_types=1);
- // +----------------------------------------------------------------------
- // | [ WE CAN DO IT MORE SIMPLE ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2018-2020 rights reserved.
- // +----------------------------------------------------------------------
- // | 支付结算
- // +----------------------------------------------------------------------
- // | Date: 2020-08-25 17:23
- // +----------------------------------------------------------------------
- namespace app\lib;
- use app\model\api\PayTrade;
- use app\model\api\Order;
- use app\model\api\ActivityOrder;
- use app\model\api\OrderInfo;
- use app\model\api\Goods;
- use app\model\api\User as UserModel;
- use app\model\api\UserDetail as UserDetailModel;
- use app\model\api\UserScoreDetail;
- use app\model\api\Sys as SysModel;
- use think\facade\Db;
- class OrderLib
- {
- /**
- * 支付反馈
- * @param $orderId
- * @return bool|string
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function orderPay($payOn,$payDataInfo="")
- {
- $payTradeData = (new PayTrade)->where('pay_no', $payOn)->find();
- if (empty($payTradeData)) {
- return false;
- }
- //已支付
- if ($payTradeData['status'] == 1) {
- return false;
- }
- //处理支付成功
- PayTrade::beginTrans();
- $userData = (new UserModel)->where('uid', $payTradeData['uid'])->find();
- try {
- (new PayTrade)->where('id', $payTradeData['id'])->update(['status' => 1, 'pay_time' => time(),'pay_json' => $payDataInfo]);
- if($payTradeData['type']=="activity"){
- //活动报名
- (new ActivityOrder)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
- PayTrade::commitTrans();
- return true;
- }else{
- //商城下单
- (new Order)->where("id",$payTradeData['o_id'])->update(['status' => 1, 'pay_time' => time()]);
- }
- //商城下单普通商品增加积分
- if ($payTradeData['type'] == 'pro') {
- $json = unserialize($payTradeData['d_json']);
- //添加购买用户的积分
- if($json['give_score']>0){
- (new UserScoreDetail)->incomeScore($payTradeData['uid'], $json['give_score'], $payOn,"income_score",["o_id"=>$payTradeData['o_id']]);
- }
- }
- PayTrade::commitTrans();
- } catch (DbException $dbException) {
- PayTrade::rollbackTrans();
- return false;
- }
- //后台管理人员支付直接返回
- if($payTradeData["pay_type"]=="system"){
- return true;
- }
- //判断普通商品购买如果商品已被买断则在此处计算收益
- $memData = $userData;
- $orderData = (new Order)->where("id",$payTradeData['o_id'])->find();
- $orderInfoData=null;
- $proData=null;
- if(!empty($orderData)){
- $orderInfoData = (new OrderInfo)->where("o_id",$orderData['id'])->find()->toArray();
- }
- if(!empty($orderInfoData)){
- $proData = (new Goods)->where("id",$orderInfoData["p_id"])->find();
- }
- //ip买断
- if(!empty($proData) && $orderData["is_ip_buy"]==1 && empty($proData["uid"]) && $proData["is_ip"]==1){
- (new Goods)->where("id",$proData["id"])->update(["uid"=>$memData["uid"],"uip"=>$memData["uip"]]);
- }
-
- // return true;//暂时关闭分成
-
- //系统信息
- $sysData = (new SysModel)->where("id",1)->find();
- if($orderData["is_ip_buy"]==0){
- //上级用户
- if($memData["parent_uid"]>0){
- //一级用户
- $parentData = (new UserModel)->where("uid",$memData["parent_uid"])->where("status",1)->find();
- if(!empty($parentData) && $sysData['tree_income_per']>0 && $sysData['tree_income_per']<=100){
- $treepermono = "推广用户购买商品获得分成";//分成内容
- $treePerMoney = $payTradeData["money"]*((int)$sysData['tree_income_per']/100);//分成收益金额
- if($treePerMoney>0){
- // return true;//暂时关闭分成
- (new UserDetailModel)->goodsIncome($memData["parent_uid"],$treePerMoney,"tree_per_income",$treepermono,["cash_uid"=>$memData["uid"],"p_id"=>$proData["id"],"o_id"=>$orderData["id"]]);
- }
- }
- //二级用户
- if(!empty($parentData) && $parentData["parent_uid"] > 0 && $sysData['tree_income_per_two']>0 && $sysData['tree_income_per_two']<=100){
- $treepermonoTwo = "二级推广用户购买商品获得分成";//分成内容
- $treePerMoneyTwo = $payTradeData["money"]*((int)$sysData['tree_income_per_two']/100);//分成收益金额
- if($treePerMoneyTwo>0){
- // return true;//暂时关闭分成
- (new UserDetailModel)->goodsIncome($parentData["parent_uid"],$treePerMoneyTwo,"tree_per_income",$treepermonoTwo,["cash_uid"=>$memData["uid"],"p_id"=>$proData["id"],"o_id"=>$orderData["id"]]);
- }
- }
- }
- }
- //普通商品购买计算分成
- if(!empty($proData) && $orderData["is_ip_buy"]==0 && !empty($proData["uid"]) && $proData["is_ip"]==1){
-
- // $sysPer=$sysData['ip_income_per'];//分成比例,后台设置
- $sysPer=$proData['ip_income_per'];//如果是单个商品则用这条
- if($sysPer<=0 || $sysPer>100){
- return true;
- }
- $money = $payTradeData["money"];//支付金额
- $permono = "用户购买商品获得分成";//分成内容
- $perMoney = $money*((int)$sysPer/100);//分成收益金额
- //增加用户收益
- if($perMoney>0){
- (new UserDetailModel)->goodsIncome($proData["uid"],$perMoney,"per_income",$permono,["cash_uid"=>$memData["uid"],"p_id"=>$proData["id"],"o_id"=>$orderData["id"]]);
- }
- }
- return true;
- }
- }
|