304 lines
10 KiB
PHP
304 lines
10 KiB
PHP
<?php
|
||
/**
|
||
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
||
* =========================================================
|
||
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
||
* ----------------------------------------------
|
||
* 官方网址: https://www.cdcloudshop.com
|
||
|
||
* =========================================================
|
||
*/
|
||
|
||
namespace addon\live\model;
|
||
|
||
use addon\weapp\model\Config as WeappConfigModel;
|
||
use addon\wxoplatform\model\Config as WxOplatformConfigModel;
|
||
use app\model\BaseModel;
|
||
use EasyWeChat\Factory;
|
||
|
||
/**
|
||
* 好物圈
|
||
*/
|
||
class Live extends BaseModel
|
||
{
|
||
private $app;
|
||
|
||
/**
|
||
* 微信直播间接口错误码
|
||
* @var array
|
||
*/
|
||
private $room_error = [
|
||
1003 => '商品id不存在',
|
||
47001 => '入参格式不符合规范',
|
||
200002 => '入参错误',
|
||
300001 => '禁止创建/更新商品 或 禁止编辑&更新房间',
|
||
300002 => '名称长度不符合规则',
|
||
300006 => '图片上传失败',
|
||
300022 => '此房间号不存在',
|
||
300023 => '房间状态 拦截(当前房间状态不允许此操作)',
|
||
300024 => '商品不存在',
|
||
300025 => '商品审核未通过',
|
||
300026 => '房间商品数量已经满额',
|
||
300027 => '导入商品失败',
|
||
300028 => '房间名称违规',
|
||
300029 => '主播昵称违规',
|
||
300030 => '主播微信号不合法',
|
||
300031 => '直播间封面图不合规',
|
||
300032 => '直播间分享图违规',
|
||
300033 => '添加商品超过直播间上限',
|
||
300034 => '主播微信昵称长度不符合要求',
|
||
300035 => '主播微信号不存在',
|
||
300036 => '主播微信号未实名认证',
|
||
];
|
||
|
||
/**
|
||
* 微信直播商品接口错误码
|
||
* @var array
|
||
*/
|
||
private $goods_error = [
|
||
300001 => '商品创建功能被封禁',
|
||
300002 => '名称长度不符合规则',
|
||
300003 => '价格输入不合规',
|
||
300004 => '商品名称存在违规违法内容',
|
||
300005 => '商品图片存在违规违法内容',
|
||
300006 => '图片上传失败',
|
||
300007 => '线上小程序版本不存在该链接',
|
||
300008 => '添加商品失败',
|
||
300009 => '商品审核撤回失败',
|
||
300010 => '商品审核状态不对',
|
||
300011 => 'API不允许操作非API创建的商品',
|
||
300012 => '没有提审额度(每天500次提审额度)',
|
||
300013 => '提审失败',
|
||
300014 => '审核中,无法删除',
|
||
300017 => '商品未提审',
|
||
300021 => '商品添加成功,审核失败',
|
||
];
|
||
|
||
|
||
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);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 添加永久图片素材
|
||
* @param $path
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function addImageMedia($path)
|
||
{
|
||
try {
|
||
$result = $this->app->media->uploadImage($path);
|
||
if (isset($result['errcode'])) {
|
||
return $this->error('', '图片上传失败');
|
||
} else {
|
||
return $this->success($result);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取直播间列表
|
||
* @param int $start
|
||
* @param int $limit
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function getRoomList($start = 0, $limit = PAGE_LIST_ROWS)
|
||
{
|
||
try {
|
||
$result = $this->app->live->room->getLiveInfo(['start' => $start, 'limit' => $limit]);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success(['list' => $result['room_info'], 'total' => $result['total']]);
|
||
} else {
|
||
return $this->error('', $this->room_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取回放视频
|
||
* @param $room_id
|
||
* @param int $start
|
||
* @param int $limit
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function getPlaybackInfo($room_id, $start = 0, $limit = PAGE_LIST_ROWS)
|
||
{
|
||
try {
|
||
$data = [
|
||
'action' => 'get_replay',
|
||
'room_id' => $room_id,
|
||
'start' => $start,
|
||
'limit' => $limit
|
||
];
|
||
$result = $this->app->live->room->getLiveInfo($data);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success(['list' => $result['live_replay'], 'total' => $result['total']]);
|
||
} else {
|
||
return $this->error('', $this->room_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 创建直播间
|
||
* @param $param
|
||
*/
|
||
public function createRoom($param)
|
||
{
|
||
try {
|
||
$result = $this->app->live->room->create($param);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result);
|
||
} else {
|
||
return $this->error('', $this->room_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 给直播间添加商品
|
||
* @param int $room_id
|
||
* @param array $goods_ids
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function roomAddGoods(int $room_id, array $goods_ids)
|
||
{
|
||
try {
|
||
$result = $this->app->live->room->addGoods(['roomId' => $room_id, 'ids' => $goods_ids]);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result);
|
||
} else {
|
||
return $this->error('', $this->room_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取商品列表
|
||
* @param int $start
|
||
* @param int $limit
|
||
* @param int $status
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function getGoodsList($start = 0, $limit = PAGE_LIST_ROWS, $status = 2)
|
||
{
|
||
try {
|
||
$result = $this->app->live->goods->getGoodsList(['offset' => $start, 'limit' => $limit, 'status' => $status]);
|
||
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result);
|
||
} else {
|
||
return $this->error('', $this->goods_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 添加商品审核
|
||
* @param $param
|
||
* @return array
|
||
*/
|
||
public function addGoodsAudit($param)
|
||
{
|
||
try {
|
||
$result = $this->app->live->goods->add($param);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result);
|
||
} else {
|
||
return $this->error('', $this->goods_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 删除商品
|
||
*/
|
||
public function deleteGoods($goods_id)
|
||
{
|
||
try {
|
||
$result = $this->app->live->goods->delete(['goodsId' => $goods_id]);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result);
|
||
} else {
|
||
return $this->error('', $this->goods_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取商品状态
|
||
* @param array $goods_ids
|
||
* @return array
|
||
* @throws \GuzzleHttp\Exception\GuzzleException
|
||
*/
|
||
public function getGoodsStatus(array $goods_ids)
|
||
{
|
||
try {
|
||
$result = $this->app->live->goods->getStatus(['goods_ids' => $goods_ids]);
|
||
if (isset($result['errcode']) && $result['errcode'] == 0) {
|
||
return $this->success($result['goods']);
|
||
} else {
|
||
return $this->error('', $this->goods_error[abs($result['errcode'])] ?? $result['errmsg']);
|
||
}
|
||
} catch (\Exception $e) {
|
||
return $this->error('', $e->getMessage());
|
||
}
|
||
}
|
||
} |