admin/addon/goodscircle/model/GoodsCircle.php

237 lines
12 KiB
PHP

<?php
/**
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.cdcloudshop.com
* =========================================================
*/
namespace addon\goodscircle\model;
use app\model\BaseModel;
use addon\weapp\model\Config as WeappConfigModel;
use addon\wxoplatform\model\Config as WxOplatformConfigModel;
use EasyWeChat\Factory;
/**
* 好物圈
*/
class GoodsCircle extends BaseModel
{
private $app;
public function __construct($site_id = 0)
{
//微信小程序配置
$weapp_config_model = new WeappConfigModel();
$weapp_config = $weapp_config_model->getWeappConfig($site_id);
$weapp_config = $weapp_config["data"]["value"];
if (isset($weapp_config['is_authopen']) && addon_is_exit('wxoplatform')) {
$plateform_config_model = new WxOplatformConfigModel();
$plateform_config = $plateform_config_model->getOplatformConfig();
$plateform_config = $plateform_config["data"]["value"];
$config = [
'app_id' => $plateform_config["appid"] ?? '',
'secret' => $plateform_config["secret"] ?? '',
'token' => $plateform_config["token"] ?? '',
'aes_key' => $plateform_config["aes_key"] ?? '',
'log' => [
'level' => 'debug',
'permission' => 0777,
'file' => 'runtime/log/wechat/oplatform.logs',
],
];
$open_platform = Factory::openPlatform($config);
$this->app = $open_platform->miniProgram($weapp_config['authorizer_appid'], $weapp_config['authorizer_refresh_token']);
} else {
$config = [
'app_id' => $weapp_config["appid"] ?? '',
'secret' => $weapp_config["appsecret"] ?? '',
'response_type' => 'array',
'log' => [
'level' => 'debug',
'permission' => 0777,
'file' => 'runtime/log/wechat/easywechat.logs',
],
];
$this->app = Factory::miniProgram($config);
}
}
/**
* 导入或更新物品信息
*/
public function importProduct($goods_ids)
{
if (!empty($goods_ids)) {
$data = [
'product_list' => []
];
$goods_list = model('goods')->getList([['goods_id', 'in', explode(',', $goods_ids)]], 'goods_id,goods_name,introduction,goods_image,sku_id,category_id,goods_attr_format');
if (!empty($goods_list)) {
try {
foreach ($goods_list as $goods_item) {
$sku_list = model('goods_sku')->getList([['goods_id', '=', $goods_item['goods_id']]], 'sku_id,discount_price,price,goods_state,stock');
$goods_data = [
"item_code" => $goods_item['goods_id'],
"title" => $goods_item['goods_name'],
"desc" => $goods_item['introduction'],
"category_list" => [],
"image_list" => array_map(function ($value) {
return img($value);
}, explode(',', $goods_item['goods_image'])),
"src_wxapp_path" => "/pages/goods/detail?sku_id=" . $goods_item['sku_id'],
"sku_list" => [],
"attr_list" => []
];
if (!empty($goods_item['category_id'])) {
$category_id = trim($goods_item['category_id'], ',');
$goods_category = model('goods_category')->getList([['category_id', 'in', explode(',', $category_id)]], 'category_name');
if (!empty($goods_category)) {
foreach ($goods_category as $item) {
array_push($goods_data["category_list"], $item['category_name']);
}
}
}
if (!empty($goods_item['goods_attr_format'])) {
$goods_attr = json_decode($goods_item['goods_attr_format'], true);
foreach ($goods_attr as $attr_item) {
$attr_data = [
"name" => $attr_item['attr_name'],
"value" => $attr_item['attr_value_name']
];
array_push($goods_data["attr_list"], $attr_data);
}
}
foreach ($sku_list as $sku_item) {
$sku_data = [
"sku_id" => $sku_item['sku_id'],
"price" => $sku_item['discount_price'] * 100,
"original_price" => $sku_item['price'] * 100
];
$sku_data['status'] = $sku_item['goods_state'] == 1 ? 1 : 2;
if ($sku_item['stock'] == 0) $sku_data['status'] = 3;
array_push($goods_data["sku_list"], $sku_data);
}
array_push($data['product_list'], $goods_data);
}
$result = $this->app->mall->product->import($data);
if (isset($result['errcode']) && $result['errcode'] == 0) {
return $this->success();
} else {
return $this->error('', $result['errmsg']);
}
} catch (\Exception $e) {
return $this->error('', $e->getMessage());
}
}
}
}
/**
* 导入订单每次最大10条
* @param $order_id
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function importOrder($order_ids)
{
if (!empty($order_ids)) {
$data = [
'order_list' => []
];
$order_join = [
['member m', 'm.member_id = o.member_id', 'left']
];
$order_list = model('order')->getList([['order_id', 'in', explode(',', $order_ids)]], 'o.order_id,o.order_no,o.goods_money,o.pay_money,o.delivery_money,o.create_time,o.pay_time,o.buyer_message,o.pay_type,o.order_status_name,m.weapp_openid', '', 'o', $order_join, '', 10);
if (!empty($order_list)) {
try {
foreach ($order_list as $order_item) {
$order_data = [
'order_id' => $order_item['order_id'],
'create_time' => $order_item['create_time'],
'pay_finish_time' => $order_item['pay_time'],
'desc' => $order_item['buyer_message'],
'fee' => $order_item['pay_money'],
'trans_id' => $order_item['order_no'],
'ext_info' => [
'product_info' => [
'item_list' => []
],
'express_info' => [
'price' => $order_item['delivery_money']
],
'brand_info' => [
'contact_detail_page' => [
'path' => '/pages/index/index'
]
],
'payment_method' => $order_item['pay_type'] == 'wechatpay' ? 1 : 2,
'user_open_id' => $order_item['weapp_openid'],
'order_detail_page' => [
'path' => '/pages_rush/order/detail?order_id=' . $order_item['order_id']
],
'total_fee' => $order_item['goods_money']
]
];
switch ($order_item['order_status_name']) {
case '待发货':
$order_data['status'] = 3;
break;
case '已发货':
$order_data['status'] = 4;
break;
case '已完成':
$order_data['status'] = 100;
break;
}
$order_goods_join = [
['goods g', 'og.goods_id = g.goods_id', 'left']
];
$order_goods_list = model('order_goods')->getList([['order_id', '=', $order_item['order_id']]], 'og.goods_id,og.sku_id,og.num,og.goods_money,og.sku_image,og.sku_name,og.price,g.category_id', '', 'og', $order_goods_join);
foreach ($order_goods_list as $goods_item) {
$goods_data = [
'item_code' => $goods_item['goods_id'],
'sku_id' => $goods_item['sku_id'],
'amount' => $goods_item['num'],
'total_fee' => $goods_item['goods_money'] * 100,
'thumb_url' => img($goods_item['sku_image']),
'title' => $goods_item['sku_name'],
'unit_price' => $goods_item['price'],
'original_price' => $goods_item['price'],
'category_list' => [],
'item_detail_page' => [
'path' => '/pages/goods/detail?sku_id=' . $goods_item['sku_id']
]
];
if (!empty($goods_item['category_id'])) {
$category_id = trim($goods_item['category_id'], ',');
$goods_category = model('goods_category')->getList([['category_id', 'in', explode(',', $category_id)]], 'category_name');
if (!empty($goods_category)) {
foreach ($goods_category as $item) {
array_push($goods_data["category_list"], $item['category_name']);
}
}
}
array_push($order_data['ext_info']['product_info']['item_list'], $goods_data);
}
array_push($data['order_list'], $order_data);
}
$result = $this->app->mall->order->add($data);
if (isset($result['errcode']) && $result['errcode'] == 0) {
return $this->success();
} else {
return $this->error('', $result['errmsg']);
}
} catch (\Exception $e) {
return $this->error('', $e->getMessage());
}
}
}
}
}