test
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

341 lines
16 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class Goods_WeliamController {
/**
* Comment: 商品列表信息获取
* Author: zzw
* Date: 2020/10/26 15:07
*/
public function goodsList(){
global $_W,$_GPC;
//基本参数信息获取
$status = $_GPC['status'] ? : 0;//商品状态,0:未审核。1:审核中,2:审核通过,3:审核驳回
$page = $_GPC['page'] ? : 1;
$pageIndex = 10;
//条件生成
$where = ['uniacid'=>$_W['uniacid'],'audit_status'=>$status];
if($_W['aid'] > 0) $where['aid'] = $_W['aid'];
//信息获取
list($total,$list) = Live::getGoodsParamsList($where,$page,$pageIndex);
$pager = wl_pagination($total, $page, $pageIndex);
include wl_template("goods/list");
}
/**
* Comment: 直播商品提交审核
* Author: zzw
* Date: 2020/10/26 14:08
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public function add(){
global $_W,$_GPC;
if($_W['ispost']){
//信息获取
$data = $_GPC['data'];
if (!$data['goods_id']) wl_message("请选择商品!" , referer() , 'error');
if (($data['priceType'] == 2 || $data['priceType'] == 3) && !$data['price'] && !$data['price2']) wl_message("请完善价格信息!" , referer(), 'error');
//获取商品信息
$goods = Live::getGoodsInfo($data['goods_id'],$data['goods_plugin']);
//基本信息参数配置
$params = [
'coverImgUrl' => $data['coverImgUrl'] ? tomedia($data['coverImgUrl']) : '' ,//图片
'name' => $data['name'] ? : '' ,//商品名称
'priceType' => $data['priceType'] ,//价格类型 1:一口价;2:价格区间;3:显示折扣价
'price' => $data['price'] ? sprintf("%.2f" , $data['price']) : '' ,//价格一
'price2' => $data['price2'] ? sprintf("%.2f" , $data['price2']) : '' ,//价格二
'url' => '' ,//跳转链接
];
//商品名称不存在 使用当前商品名称
if(!$params['name']){
$goodsName = $goods['goods_name'];
if(mb_strlen($goodsName) > 14) $goodsName = mb_substr($goodsName,0,14,'utf-8');
$params['name'] = $goodsName;
}
//价格一不存在 默认使用一口价 价格为商品当前价格
if(!$params['price'] || $params['price'] <= 0 ){
$params['priceType'] = intval(1);
$params['price'] = sprintf("%.2f",$goods['price']);
}
//图片不存在 使用当前商品logo图片
if(!$params['coverImgUrl']) {
//判断图片信息 微信规则限制 图片大小不能大于300像素*300像素;
list($width,$height) = getimagesize(tomedia($goods['logo']));//获取图片信息
if($width > 300 || $height > 300 ) wl_message("商品logo图片过大,请自行上传图片!", referer() , 'error');
//使用商品logo图片
$params['coverImgUrl'] = tomedia($goods['logo']);
}
//获取跳转地址
$params['url'] = Live::getWxAppPath($data['goods_id'],$data['goods_plugin']);
//提交商品信息
try{
//判断图片信息 微信规则限制 图片大小不能大于300像素*300像素;
list($width,$height) = getimagesize($params['coverImgUrl']);//获取图片信息
if($width > 300 || $height > 300 ) wl_message("图片超出限制,宽高不能大于300像素!", referer() , 'error');
//商品图片信息处理
$coverImgUrl = $params['coverImgUrl'];
$params['coverImgUrl'] = (new Live())->uploadTemporaryMaterial($params['coverImgUrl']);
//提交商品
$res = (new Live())->submitGoods($params);
//记录商品提交信息
$data = [
'aid' => $_W['aid'] ? : 0 ,
'uniacid' => $_W['uniacid'] ,
'goods_id' => $res['goodsId'] ,
'audit_id' => $res['auditId'] ,
'wl_goods_id' => $data['goods_id'] ,
'goods_plugin' => $data['goods_plugin'] ,
'title' => $params['name'] ,
'goods_img' => $coverImgUrl ,
'price_type' => $params['priceType'] ,
'price' => $params['price'] ,
'price2' => $params['price2'] ? : '' ,
];
pdo_insert(PDO_NAME."live_goods",$data);
wl_message('提交成功,请等待审核结果!' , web_url('live/goods/goodsList',['status'=>1]) , 'success');
}catch (Exception $e){
wl_message($e->getMessage(), referer() , 'error');
}
}
include wl_template("goods/add");
}
/**
* Comment: 请求撤回正在审核中的商品
* Author: zzw
* Date: 2020/10/26 16:31
*/
public function cancelAdd(){
global $_W,$_GPC;
//基本参数信息获取
$id = $_GPC['id'] OR Commons::sRenderError("不存在的商品信息,请刷新重试!");
//获取直播商品提交审核记录信息
$info = pdo_get(PDO_NAME."live_goods",['goods_id'=>$id]);
try{
//申请撤回商品
$params = [
'auditId' => $info['audit_id'],
'goodsId' => $info['goods_id']
];
$res = (new Live())->withdrawGoods($params);
//返回操作结果
if($res['errcode'] == 0) {
pdo_update(PDO_NAME."live_goods",['audit_status'=>0],['goods_id'=>$id]);
Commons::sRenderSuccess("操作成功");
}else Commons::sRenderError("操作失败");
}catch (Exception $e){
Commons::sRenderError($e->getMessage());
}
}
/**
* Comment: 请求让未审核的商品进行审核操作
* Author: zzw
* Date: 2020/10/27 9:41
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public function reSubmit(){
global $_W,$_GPC;
//基本参数信息获取
$id = $_GPC['id'] OR Commons::sRenderError("不存在的商品信息,请刷新重试!");
try{
//请求重新提交商品
$res = (new Live())->reSubmitGoods($id);
if($res['errcode'] == 0){
//修改 提交审核记录
pdo_update(PDO_NAME."live_goods"
,['audit_id'=>$res['auditId'],'audit_status'=>1],['goods_id'=>$id]);
Commons::sRenderSuccess("操作成功");
}else {
Commons::sRenderError("操作失败");
}
}catch (Exception $e){
Commons::sRenderError($e->getMessage());
}
}
/**
* Comment: 请求删除商品
* Author: zzw
* Date: 2020/10/26 16:23
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public function deleteLiveGoods(){
global $_W,$_GPC;
//基本参数信息获取
$id = $_GPC['id'] OR Commons::sRenderError("不存在的商品信息,请刷新重试!");
try{
//请求删除商品
$res = (new Live())->deleteGoods($id);
if($res['errcode'] == 0){
//商品删除成功 删除商品提交审核记录
pdo_delete(PDO_NAME."live_goods",['goods_id'=>$id]);
Commons::sRenderSuccess("操作成功");
}else {
Commons::sRenderError("操作失败");
}
}catch (Exception $e){
Commons::sRenderError($e->getMessage());
}
}
/**
* Comment: 编辑商品信息
* Author: zzw
* Date: 2020/10/27 9:31
* @throws \GuzzleHttp\Exception\GuzzleException
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public function editGoods(){
global $_W,$_GPC;
//基本参数信息获取
$status = $_GPC['status'] ? : 0;
$goods_id = $_GPC['goods_id'] OR wl_message("商品不存在,请刷新重试!" ,web_url('live/goods/goodsList',['status'=>$status]), 'error');
//商品信息获取
$params = pdo_get(PDO_NAME."live_goods",['goods_id'=>$goods_id]);//直播商品
$info = Live::getGoodsInfo($params['wl_goods_id'],$params['goods_plugin']);//平台商品
//信息修改操作
if($_W['ispost']){
//参数信息获取
$data = $_GPC['data'];//修改后新的直播商品信息
$data['wl_goods_id'] = $data['goods_id'];
unset($data['goods_name'],$data['goods_id'],$data['sid']);
//判断值是否被修改
if($status == 0) $allowUpdateFiled = ['coverImgUrl' , 'name' , 'priceType' , 'price' , 'price2' , 'url'];//所有信息都可以更新
else $allowUpdateFiled = ['priceType' , 'price' , 'price2'];//仅允许更新 价格类型和价格
$updateData['goodsId'] = $goods_id;//需要修改的信息
if(($data['goods_plugin'] != $params['goods_plugin'] || $data['wl_goods_id'] != $params['wl_goods_id']) && in_array('url',$allowUpdateFiled)){
//商品被修改 从新获取链接
$updateData['url'] = Live::getWxAppPath($data['goods_id'],$data['goods_plugin']);
}
if($data['goods_img'] != $params['goods_img'] && in_array('coverImgUrl',$allowUpdateFiled)){
//图片被修改 获取新图片的信息
if(!$data['goods_img']) $data['goods_img'] = tomedia($info['logo']);
else $data['goods_img'] = tomedia($data['goods_img']);
//判断图片信息 微信规则限制 图片大小不能大于300像素*300像素;
list($width,$height) = getimagesize($data['goods_img']);//获取图片信息
if($width > 300 || $height > 300 ) wl_message("图片超出限制,宽高不能大于300像素!", web_url('live/goods/editGoods',['status'=>$status,'goods_id'=>$goods_id]) , 'error');
$updateData['coverImgUrl'] = $data['goods_img'];
}
if($data['title'] != $params['title'] && in_array('name',$allowUpdateFiled)){
//商品名称被修改 获取新的商品名称
if(!$data['title']){
//商品名称不存在 使用当前商品名称
$goodsName = $info['goods_name'];
if(mb_strlen($goodsName) > 14) $goodsName = mb_substr($goodsName,0,14,'utf-8');
$updateData['name'] = $goodsName;
}else{
$updateData['name'] = $data['title'];
}
}
if($data['price_type'] != $params['price_type'] && in_array('priceType',$allowUpdateFiled)){
//价格类型被修改 获取新的价格类型
$updateData['priceType'] = $data['price_type'];
}
if($data['price'] != $params['price'] && in_array('price',$allowUpdateFiled)){
//左价格被修改 获取新的价格
$updateData['price'] = sprintf("%.2f" , $data['price']);
}
if($data['price2'] != $params['price2'] && in_array('price2',$allowUpdateFiled)){
//右价格被修改 获取新的价格
$updateData['price2'] = sprintf("%.2f" , $data['price2']);
}
//价格一不存在 默认使用一口价 价格为商品当前价格
if (!$updateData['price'] || $updateData['price'] <= 0) {
$updateData['priceType'] = intval(1);
$updateData['price'] = sprintf("%.2f" , $data['price']);
$updateData['price2'] = '';
}
//请求编辑信息
try{
//是否需要处理图片信息
if(array_key_exists('coverImgUrl',$updateData) && !empty($updateData['coverImgUrl'])){
$imgInfo = pathinfo($updateData['coverImgUrl']);//获取图片信息
if($imgInfo['basename']) $updateData['coverImgUrl'] = (new Live())->uploadTemporaryMaterial($updateData['coverImgUrl']);
}
//修改价格信息则三个价格参数都要传递
if(array_key_exists('price',$updateData) || array_key_exists('price2',$updateData) || array_key_exists('priceType',$updateData)){
$updateData['priceType'] = $data['price_type'];
$updateData['price'] = $data['price'];
$updateData['price2'] = $data['price2'];
}
//请求修改商品信息
$res = (new Live())->updateGoods($updateData);
if($res['errcode'] == 0) {
pdo_update(PDO_NAME."live_goods",$data,['goods_id'=>$goods_id]);
wl_message("操作成功!" ,web_url('live/goods/goodsList',['status'=>$status]) , 'success');
}else wl_message("操作失败!", web_url('live/goods/goodsList',['status'=>$status]) , 'error');
}catch (Exception $e){
wl_message($e->getMessage(), web_url('live/goods/goodsList',['status'=>$status]) , 'error');
}
}
include wl_template("goods/edit");
}
/**
* Comment: 信息同步
* Author: zzw
* Date: 2020/10/26 16:15
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public function infoSynchronization(){
global $_W,$_GPC;
//基本参数信息获取
$page = $_GPC['page'] ? : 1;
//根据总后台和代理商后台 调用不同的同步操作
try{
if($_W['aid'] > 0){
//代理商后台
$pageIndex = 50;
$where = ['uniacid' => $_W['uniacid'],'aid'=>$_W['aid']];//条件生成
//获取商品相关信息
$total = pdo_count(PDO_NAME."live_goods",$where);//商品总数信息
$list = pdo_getall(PDO_NAME."live_goods" ,$where ,['goods_id'],'','goods_id DESC',[$page,$pageIndex]);//商品列表
(new Live())->goodsInfoSynchronization(array_column($list,'goods_id'));
$totalPage = ceil($total / $pageIndex);
}else{
//总后台 商品状态,0:未审核。1:审核中,2:审核通过,3:审核驳回
$pageIndex = 15;
$pageStart = $page * $pageIndex - $pageIndex;
$res0 = (new Live())->wholeGoodsInfoSynchronization($pageStart,$pageIndex,0);
$res1 = (new Live())->wholeGoodsInfoSynchronization($pageStart,$pageIndex,1);
$res2 = (new Live())->wholeGoodsInfoSynchronization($pageStart,$pageIndex,2);
$res3 = (new Live())->wholeGoodsInfoSynchronization($pageStart,$pageIndex,3);
$totalPage = max([$res0,$res1,$res2,$res3]);
}
Commons::sRenderSuccess("同步成功",['total_page' => $totalPage]);
}catch (Exception $e){
Commons::sRenderError($e->getMessage());
}
}
/**
* Comment: 直播商品选择器
* Author: zzw
* Date: 2020/10/27 11:03
*/
public function selectGoods(){
global $_W,$_GPC;
try{
//基本参数信息获取 商品状态,0:未审核。1:审核中,2:审核通过,3:审核驳回
$status = intval(2);//选择商品 商品状态固定为2:审核通过
$page = $_GPC['page'] ? : 1;
$pageIndex = $_GPC['page_index'] ? : 10;
//条件生成
$where = ['uniacid'=>$_W['uniacid'],'audit_status'=>$status];
if($_W['aid'] > 0) $where['aid'] = $_W['aid'];
//信息获取
list($total,$list) = Live::getGoodsParamsList($where,$page,$pageIndex);
$pager = wl_pagination($total, $page, $pageIndex);
if($_GPC['is_block']) include wl_template("goods/select_goods");
else include wl_template("goods/select");
}catch (Exception $e){
Commons::sRenderError($e->getMessage());
}
}
}