yingzi vor 1 Jahr
Ursprung
Commit
d834eb0def

+ 2 - 1
Dao/CommissionPartner/DNewCommissionDetail.Class.php

@@ -32,7 +32,8 @@ class DNewCommissionDetail extends BaseDao
             "mono",
             "time",
             "expand",
-            "orderNo"
+            "orderNo",
+            "taskType"
         ];
         $this->_readonly = ['id'];
         parent::__construct($serviceDB);

+ 1 - 0
Dao/CommissionPartner/DNewCommissionTask.Class.php

@@ -23,6 +23,7 @@ class DNewCommissionTask extends BaseDao
             "run_time",
             "time",
             "enterpriseId",
+            "type"
         ];
         $this->_readonly = ['id'];
         parent::__construct($serviceDB);

+ 18 - 0
Model/Shop/MShopCardOrder.Class.php

@@ -15,6 +15,7 @@ use Exception;
 
 use JinDouYun\Cache\SystemCache;
 use JinDouYun\Dao\BaseDao;
+use JinDouYun\Dao\Customer\DCustomer;
 use JinDouYun\Dao\Customer\DCustomerCard;
 use JinDouYun\Dao\Customer\DCustomerCardNum;
 use JinDouYun\Dao\Shop\DShopCard;
@@ -30,6 +31,7 @@ use Mall\Framework\Core\ResultWrapper;
 use JinDouYun\Model\MBaseModel;
 use Monolog\Handler\IFTTTHandler;
 use Util\WeiXin\Pay;
+use Util\Common\PartnerTools;
 
 
 class MShopCardOrder extends MBaseModel
@@ -41,6 +43,7 @@ class MShopCardOrder extends MBaseModel
     private $userCenterId;
     private $DCardBind;
     private $DCard;
+    private $objDCustomer;
 
     public function __construct($enterpriseId, $userCenterId = '')
     {
@@ -52,6 +55,8 @@ class MShopCardOrder extends MBaseModel
         $this->DCard = new DShopCard('default');
         $this->DCustomerCard = new DCustomerCard('default');
         $this->DCustomerCardNum = new DCustomerCardNum('default');
+        $this->objDCustomer = new DCustomer();
+        $this->objDCustomer->setTable('qianniao_customer_' . $this->onlineEnterpriseId);
 
     }
 
@@ -358,6 +363,19 @@ class MShopCardOrder extends MBaseModel
         }
         if ($res){
             $this->obj->commit();
+            
+            //服务优惠卡分销插入任务
+            //只有小程序微信支付订单才可以计算分佣
+            $customerData = $this->objDCustomer->get($data["customer_id"]);
+            if(!empty($customerData) && !empty($data) && $data["pay_price"]>0 && $data["payType"]==2){
+                $checkData = [
+                    "parentPath"=>$customerData["parentPath"],
+                    "payAmount"=>$data["pay_price"],
+                    "type"=>"shopCardOrder",
+                ];
+                PartnerTools::addTask($data["id"], $data["enterprise_id"],$checkData);
+            }
+            
             return true;
         }else{
             $this->obj->rollBack();

+ 35 - 10
Util/Common/PartnerTools.Class.php

@@ -113,6 +113,7 @@ class PartnerTools{
             if(empty($orderId) || empty($enterpriseId) || empty($ckeckData)){
                 return ["code"=>-1,"msg"=>"参数为空"];
             }
+            $ckeckData["type"] = empty($ckeckData["type"])?"order":$ckeckData["type"];
             $dbSetting = new DNewCommissionSetting('default');
             $settingData = $dbSetting->get(["enterpriseId"=>$enterpriseId]);
             if(empty($settingData) || empty($settingData["is_open"]) || $settingData["levMoney"]<=0){
@@ -125,7 +126,7 @@ class PartnerTools{
             $dbTask = new DNewCommissionTask('default');
             $taskTableName = $dbTask->getTableName($dbTask->get_Table(), $enterpriseId, 1);
             $dbTask->setTable($taskTableName);
-            $count = $dbTask->count(["orderId"=>$orderId]);
+            $count = $dbTask->count(["orderId"=>$orderId,"enterpriseId"=>$enterpriseId,"type"=>$ckeckData["type"]]);
             if($count>0){
                 return ["code"=>-1,"msg"=>"任务订单已存在"];
             }
@@ -134,9 +135,10 @@ class PartnerTools{
                 "enterpriseId"=>$enterpriseId,
                 "title"=>"订单完成计算分佣",
                 "mono"=>"",
-                "status"=>0,
+                "status"=>$ckeckData["type"] == "shopCardOrder"?-3:0,//服务优惠卡暂时不计算
                 "run_time"=>0,
                 "time"=>time(),
+                "type"=>$ckeckData["type"],
             ]);
             return ["code"=>1,"msg"=>"任务已插入[{$r}]"];
         } catch (\Exception $e){
@@ -163,7 +165,7 @@ class PartnerTools{
         }
         $nowTime=time();
         foreach($data as $k=>$v){
-            $res = $this->runCalcMoneyData($v["orderId"]);
+            $res = $this->runCalcMoneyData($v["orderId"],$v["type"]);
             $save=[];
             $save=["status"=>1,"mono"=>"执行成功","run_time"=>$nowTime];
             if(empty($res) || $res["code"]==-1){
@@ -484,8 +486,10 @@ class PartnerTools{
      * @param type $isPart 订单用户如果是合伙人是否计算
      * @return bool
      */
-    public function runCalcMoneyData($orderId){
-        
+    public function runCalcMoneyData($orderId,$taskType=""){
+        if(empty($taskType) || !in_array($taskType, ["order","shopCardOrder"])){
+            return ["code"=>-1,"msg"=>"任务类型不存在"];
+        }
         if(empty($this->commissionSettingData) || empty($this->commissionSettingData["is_open"]) || $this->commissionSettingData["levMoney"]<=0){
             return ["code"=>-1,"msg"=>"配置信息错误"];
         }
@@ -498,11 +502,30 @@ class PartnerTools{
         if(empty($orderIndexData)){
             return ["code"=>-1,"msg"=>"订单索引数据不存在"];
         }
-        // 切换订单分表,查询订单主单据数据
-        $dbOrder = new DOrder('default');
-        $fix = ceil($orderIndexData['userCenterId'] / 200000);
-        $dbOrder->setTable('qianniao_order_' . $this->enterpriseId . '_' . $fix);
-        $orderData = $dbOrder->get(['id' => $orderId]);
+        $orderData=null;
+        //商品订单
+        if($taskType=="order"){
+            // 切换订单分表,查询订单主单据数据
+            $dbOrder = new DOrder('default');
+            $fix = ceil($orderIndexData['userCenterId'] / 200000);
+            $dbOrder->setTable('qianniao_order_' . $this->enterpriseId . '_' . $fix);
+            $orderData = $dbOrder->get(['id' => $orderId]);
+        }
+        //服务优惠卡订单
+        if($taskType=="shopCardOrder"){
+            $dbOrder = new \JinDouYun\Dao\Shop\DShopCardOrder('default');
+            $orderData = $dbOrder->get(['id'=>$orderId,"enterprise_id"=>$this->enterpriseId]);
+            
+            if(!empty($orderData)){
+                $orderData["customerId"] = $orderData["customer_id"];
+                $orderData["payAmount"] = $orderData["pay_price"];
+                $orderData["payType"] = $orderData["pay_type"]==2 ? 1 : 0;//微信支付
+                $orderData["source"] = 3;
+                $orderData["orderStatus"] = 5;
+                $orderData["no"] = $orderData["order_id"];
+            }
+        }
+        
         if(empty($orderData)){
             return ["code"=>-1,"msg"=>"订单数据不存在"];
         }
@@ -559,6 +582,7 @@ class PartnerTools{
             "isUpgrade"=>$bottomData["isUpgrade"],
             "mono"=>"",
             "time"=>$nowTime,
+            "taskType"=>$taskType,
         ];
         
         
@@ -587,6 +611,7 @@ class PartnerTools{
                 "isUpgrade"=>$topData["isUpgrade"],
                 "mono"=>"",
                 "time"=>$nowTime,
+                "taskType"=>$taskType,
             ];
         }