初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,312 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace addon\wechat\shop\controller;
use addon\wechat\model\Material as MaterialModel;
use addon\wechat\model\Wechat as WechatModel;
/**
* 微信素材控制器
*/
class Material extends BaseWechat
{
/**
* 素材列表--图文消息
*/
public function lists()
{
if (request()->isJson()) {
$type = input('type', '');
$name = input('name', '');
$page_index = input('page', 1);
$page_size = input('limit', 9);
if (!empty($type)) {
$condition[] = [ 'type', "=", $type ];
}
if (!empty($name)) {
$condition[] = array (
'value', 'like', '%"name":"%' . $name . '%","url"%'
);
}
$condition[] = [ 'site_id', '=', $this->site_id ];
$material_model = new MaterialModel();
$material_list = $material_model->getMaterialPageList($condition, $page_index, $page_size, 'type asc,create_time desc');
if (!empty($material_list[ 'data' ][ 'list' ]) && is_array($material_list[ 'data' ][ 'list' ])) {
foreach ($material_list[ 'data' ][ 'list' ] as $k => $v) {
if (!empty($v[ 'value' ]) && json_decode($v[ 'value' ])) {
$material_list[ 'data' ][ 'list' ][ $k ][ 'value' ] = json_decode($v[ 'value' ], true);
}
}
}
return $material_list;
} else {
return $this->fetch('material/lists');
}
}
/**
* 添加图文消息
*/
public function add()
{
if (request()->isJson()) {
$type = input('type', 1);
$param[ 'value' ] = input('value', '');
if ($type != 1) {
// 图片、音频、视频、缩略图素材
$file_path = input('path', '');
$res = $this->uploadApi($type, [ 'path' => $file_path ]);
if ($res[ 'code' ] != 0) {
return $res;
}
$value[ 'file_path' ] = $file_path;
$value[ 'url' ] = $res[ 'data' ][ 'url' ];
$param[ 'value' ] = json_encode($value);
$param[ 'media_id' ] = $res[ 'data' ][ 'media_id' ];
} else {
$param[ 'media_id' ] = time() . 'GRAPHIC' . 'MESSAGE' . rand(1, 1000);
}
$param[ 'type' ] = $type;
$param[ 'create_time' ] = time();
$param[ 'update_time' ] = time();
$param[ 'site_id' ] = $this->site_id;
$material_model = new MaterialModel();
$res = $material_model->addMaterial($param);
return $res;
} else {
$this->assign('material_id', '0');
$this->assign('flag', false);
return $this->fetch('material/edit');
}
}
/**
* 修改图文消息
*/
public function edit()
{
if (request()->isJson()) {
$condition = [];
$condition[ 'id' ] = input('id', '');
$data[ 'value' ] = input('value', '');
$data[ 'update_time' ] = time();
$material_model = new MaterialModel();
$res = $material_model->editMaterial($data, $condition);
return $res;
} else {
$material_id = input('id', '');
$this->assign('material_id', $material_id);
$this->assign('flag', true);
return $this->fetch('material/edit');
}
}
/**
* 添加文本素材
*/
public function addTextMaterial()
{
if (request()->isJson()) {
$type = input('type', 1);
$param[ 'value' ] = input('value', '');
$param[ 'type' ] = $type;
$param[ 'create_time' ] = time();
$param[ 'update_time' ] = time();
$param[ 'site_id' ] = $this->site_id;
$material_model = new MaterialModel();
$res = $material_model->addMaterial($param);
return $res;
} else {
return $this->fetch('material/add_text');
}
}
/**
* 修改文本素材
*/
public function editTextMaterial()
{
$material_model = new MaterialModel();
if (request()->isJson()) {
$media_id = input("media_id", "");
$media_id = str_replace("MATERIAL_TEXT_MESSAGE_", "", $media_id);
$content = input("content", "");
$content = [ "content" => $content ];
$content = json_encode($content, JSON_UNESCAPED_UNICODE);
$condition[ 'id' ] = $media_id;
$data[ 'value' ] = $content;
$data[ 'update_time' ] = time();
$res = $material_model->editMaterial($data, $condition);
return $res;
} else {
$material_id = input('id', '');
$data = $material_model->getMaterialInfo([ [ 'id', '=', $material_id ], [ 'site_id', '=', $this->site_id ] ]);
if (!empty($data[ 'data' ])) {
$data[ 'data' ][ 'value' ] = json_decode($data[ 'data' ][ 'value' ], true);
}
$this->assign('material_data', $data[ 'data' ]);
return $this->fetch('material/edit_text');
}
}
/**
* 预览图文
*/
public function previewGraphicMessage()
{
$id = input('id', '');
$index = input('i', '');
$material_model = new MaterialModel();
$info = $material_model->getMaterialInfo([ 'id' => $id ]);
if (!empty($info[ 'data' ][ 'value' ]) && json_decode($info[ 'data' ][ 'value' ], true)) {
$info[ 'data' ][ 'value' ] = json_decode($info[ 'data' ][ 'value' ], true);
}
$this->assign('info', $info[ 'data' ]);
$this->assign('index', $index);
return $this->fetch('material/preview_material');
}
/**
* 预览文本
*/
public function previewTextMessage()
{
$id = input('id', '');
$material_model = new MaterialModel();
$info = $material_model->getMaterialInfo([ 'id' => $id ]);
if (!empty($info[ 'data' ][ 'value' ]) && json_decode($info[ 'data' ][ 'value' ], true)) {
$info[ 'data' ][ 'value' ] = json_decode($info[ 'data' ][ 'value' ], true);
}
$this->assign('info', $info[ 'data' ]);
return $this->fetch('material/preview_text');
}
/**
* 上传永久素材
* @param $type
* @param $data
* @return array
* @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function uploadApi($type, $data)
{
$wechat_model = new WechatModel();
if ($type == 1) {
$res = $wechat_model->uploadArticle($data);
} else {
if ($type == 2) {
$type = 'image';
$res = $wechat_model->uploadImage($data[ 'path' ]);
} else if ($type == 3) {
$type = 'voice';
$res = $wechat_model->uploadVoice($data[ 'path' ]);
} else if ($type == 4) {
$type = 'video';
$res = $wechat_model->uploadVideo($data[ 'path' ]);
} else if ($type == 6) {
$res = $wechat_model->uploadVideo($data[ 'path' ]);
$type = 'thumb';
}
}
return $res;
}
/**
* 删除微信素材
*/
public function delete()
{
if (request()->isJson()) {
$id = input('id', 0);
$material_model = new MaterialModel();
$condition = array (
[ "id", "=", $id ]
);
$res = $material_model->deleteMaterial($condition);
return $res;
}
}
/**
* 获取素材详情
* @return mixed
*/
public function getMaterialInfo()
{
if (request()->isJson()) {
$material_model = new MaterialModel();
$condition = array (
[ 'id', '=', input('id', '') ]
);
$material_info = $material_model->getMaterialInfo($condition);
if (json_decode($material_info[ 'data' ][ 'value' ])) {
$material_info[ 'data' ][ 'value' ] = json_decode($material_info[ 'data' ][ 'value' ]);
}
return $material_info;
}
}
/**
* 图文素材
*/
public function articleList()
{
$material_model = new MaterialModel();
$condition = array (
[ 'type', '=', 1 ]
);
$material_list = $material_model->getMaterialList($condition, '*', 'update_time desc');
if (!empty($material_list[ 'data' ]) && is_array($material_list[ 'data' ])) {
foreach ($material_list[ 'data' ] as $k => $v) {
if (!empty($v[ 'value' ]) && json_decode($v[ 'value' ])) {
$material_list[ 'data' ][ $k ][ 'value' ] = json_decode($v[ 'value' ], true);
}
}
}
$this->assign('material_list', $material_list);
return $this->fetch('material/index');
}
/**
* 素材管理
*/
public function material()
{
//这这里的常量要与base中的区分如果一致界面将无法渲染
$type = input("type", 1);
$this->assign("type", $type);
// return array( 'shop/material/material' );
return $this->fetch('material/material');
}
}