Browse Source

0726-2310-c01

zory 1 week ago
parent
commit
b5dbaa6238

+ 56 - 0
app/command/UpdateGoods.php

@@ -0,0 +1,56 @@
+<?php
+
+namespace app\command;
+
+use app\extra\dyLife\data\BaseData;
+use app\model\saas\SaasGoods;
+use app\model\saas\SaasStore;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class UpdateGoods extends Command
+{
+
+    protected static string $defaultName = 'update:all';
+    protected static string $defaultDescription = '统一生成Model';
+
+    protected function execute(InputInterface $input, OutputInterface $output): int
+    {
+        try {
+            $nextPage = 1;
+            while (is_numeric($nextPage)) {
+                $resp = (new SaasGoods)->where("status",1)->with(['skuSpecs'])->page($nextPage,10)->select();
+                if ($resp->isEmpty()) {
+                    $output->writeln("没有任务啦==".getDateFull());
+                    $nextPage = null;
+                    return true;
+                }
+                foreach ($resp as $param) {
+                    $store = (new SaasStore)->where("poi_id",$param['poi_id'])->findOrEmpty();
+                    // 获取attr_key_value_map参数
+                    $valMap = (new BaseData)->config([
+                        "appid"     => sConf("wechat.appid"),
+                        "secret"    => sConf("wechat.secret"),
+                        "account"   => sConf("wechat.shop_id"),
+                    ])->token()->getStoreCategoryTemplate($param['category_id'],$param['product_type']);
+                    $data = (new BaseData)->config([
+                        "appid"     => sConf("wechat.mini_appid"),
+                        "secret"    => sConf("wechat.mini_secret"),
+                    ])->token()->createGoodsData($param->toArray(),[],$store->toArray(),$valMap,"edit");
+                    echo getDateFull()."====修改返回信息\n";
+                    echo json_encode($data)."\n";
+                }
+                $nextPage = $nextPage+1;
+                $output->writeln("进入下一页=={$nextPage}==".getDateFull());
+            }
+
+        } catch (\Throwable $throwable) {
+            echo getDateFull()."==报错啦===".$throwable->getFile()."\n";
+            echo getDateFull()."==报错啦===".$throwable->getLine()."\n";
+            echo getDateFull()."==报错啦===".$throwable->getMessage()."\n";
+        }
+        return self::SUCCESS;
+    }
+
+}

+ 2 - 1
app/controller/merchant/Goods.php

@@ -6,7 +6,6 @@ use app\extra\basic\Base;
 use app\extra\dyLife\data\BaseData;
 use app\extra\tools\CodeExtend;
 use app\middleware\AuthMiddleware;
-use app\middleware\DepositMiddleware;
 use app\model\saas\SaasGoods;
 use app\model\saas\SaasGoodsSku;
 use app\model\saas\SaasOrder;
@@ -37,6 +36,8 @@ class Goods extends Base
     #[Inject]
     protected SaasStore $store;
 
+    protected array $noNeedLogin = ["getTemplate"];
+
     #[GetMapping('list')]
     public function getDataList(Request $request): Response
     {

+ 11 - 0
app/controller/notify/Life.php

@@ -4,6 +4,7 @@ namespace app\controller\notify;
 
 use app\extra\basic\Base;
 use app\extra\dyMini\PlanLive;
+use app\model\saas\SaasGoods;
 use LinFly\Annotation\Attributes\Route\Controller;
 use LinFly\Annotation\Attributes\Route\GetMapping;
 use LinFly\Annotation\Attributes\Route\PostMapping;
@@ -62,6 +63,16 @@ class Life extends Base
             if (isset($data['event']) && $data['event'] == "verify_webhook") {
                 return json(['challenge' => $data['content']['challenge']]);
             }
+            $content = json_decode($data['content'],true);
+            switch ($data['event']) {
+                case "life_product_status_change": // 商品状态变化
+                    if ($content['status'] == "GOODS_OFFLINE") { // 商品下架
+                        (new SaasGoods)->where("goods_id",$content['product_id'])->update(['status' => 3]);
+                    }
+                    break;
+                default:
+                    break;
+            }
             return error("ddd");
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());

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

@@ -102,6 +102,7 @@ class BasicLife
      */
     public function curlGetApi(string $url = "", array $data = [], string $field = "data"): array
     {
+        print_r($this->header);
         $result = Http::asJson()->withProxy("")->withHeaders($this->header)->get($this->gateway.$url,$data)->array();
         if(!empty($result[$field]))
         {

+ 11 - 10
app/extra/dyLife/data/BaseData.php

@@ -15,17 +15,17 @@ class BaseData extends BasicLife
      * https://partner.open-douyin.com/docs/resource/zh-CN/local-life/develop/OpenAPI/general-capabilities/goods/save
      * https://open.douyin.com/goodlife/v1/goods/product/save/
      */
-    public function createGoodsData(array $data = [],array $sku = [],array $store = [],array $valMap = []): array
+    public function createGoodsData(array $data = [],array $sku = [],array $store = [],array $valMap = [],string $type = "add"): array
     {
         $product_attrs = $sku_attrs = [];
         foreach ($valMap['product_attrs'] as $val) {
-            $keyVal = $this->getProductAttrs($val['key'],$data);
+            $keyVal = $this->getProductAttrs($val['key'],$data,$type);
             if (!empty($keyVal)) {
                 $product_attrs[$val['key']] = $keyVal;
             }
         }
         foreach ($valMap['sku_attrs'] as $val) {
-            $keyVal = $this->getProductAttrs($val['key'],$data);
+            $keyVal = $this->getProductAttrs($val['key'],$data,$type);
             if (!empty($keyVal)) {
                 $sku_attrs[$val['key']] = $keyVal;
             }
@@ -59,9 +59,9 @@ class BaseData extends BasicLife
         if (empty($sku)) { // 单sku
             $param['sku'] = [
                 "attr_key_value_map"    => $sku_attrs,
-                "actual_amount" => $data['price'], // 售价 实际支付价格
+                "actual_amount" => $type=='edit'?($data['price']*100):$data['price'], // 售价 实际支付价格
                 "sku_name"      => $data['product_name'], // sku名
-                "origin_amount" => $data['line_price'],
+                "origin_amount" => $type=='edit'?($data['line_price']*100):$data['line_price'],
                 "status"        => 1,
                 "stock"         => [
                     "limit_type"    => $data['limit_use_rule'], // 库存上限类型,为2时stock_qty和avail_qty字段无意义 1 有限库存 2 无限库存
@@ -81,7 +81,7 @@ class BaseData extends BasicLife
      * @param array $data
      * @return string
      */
-    protected function getProductAttrs(string $key = "",array $data = []): string
+    protected function getProductAttrs(string $key = "",array $data = [],string $type = "add"): string
     {
         switch ($key)
         {
@@ -93,7 +93,7 @@ class BaseData extends BasicLife
                 ]);
                 break;
             case "commodity": // 商品搭配
-                $specs = json_decode($data['specs'],true);
+                $specs = is_string($data['specs']) ? json_decode($data['specs'],true) : $data['specs'];
                 $commodity = [];
                 foreach ($specs as $key=>$val) {
                     $commodity[$key] = [
@@ -148,7 +148,7 @@ class BaseData extends BasicLife
                 $return = "2";
                 break;
             case "market_price": // 划线价格
-                $return = (string)$data['line_price'];
+                $return = $type=='edit'?(string)($data['line_price']*100):(string)$data['line_price'];
                 break;
             case "can_no_use_date": // 不可使用日期
                 if ($data['can_no_use_date'] == 1) {
@@ -168,7 +168,7 @@ class BaseData extends BasicLife
                 }
                 break;
             case "image_list": // 封面图 图片比例:375:280
-                $image_list = json_decode($data['image_list'],true);
+                $image_list = is_string($data['image_list']) ? json_decode($data['image_list'],true) : $data['image_list'];
                 $return = json_encode([
                     [
                         "url"   => $image_list[0]['url']
@@ -223,7 +223,8 @@ class BaseData extends BasicLife
                 $return = $data['code_source_type']?(string)$data['code_source_type']:"1";
                 break;
             case "settle_type": // 收款方式 1-总店结算 2-分店结算
-                $return = $data['code_source_type']?(string)$data['code_source_type']:"2";
+//                $return = $data['code_source_type']?(string)$data['code_source_type']:"2";
+                $return = 2;
                 break;
             case "limit_rule": // 限制购买
                 if ($data['limit_rule_type'] == 2) {