307 lines
9.8 KiB
PHP
307 lines
9.8 KiB
PHP
<?php
|
||
/**
|
||
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
||
* =========================================================
|
||
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
||
* ----------------------------------------------
|
||
* 官方网址: https://www.gobuysaas.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()->isAjax()) {
|
||
$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', [], $this->replace);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 添加图文消息
|
||
*/
|
||
public function add()
|
||
{
|
||
if (request()->isAjax()) {
|
||
$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', [], $this->replace);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 修改图文消息
|
||
*/
|
||
public function edit()
|
||
{
|
||
if (request()->isAjax()) {
|
||
$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', [], $this->replace);
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 添加文本素材
|
||
*/
|
||
public function addTextMaterial()
|
||
{
|
||
if (request()->isAjax()) {
|
||
$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()->isAjax()) {
|
||
$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', [], $this->replace);
|
||
}
|
||
|
||
/**
|
||
* 预览文本
|
||
*/
|
||
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', [], $this->replace);
|
||
}
|
||
|
||
/**
|
||
* 上传永久素材
|
||
* @param number $type
|
||
* @param object $data
|
||
* @return multitype:string mixed
|
||
*/
|
||
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()->isAjax()) {
|
||
$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()->isAjax()) {
|
||
$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', [], $this->replace);
|
||
}
|
||
|
||
/**
|
||
* 素材管理
|
||
*/
|
||
public function material()
|
||
{
|
||
//这这里的常量要与base中的区分,如果一致界面将无法渲染
|
||
$type = input("type", 1);
|
||
$this->assign("type", $type);
|
||
// return array( 'shop/material/material', [], $this->replace );
|
||
return $this->fetch('material/material', [], $this->replace);
|
||
}
|
||
} |