Bläddra i källkod

21333200-1120

Zory 4 timmar sedan
förälder
incheckning
07985ed1d4
3 ändrade filer med 62 tillägg och 6 borttagningar
  1. 55 2
      app/controller/merchant/Plan.php
  2. 1 0
      app/extra/dyLife/BasicLife.php
  3. 6 4
      app/extra/dyMini/PlanLive.php

+ 55 - 2
app/controller/merchant/Plan.php

@@ -3,8 +3,11 @@
 namespace app\controller\merchant;
 
 use app\extra\basic\Base;
+use app\extra\dyMini\PlanLive;
 use app\middleware\AuthMiddleware;
 use app\model\saas\SaasLivePlan;
+use app\model\saas\SaasLivePlanGoods;
+use app\model\saas\SaasLivePlanStar;
 use app\service\saas\PlanService;
 use DI\Attribute\Inject;
 use LinFly\Annotation\Attributes\Route\Controller;
@@ -51,21 +54,71 @@ class Plan extends Base
             $param = $this->_valid([
                 "plan_name.require"         => trans("empty.require"),
                 "merchant_phone.require"    => trans("empty.require"),
+                "merchant_phone.mobile"     => trans("error.mobile"),
                 "status.require"            => trans("empty.require"),
                 "goods.require"             => trans("empty.require"),
                 "star.require"              => trans("empty.require"),
                 "plan_id.default"           => 0,
             ],$request->method());
             if (!is_array($param)) return error($param);
+            $goodsData = is_string($param['goods']) ? json_decode($param['goods'],true) : $param['goods'];
+            $starData = is_string($param['star']) ? json_decode($param['star'],true) : $param['star'];
             $plan = $this->model->where("plan_id",$param['plan_id'])->findOrEmpty();
+            $liveDyStar = $liveDyGoods = [];
+            foreach ($goodsData as $k => $v) {
+                $liveDyGoods[$k] = [
+                    "commission_rate"   => $v['rate'] * 100,
+                    "product_id"        => $v['goods_id'],
+                ];
+            }
+            foreach ($starData as $k => $v) {
+                $liveDyStar[$k] = $v['unique_id'];
+            }
+            $resp = (new PlanLive)->config([
+                "appid"     => sConf("wechat.mini_appid"),
+                "secret"    => sConf("wechat.mini_secret"),
+            ])->token()->planData($param['plan_id'],['name' => $param['plan_name'],'mobile' => $param['merchant_phone'],'goods' => $liveDyGoods,'star' => $liveDyStar]);
+            if (isset($resp['msg'])) return error($resp['msg']);
+            if (!isset($resp['plan_id'])) return error("发布直播计划失败");
             if ($plan->isEmpty()) { // 新增
-
+                $state = $plan->insertGetId([
+                    "plan_id"           => $resp['plan_id'],
+                    "poi_id"            => $request->user['store_id'],
+                    "plan_name"         => $param['plan_name'],
+                    "merchant_phone"    => $param['merchant_phone'],
+                    "status"            => $param['status'],
+                ]);
             } else { // 编辑
-
+                (new SaasLivePlanGoods)->where("plan_id",$resp['plan_id'])->delete();
+                (new SaasLivePlanStar)->where("plan_id",$resp['plan_id'])->delete();
+                $state = $plan->save([
+                    "plan_name"         => $param['plan_name'],
+                    "merchant_phone"    => $param['merchant_phone'],
+                    "status"            => $param['status'],
+                ]);
             }
+            $goodsAll = $starAll = [];
+            foreach ($liveDyGoods as $k => $v) {
+                $goodsAll[$k] = [
+                    "plan_id"           => $resp['plan_id'],
+                    "goods_id"          => $v['product_id'],
+                    "commission_rate"   => $v['commission_rate'] / 100,
+                ];
+            }
+            (new SaasLivePlanGoods)->insertAll($goodsAll);
+            foreach ($liveDyStar as $k => $v) {
+                $starAll[$k] = [
+                    "plan_id"   => $resp['plan_id'],
+                    "unique_id" => $v
+                ];
+            }
+            (new SaasLivePlanStar)->insertAll($starAll);
+            if (!$state) return errorTrans("error.data");
+            return successTrans("success.data");
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }
     }
 
+
 }

+ 1 - 0
app/extra/dyLife/BasicLife.php

@@ -86,6 +86,7 @@ class BasicLife
     public function curlPostApi(string $url = "", array $data = [], string $field = "data"): array
     {
         $result = Http::asJson()->withHeaders($this->header)->post($this->gateway.$url,$data)->array();
+        if ($result['err_no'] <> 0) return ['msg' => $result['err_msg']];
         if(!empty($result[$field]))
         {
             return $result[$field];

+ 6 - 4
app/extra/dyMini/PlanLive.php

@@ -11,15 +11,17 @@ class PlanLive extends BasicLife
     /**
      * 发布/修改直播间定向佣金计划
      * @param int $planId
+     * @param array $data
      * @return array
      */
-    public function planData(int $planId = 0): array
+    public function planData(int $planId = 0,array $data = []): array
     {
         $param = [
             "plan_id"           => $planId, // 大于0 编辑
-            "merchant_phone"    => "",
-            "douyin_id_list"    => "",
-            "product_list"      => []
+            "plan_name"         => $data['name'],
+            "merchant_phone"    => $data['mobile'],
+            "douyin_id_list"    => $data['star'],
+            "product_list"      => $data['goods'],
         ];
         return $this->curlPostApi("api/match/v2/poi/save_live_oriented_plan/",$param);
     }