AUTHORITY_MERCHANT_READ
AUTHORITY_MERCHANT_READ = 'merchant_read'
api_list(array $data = array()) : array
获取数据列表 需要判断浏览权限
$request = array( 'search' => array(),//搜索、筛选 'sort' => array(),//排序 'size' => 0,//每页的条数 'page' => 0, //当前页数,如果是等于 all 那么则查询所有 'start' => 0, //开始的位置,如果存在,则page无效 ); limit的分页算法是:当前页数-1 * page_size 序号的算法:key键+1,+每页显示的条数。等于分页后的序号。{key + 1 + page_size}
返回的数据: $data = array( 'row_count' => //数据总条数 'limit_count' => //已取出条数 'page_size' => //每页的条数 'page_count' => //总页数 'data' => //数据 );
MERCHANTADMINIMAGELIST {"class":"merchant/admin_image","method":"api_list"}
array | $data |
api_qiniu_uptoken(array $data = array()) : array
获取 商家图片 上传的token $data = array( "merchant_id" 商家ID "image_name" 文件的原名字 "image_size" 文件的大小 "image_type" 文件的类型 "image_format" 文件的后缀 )
返回值: array( "qiniu_uptoken" 七牛的上传token "image_id" 图片ID "merchant_image_id" 商家图片ID )
MERCHANTADMINIMAGEQINIUUPTOKEN {"class":"merchant/admin_image","method":"api_qiniu_uptoken"}
array | $data |
api_qiniu_state(array $data = array()) : boolean
更新上传商家图片的状态 $data = array( "merchant_image_id" 商品图片ID "image_format" 文件的后缀格式 "image_width" 文件的宽 "image_height" 文件的高 "image_hash" hash值 )
MERCHANTADMINIMAGEQINIUSTATE {"class":"merchant/admin_image","method":"api_qiniu_state"}
array | $data |
<?php
/** ---- eapie ----
* 优狐积木框架,让开发就像组装积木一样简单!
* 解放千千万万程序员!这只是1.0版本,后续版本势如破竹!
*
* QQ群:523668865
* 开源地址 https://gitee.com/lxh888/openshop
* 官网 http://eonfox.com/
* 后端框架文档 http://cao.php.eonfox.com
*
* 作者:绵阳市优狐网络科技有限公司
* 电话/微信:18981181942
* QQ:294520544
*/
namespace eapie\source\request\merchant;
use eapie\main;
use eapie\error;
//商家图片
class admin_image extends \eapie\source\request\merchant
{
/**
* 检查编辑图片的权限
*
* MERCHANTADMINIMAGEEDITCHECK
* {"class":"merchant/admin_image","method":"api_edit_check"}
*
* @return bool
*/
public function api_edit_check(){
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_IMAGE_EDIT);
return true;
}
/**
* 编辑图片信息
*
* MERCHANTADMINIMAGEEDIT
* {"class":"merchant/admin_image","method":"api_edit"}
*
* @param array $data
* @return bool
*/
public function api_edit($data = array()){
//检查权限
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_IMAGE_EDIT);
//检查数据
object(parent::ERROR)->check($data, 'merchant_image_id', parent::TABLE_MERCHANT_IMAGE, array('args'));
if( isset($data['image_name']) )
object(parent::ERROR)->check($data, 'image_name', parent::TABLE_IMAGE, array('format', 'length'));
if( isset($data['image_sort']) )
object(parent::ERROR)->check($data, 'image_sort', parent::TABLE_IMAGE, array('args'));
//获取旧数据
$merchant_image_data = object(parent::TABLE_MERCHANT_IMAGE)->find($data['merchant_image_id']);
if( empty($merchant_image_data) ){
throw new error("ID有误,数据不存在");
}
//获取图片数据
if( empty($merchant_image_data['image_id']) ){
throw new error("图片ID为空");
}
$image_data = object(parent::TABLE_IMAGE)->find($merchant_image_data['image_id']);
if( empty($image_data) ){
throw new error("图片ID有误,数据不存在");
}
$update = array(
"where" => array( array('image_id=[+]', (string)$image_data['image_id']) ),
"data" => array()
);
//白名单 私密数据不能获取
$whitelist = array(
'image_name',
'image_sort',
);
$update["data"] = cmd(array($data, $whitelist), 'arr whitelist');
if( !empty($update["data"]) ){
foreach($update["data"] as $key => $value){
if( isset($image_data[$key]) ){
if($image_data[$key] == $value){
unset($update["data"][$key]);
}
}
}
}
if( empty($update["data"]) ){
throw new error("没有需要更新的数据");
}
$update["data"]['image_update_time'] = time();
//更新
if( object(parent::TABLE_IMAGE)->update( $update["where"], $update["data"]) ){
//更新商家修改时间
object(parent::TABLE_MERCHANT)->update(
array( array('merchant_id=[+]', $merchant_image_data['merchant_id']) ),
array('merchant_update_time' => time() )
);
//插入操作日志
object(parent::TABLE_ADMIN_LOG)->insert($data, $update);
return $data['merchant_image_id'];
}else{
throw new error("操作失败");
}
}
/**
* 获取数据列表
* 需要判断浏览权限
*
* $request = array(
* 'search' => array(),//搜索、筛选
* 'sort' => array(),//排序
* 'size' => 0,//每页的条数
* 'page' => 0, //当前页数,如果是等于 all 那么则查询所有
* 'start' => 0, //开始的位置,如果存在,则page无效
* );
* limit的分页算法是:当前页数-1 * page_size
* 序号的算法:key键+1,+每页显示的条数。等于分页后的序号。{key + 1 + page_size}
*
* 返回的数据:
* $data = array(
* 'row_count' => //数据总条数
* 'limit_count' => //已取出条数
* 'page_size' => //每页的条数
* 'page_count' => //总页数
* 'data' => //数据
* );
*
* MERCHANTADMINIMAGELIST
* {"class":"merchant/admin_image","method":"api_list"}
*
* @param array $data
* @return array
*/
public function api_list($data = array()){
//检查权限
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_MERCHANT_READ);
$config = array(
'orderby' => array(),
'where' => array(),
'limit' => object(parent::REQUEST)->limit($data, parent::REQUEST_ADMIN),
);
$config["orderby"] = object(parent::REQUEST)->orderby($data, array(
'sort_desc' => array('image_sort', true),
'sort_asc' => array('image_sort', false),
'name_desc' => array('image_name', true),
'name_asc' => array('image_name', false),
'type_desc' => array('image_type', true),
'type_asc' => array('image_type', false),
'size_desc' => array('image_size', true),
'size_asc' => array('image_size', false),
'state_desc' => array('image_state', true),
'state_asc' => array('image_state', false),
'insert_time_desc' => array('image_insert_time', true),
'insert_time_asc' => array('image_insert_time', false),
'update_time_desc' => array('image_update_time', true),
'update_time_asc' => array('image_update_time', false),
));
//避免排序重复
$config["orderby"][] = array('merchant_image_id', false);
if(!empty($data['search'])){
//商品ID 筛选
if( isset($data['search']['merchant_id']) && is_string($data['search']['merchant_id']) ){
$config["where"][] = array('[and] mi.merchant_id=[+]', $data['search']['merchant_id']);
}
}
return object(parent::TABLE_MERCHANT_IMAGE)->select_page($config);
}
/**
* 获取 商家图片 上传的token
* $data = array(
* "merchant_id" 商家ID
* "image_name" 文件的原名字
* "image_size" 文件的大小
* "image_type" 文件的类型
* "image_format" 文件的后缀
* )
*
* 返回值:
* array(
* "qiniu_uptoken" 七牛的上传token
* "image_id" 图片ID
* "merchant_image_id" 商家图片ID
* )
*
* MERCHANTADMINIMAGEQINIUUPTOKEN
* {"class":"merchant/admin_image","method":"api_qiniu_uptoken"}
*
* @param array $data
* @return array
*/
public function api_qiniu_uptoken($data = array()){
//检查权限
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_IMAGE_UPLOAD);
object(parent::ERROR)->check($data, 'merchant_id', parent::TABLE_MERCHANT, array('args', 'exists_id'));
object(parent::ERROR)->check($data, 'image_name', parent::TABLE_IMAGE, array('format', 'length'));
object(parent::ERROR)->check($data, 'image_type', parent::TABLE_IMAGE, array('args', 'mime_limit'));
object(parent::ERROR)->check($data, 'image_size', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_format', parent::TABLE_IMAGE, array('args'));
//获取配置
$qiniu_config = object(parent::TABLE_CONFIG)->data(object(parent::TABLE_CONFIG)->find("qiniu_access"), true);
if( empty($qiniu_config["bucket"]) ){
throw new error("配置异常");
}
//白名单 私密数据不能获取
$whitelist = array(
'image_name',
'image_type',
'image_size',
'image_format',
);
$image_insert_data = cmd(array($data, $whitelist), 'arr whitelist');
$image_insert_data['image_id'] = object(parent::TABLE_IMAGE)->get_unique_id();
$image_insert_data['user_id'] = $_SESSION['user_id'];
$image_insert_data['image_path'] = $qiniu_config["bucket"];//储存的空间
$image_insert_data['image_state'] = 0;
$image_insert_data['image_insert_time'] = time();
$image_insert_data['image_update_time'] = time();
//生成一个图片表数据
if( !object(parent::TABLE_IMAGE)->insert($image_insert_data) ){
throw new error("图片登记失败");
}
$insert_data = array(
"merchant_image_id" => object(parent::TABLE_MERCHANT_IMAGE)->get_unique_id(),
"user_id" => $_SESSION['user_id'],
"merchant_id" => $data["merchant_id"],
"image_id" => $image_insert_data['image_id'],
"merchant_image_time" => time(),
);
//生成一个图片表数据
if( !object(parent::TABLE_MERCHANT_IMAGE)->insert($insert_data) ){
object(parent::TABLE_IMAGE)->remove($image_insert_data['image_id']);
throw new error("商品图片登记失败");
}
//根据文件大小,设置有效时间
$qiniu_config["expires"] = 3600; //一个小时
$qiniu_config["policy"] = array(
'returnBody' => '{"key":"$(key)","hash":"$(etag)","type":$(mimeType),"size":$(fsize),"name":$(fname),"bucket":"$(bucket)","width":"$(imageInfo.width)","height":"$(imageInfo.height)","format":"$(imageInfo.format)"}',
//限定用户上传的文件类型。
//'mimeLimit' =>'image/*'
);
$qiniu_uptoken = object(parent::PLUGIN_QINIU)->uptoken($qiniu_config);
if( !empty($qiniu_uptoken["errno"]) ){
//删除文件
object(parent::TABLE_IMAGE)->remove($image_insert_data['image_id']);
object(parent::TABLE_MERCHANT_IMAGE)->remove($insert_data["merchant_image_id"]);
throw new error($qiniu_uptoken["error"]);
}
//更新商家修改时间
object(parent::TABLE_MERCHANT)->update(
array( array('merchant_id=[+]', $data['merchant_id']) ),
array('merchant_update_time' => time() )
);
//插入操作日志
object(parent::TABLE_ADMIN_LOG)->insert($data, array("merchant_image"=>$insert_data, "image"=>$image_insert_data));
return array("qiniu_uptoken" => $qiniu_uptoken["data"], "image_id" => $image_insert_data["image_id"], "merchant_image_id" => $insert_data["merchant_image_id"]);
}
/**
* 更新上传商家图片的状态
* $data = array(
* "merchant_image_id" 商品图片ID
* "image_format" 文件的后缀格式
* "image_width" 文件的宽
* "image_height" 文件的高
* "image_hash" hash值
* )
*
* MERCHANTADMINIMAGEQINIUSTATE
* {"class":"merchant/admin_image","method":"api_qiniu_state"}
*
* @param array $data
* @return bool
*/
public function api_qiniu_state($data = array()){
//检查权限
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_IMAGE_UPLOAD);
object(parent::ERROR)->check($data, 'merchant_image_id', parent::TABLE_MERCHANT_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_width', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_format', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_width', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_height', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_hash', parent::TABLE_IMAGE, array('args'));
object(parent::ERROR)->check($data, 'image_path', parent::TABLE_IMAGE, array('args'));
//获取旧数据
$merchant_image_data = object(parent::TABLE_MERCHANT_IMAGE)->find($data['merchant_image_id']);
if( empty($merchant_image_data) ){
throw new error("ID有误,数据不存在");
}
//获取图片数据
if( empty($merchant_image_data['image_id']) ){
throw new error("图片ID为空");
}
$update = array(
"where" => array( array('image_id=[+]', (string)$merchant_image_data['image_id']) ),
"data" => array()
);
//白名单 私密数据不能获取
$whitelist = array(
'image_format',
'image_width',
'image_height',
'image_hash',
);
$update["data"] = cmd(array($data, $whitelist), 'arr whitelist');
//上传情况
$update["data"]['image_state'] = 1;
$update["data"]['image_update_time'] = time();
if( object(parent::TABLE_IMAGE)->update( $update['where'], $update["data"]) ){
//更新商家修改时间
object(parent::TABLE_MERCHANT)->update(
array( array('merchant_id=[+]', $merchant_image_data['merchant_id']) ),
array('merchant_update_time' => time() )
);
//插入操作日志
object(parent::TABLE_ADMIN_LOG)->insert($data, $update);
return $data['merchant_image_id'];
}else{
throw new error("操作失败");
}
}
/**
* 删除商家图片(七牛云的图片也要删除)
*
* MERCHANTADMINIMAGEQINIUREMOVE
* {"class":"merchant/admin_image","method":"api_qiniu_remove"}
*
* @param array $data
* @return bool
*/
public function api_qiniu_remove($data = array()){
//检查权限
object(parent::REQUEST_ADMIN)->check(parent::AUTHORITY_IMAGE_REMOVE);
//检查数据
object(parent::ERROR)->check($data, 'merchant_image_id', parent::TABLE_MERCHANT_IMAGE, array('args'));
//获取旧数据
$merchant_image_data = object(parent::TABLE_MERCHANT_IMAGE)->find($data['merchant_image_id']);
if( empty($merchant_image_data) ){
throw new error("ID有误,数据不存在");
}
//获取图片数据
if( !empty($merchant_image_data['image_id']) ){
//获取配置
$qiniu_config = object(parent::TABLE_CONFIG)->data(object(parent::TABLE_CONFIG)->find("qiniu_access"), true);
if( empty($qiniu_config) ){
throw new error("配置异常");
}
$qiniu_config["key"] = $merchant_image_data["image_id"];
$qiniu_uptoken = object(parent::PLUGIN_QINIU)->delete($qiniu_config);
if( !empty($qiniu_uptoken["errno"]) ){
throw new error($qiniu_uptoken["error"]);
}
//删除图片登记
object(parent::TABLE_IMAGE)->remove($merchant_image_data['image_id']);
}
if( object(parent::TABLE_MERCHANT_IMAGE)->remove($data['merchant_image_id']) ){
//更新商家修改时间
object(parent::TABLE_MERCHANT)->update(
array( array('merchant_id=[+]', $merchant_image_data['merchant_id']) ),
array('merchant_update_time' => time() )
);
//插入操作日志
object(parent::TABLE_ADMIN_LOG)->insert($data, $merchant_image_data);
return $data['merchant_image_id'];
}else{
throw new error("操作失败");
}
}
}