未来科技研究社

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 133|回复: 0

人人商城从其它商城系统或接口导入商品

[复制链接]

65

主题

68

帖子

2万

积分

超级版主

Rank: 8Rank: 8

积分
20594
发表于 2020-8-18 17:17:54 | 显示全部楼层 |阅读模式
之前给客户用了一套独立的单商户微商城系统CRMEB,功能比较薄弱,不能满足客户的一些分销、积分兑换的需求,二次开发成本太高,所以决定还是换到人人商城中,做为程序员懒是一种美德,写代码导入商品信息,又有趣又能拜托人工录入商品的痛苦,之前也对微擎有过点研究做过一次修改扩展,不过好久没再弄也忘记差不多了,再次快速查看微擎的开发文档,主要是如何连接外部数据库,下载远程文件,再就是根据微擎的路由规则找到人人商城快速添加商品goods.create的程序位置,添加断点输出json,看人人商城添加商品添加的参数,只需要对某些字段进行修改处理 再入库就可以了。
还有就是要从一个合作商那的APP接口中直接采集最新的产品,合作商的APP接口我们用FIDDLER抓https包的方式获得,需要设置手机代理到开发机器中,并在手机安装相关证书文件,合作商的APP其实是用APICLOUD制作的可以很容易看到源码。有接口就用微擎框架自带的http相关方法获得json数据并解析,处理入库。

  1. <?php
  2. public function importold()
  3.     {
  4.         exit("已经导入");
  5.         error_reporting(E_ALL);
  6.         set_time_limit(0);
  7.         ignore_user_abort();
  8.         load()->func('file');


  9.         //导入商品 为编程的方式解决问题
  10.         $data = json_decode('{"uniacid":3,"title":"\u6563\u517b\u9ed1\u732a\u4e94\u82b1\u8089","unit":"\u4ef6","keywords":"","type":1,"thumb_first":0,"isrecommand":0,"isnew":0,"ishot":0,"issendfree":0,"isnodiscount":0,"marketprice":100,"minprice":100,"maxprice":100,"productprice":"100","costprice":"100","virtualsend":0,"virtualsendcontent":"","virtual":0,"cash":0,"cashier":0,"invoice":0,"dispatchtype":0,"dispatchprice":"","dispatchid":0,"status":0,"goodssn":"","productsn":"","weight":"","total":0,"showtotal":0,"totalcnf":0,"hasoption":0,"subtitle":"","shorttitle":"","content":"<p><img src="http:\/\/wx.xunza.com\/web\/index.php?c=utility&a=wxcode&do=image&attach=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FMoL5lIhnW9tpHAq13hGLbEVhxZxuK4zM9amH5atS9YyWSChOvOcgl5kGSHXtN1uUc1HnKKtqDcLwGVyRyGOVyw%2F0%3Fwx_fmt%3Djpeg" width="100%"\/><\/p>","createtime":1545794595,"video":"","discounts":"{"type":0,"default":"","default_pay":""}","pcate":"3","ccate":"9","tcate":0,"cates":"9","pcates":"","ccates":"9","tcates":"","thumb":"images\/3\/2018\/12\/kCbCcZiEccDBEy8Wz4WWlqwD9Ifmjx.jpg","thumb_url":"a:0:{}","isstatustime":0,"statustimestart":1545794220,"statustimeend":1548472620}',true);
  11.         //var_dump($data);die();

  12.         //遍历以前数据库 重置数组相关参数 下载远程文件 保存商品
  13.         $other_database = array(
  14.             'host' => 'www.linsen18.com', //数据库IP或是域名
  15.             'username' => '', // 数据库连接用户名
  16.             'password' => '', // 数据库连接密码
  17.             'database' => 'wx_zchszxx_com', // 数据库名
  18.             'port' => 3306, // 数据库连接端口
  19.             'tablepre' => 'eb_', // 表前缀,如果没有前缀留空即可
  20.             'charset' => 'utf8', // 数据库默认编码
  21.             'pconnect' => 0, // 是否使用长连接
  22.         );
  23.         $other_db = new DB($other_database);
  24. //查询uid为1的会员信息
  25.         $products = $other_db->getall('store_product');

  26.         foreach ($products as $product)
  27.         {
  28.             if($product["id"] > 43 && $product["id"] < 46 ) {
  29.                 $data["title"] = $product['store_name'];
  30.                 $data["unit"] = $product['unit_name'];
  31.                 $data["marketprice"] = $product['price'];
  32.                 $data["minprice"] = $product['price'];
  33.                 $data["maxprice"] = $product['price'];
  34.                 $data["productprice"] = $product['price'];
  35.                 $data["costprice"] = $product['price'];
  36.                 $data["content"] = $this->replaceimg($product['description']);
  37.                 $data["createtime"] = $product['add_time'];
  38.                 $data["thumb"] = $product['image'];

  39.                 $file = file_remote_attach_fetch($product['image']);
  40.                 if (!is_error($file)) {
  41.                     $data->thumb = $file;
  42.                 }
  43.                 //var_dump($data);
  44.                 //远程文件保存
  45.                 pdo_insert("ewei_shop_goods", $data);
  46.                 echo $data["title"] . "导入成功<br />";

  47.             }
  48.         }
  49.         
  50.     }


  51.     public function importkl()
  52.     {
  53.         exit();
  54.         error_reporting(E_ALL);
  55.         set_time_limit(0);
  56.         ignore_user_abort();
  57.         load()->func('file');
  58.         load()->func("communication");
  59.         $data = json_decode('{"uniacid":3,"title":"\u6563\u517b\u9ed1\u732a\u4e94\u82b1\u8089","unit":"\u4ef6","keywords":"","type":1,"thumb_first":0,"isrecommand":0,"isnew":0,"ishot":0,"issendfree":0,"isnodiscount":0,"marketprice":100,"minprice":100,"maxprice":100,"productprice":"100","costprice":"100","virtualsend":0,"virtualsendcontent":"","virtual":0,"cash":0,"cashier":0,"invoice":0,"dispatchtype":0,"dispatchprice":"","dispatchid":0,"status":0,"goodssn":"","productsn":"","weight":"","total":0,"showtotal":0,"totalcnf":0,"hasoption":0,"subtitle":"","shorttitle":"","content":"<p><img src="http:\/\/wx.xunza.com\/web\/index.php?c=utility&a=wxcode&do=image&attach=http%3A%2F%2Fmmbiz.qpic.cn%2Fmmbiz_jpg%2FMoL5lIhnW9tpHAq13hGLbEVhxZxuK4zM9amH5atS9YyWSChOvOcgl5kGSHXtN1uUc1HnKKtqDcLwGVyRyGOVyw%2F0%3Fwx_fmt%3Djpeg" width="100%"\/><\/p>","createtime":1545794595,"video":"","discounts":"{"type":0,"default":"","default_pay":""}","pcate":"3","ccate":"9","tcate":0,"cates":"9","pcates":"","ccates":"9","tcates":"","thumb":"images\/3\/2018\/12\/kCbCcZiEccDBEy8Wz4WWlqwD9Ifmjx.jpg","thumb_url":"a:0:{}","isstatustime":0,"statustimestart":1545794220,"statustimeend":1548472620}',true);
  60.         //var_dump($data);die();

  61.         $resp = ihttp_get("https://odoapi.kangerys.com:8443/odoapi/product/list/c270a2babe5946c8b82a09a8eb25ad00?pageSize=100&pageOffset=1&phone=undefined&version=1.0");
  62.         $json = $resp['content'];

  63.         foreach (json_decode($json)->data->datas as $key => $pro) {
  64.             //存入实体
  65.             //var_dump($pro);

  66.             if($key > 20) {
  67.                 //打开详情页
  68.                 $info = ihttp_get("https://odoapi.kangerys.com:8443/odoapi/product/get/" . $pro->productId . "?version=1.0");

  69.                 //下载缩略图
  70.                 //正则匹配内容中的图片 下载到本地并替换成新地址  下载不能同时下载多个?文章重名
  71.                 $proinfo = json_decode($info['content'])->data;
  72.                 $data["title"] = $proinfo->name;
  73.                 $file = file_remote_attach_fetch($proinfo->thumbUrl);
  74.                 if (!is_error($file)) {
  75.                     $data["thumb"] = $file;
  76.                 }

  77.                 $data["marketprice"] = $proinfo->retailPrice / 100;
  78.                 $data["minprice"] = $proinfo->retailPrice / 100;
  79.                 $data["maxprice"] = $proinfo->retailPrice / 100;
  80.                 $data["productprice"] = $proinfo->retailPrice / 100;
  81.                 $data["costprice"] = $proinfo->retailPrice / 100;
  82.                 $data["content"] = $this->replaceimg($proinfo->details);
  83.                 $data["createtime"] = time();
  84.                 $data["total"] = $proinfo->stock;
  85.                 $data["sales"] = $proinfo->sales;

  86.                 //var_dump($data);
  87.                 //远程文件保存
  88.                 pdo_insert("ewei_shop_goods", $data);
  89.                 echo $data["title"] . "导入成功<br />";

  90.             }


  91.         }



  92.     }
复制代码
有几点注意就是json解码后生成对象还是数组的问题,微擎的数据库入库要求是数组,所以在json_decode($data,true)要加true

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|未来科技研究社

GMT+8, 2025-4-20 02:54 , Processed in 0.040194 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表