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.
 
 
 
 
 
 

1113 lines
55 KiB

<?php
defined('IN_IA') or exit('Access Denied');
class Goodshouse_WeliamController
{
/**
* 编辑商品
*/
public function createactive()
{
global $_W , $_GPC;
$id = intval($_GPC['id']);
$plugin = trim($_GPC['plugin']) ? trim($_GPC['plugin']) : 'rush';
if ($_W['ispost']) {
$goods = $_GPC['goods'];
if (empty($goods['sid'])) {
if (is_store()) {
$goods['sid'] = $_W['storeid'];
}
}
if( empty($goods['pftid'])){
if(empty($goods['sid'])){
wl_message('商户错误,请选择商户');
}
$goods['aid'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$goods['sid']),'aid');
}
empty($goods['name']) && wl_message('请填写商品名称');
empty($goods['num']) && wl_message('请填写商品数量');
if($goods['creditmoney'] > $goods['price'] && $goods['creditmoney'] > 0) wl_message('积分抵扣金额不能大于商品金额');
//判断开启多规格时 是否添加了多规格信息
if ($_GPC['optionstatus'] == 1 && count($_GPC['spec_id']) <= 0) wl_message('请设置多规格信息');
$goods['cutoffstatus'] = $_GPC['cutoffstatus'];
$goods['optionstatus'] = $_GPC['optionstatus'];
$goods['independent'] = $_GPC['independent'];
$goods['isdistri'] = $_GPC['isdistri'];
$goods['isdistristatus']= $_GPC['isdistristatus'];
$goods['vipstatus'] = $_GPC['vipstatus'];
$goods['detail'] = base64_encode(htmlspecialchars_decode($goods['detail']));
$goods['describe'] = base64_encode(htmlspecialchars_decode($goods['describe']));
$goods['thumbs'] = serialize($goods['thumbs']);
$goods['extension_img'] = serialize($goods['extension_img']);
$tag = $_GPC['tag'];
$goods['tag'] = serialize($tag);
$userlabel = $_GPC['userlabel'];
$goods['userlabel'] = serialize($userlabel);
$level = $_GPC['level'];
$goods['level'] = serialize($level);
$goods['name'] = htmlspecialchars_decode($goods['name']);
$time = $_GPC['time'];
$goods['starttime'] = strtotime($time['start']);
$goods['endtime'] = strtotime($time['end']);
$goods['cutofftime'] = strtotime($_GPC['cutofftime']);
$goods['cateid'] = intval($_GPC['cateid']);
$goods['pay_type'] = serialize($_GPC['pay_type']);
$goods['cash_back'] = $_GPC['cash_back'] ? : 0;
$goods['return_proportion'] = $_GPC['return_proportion'] ? : 0;
$goods['yuecashback'] = sprintf("%.2f",$goods['yuecashback']);
$goods['vipyuecashback'] = sprintf("%.2f",$goods['vipyuecashback']);
if ($goods['cash_back'] == 1 && $goods['return_proportion'] < 1) wl_message('请填写返现比例');
if(!$id){
$goods['aid'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$goods['sid']),'aid');
}
//抢购状态通过抢购时间判断
if (is_store()) {
$audits = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $_W['storeid']] , 'audits');
if (empty($audits)) {
$goods['status'] = 5;
}
}
if ($goods['status'] != 5) {
if(!empty($_GPC['tostatus'])){
if ($goods['starttime'] > time()) {
$goods['status'] = 1;
}
else if ($goods['starttime'] < time() && time() < $goods['endtime']) {
$goods['status'] = 2;
}
else if ($goods['endtime'] < time()) {
$goods['status'] = 3;
}
}else{
$goods['status'] = 4;
}
}
//使用类型
if($goods['usestatus'] == 3){
$goods['optionstatus'] = 0;
$goods['appointstatus'] = 0;
$goods['allowapplyre'] = 1;
$goods['overrefund'] = 0;
}
//定时购买
if ($goods['usedatestatus'] == 1) {
$goods['week'] = serialize($goods['week']);
$goods['day'] = '';
}else if ($goods['usedatestatus'] == 2) {
$goods['day'] = serialize($goods['day']);
$goods['week'] = '';
}else{
$goods['usedatestatus'] = 0;
$goods['week'] = '';
$goods['day'] = '';
}
//会员减免
if($goods['vipstatus'] == 1){
$viparray = [];
$vipleid = $_GPC['vipleid'];
$vipprice = $_GPC['vipprice'];
$storeset = $_GPC['storeset'];
foreach($vipleid as $key => $vle){
$vipa['vipprice'] = sprintf("%.2f",$vipprice[$key]);
$vipa['storeset'] = sprintf("%.2f",$storeset[$key]);
$viparray[$vle] = $vipa;
}
$goods['viparray'] = serialize($viparray);
}
//分销商分佣数组
if(empty($goods['isdistri'])){
$disarray = [];
$disleid = $_GPC['disleid'];
$onedismoney = $_GPC['onedismoney'];
$twodismoney = $_GPC['twodismoney'];
foreach($disleid as $dkey => $dle){
$dlea['onedismoney'] = sprintf("%.2f",$onedismoney[$dkey]);
$dlea['twodismoney'] = sprintf("%.2f",$twodismoney[$dkey]);
$disarray[$dle] = $dlea;
}
$goods['disarray'] = serialize($disarray);
}
//预约数组
if($goods['appointstatus']>0){
$appointarray = [];
$appstartTime = $_GPC['appstartTime'];
$appendTime = $_GPC['appendTime'];
$peoplenums = $_GPC['peoplenums'];
if(!is_array($appstartTime)){
wl_message('请设置预约时间段信息!');
}
foreach($appstartTime as $appkey => $appoint){
$appinta['startTime'] = $appstartTime[$appkey];
$appinta['endTime'] = $appendTime[$appkey];
$appinta['peoplenums'] = $peoplenums[$appkey];
$appointarray[] = $appinta;
}
$goods['appointarray'] = serialize($appointarray);
}
if ($plugin == 'rush') {
//商品阶梯价操作
$goods['lp_status'] = $_GPC['lp_status'] ? : 0;
$goods['lp_set'] = is_array($_GPC['ld']) ? serialize(array_values($_GPC['ld'])) : '';
// 特定商品类型参数
if (empty($_GPC['cc_id']) || !is_numeric($_GPC['cc_id'])) wl_message('请选择商品类型,若显示为空,请联系管理员');
if (empty($_GPC['cc_child_id']) || !is_numeric($_GPC['cc_child_id'])) wl_message('请选择商品分类');
$goods['cc_id'] = $_GPC['cc_id'];
$goods['cc_child_id'] = $_GPC['cc_child_id'];
if ($goods['lp_status'] == 1 && is_array($_GPC['ld'])) {
$lpSet = array_values($_GPC['ld']);
$maxMax = max(array_column($lpSet , 'max'));
if ($maxMax > $goods['num']) {
wl_message('阶梯价上限不可超过最大库存!');
}
}
if (!empty($id)) {
Rush::updateActive($goods , ['id' => $id]);
}
else {
$id = Rush::saveRushActive($goods);
}
}
else if ($plugin == 'groupon') {
if (!empty($id)) {
Groupon::updateActive($goods , ['id' => $id]);
}
else {
$id = Groupon::savegrouponActive($goods);
}
}
else if ($plugin == 'fightgroup') {
if($goods['peoplenum'] <= 1) wl_message('成团人数最小为2');
if($goods['grouptime'] <= 0) wl_message('请填写组团时间');
$goods['merchantid'] = $goods['sid'];
unset($goods['sid']);
$goods['listorder'] = $goods['sort'];
unset($goods['sort']);
$goods['limitstarttime'] = $goods['starttime'];
unset($goods['starttime']);
$goods['limitendtime'] = $goods['endtime'];
unset($goods['endtime']);
$goods['logo'] = $goods['thumb'];
unset($goods['thumb']);
$goods['adv'] = $goods['thumbs'];
unset($goods['thumbs']);
$goods['stock'] = $goods['num'];
unset($goods['num']);
$goods['falsesalenum'] = $goods['allsalenum'];
unset($goods['allsalenum']);
$goods['vipdiscount'] = $goods['vipprice'];
unset($goods['vipprice']);
$goods['specstatus'] = $goods['optionstatus'];
unset($goods['optionstatus']);
$goods['categoryid'] = $goods['cateid'];
unset($goods['cateid']);
unset($goods['pftid']);
if($goods['is_lucky'] > 0){
$goods['luckynum'] = floor($goods['luckynum']);
if($goods['luckynum'] <= 1) {
$goods['luckynum'] = 1;
}
if($goods['luckynum'] > $goods['peoplenum']){
wl_message('幸运人数不能超过组团人数:'.$goods['peoplenum'].'人');
}
$goods['luckymoney'] = sprintf("%.2f",$goods['luckymoney']);
}
if (!empty($id)) {
Wlfightgroup::updateGoods($goods , $id);
}
else {
$id = Wlfightgroup::saveGoods($goods);
}
}
else if ($plugin == 'bargain') {
//砍价规则
$rule_pice = $_GPC['rule_pice'];
$rule_start = $_GPC['rule_start'];
$rule_end = $_GPC['rule_end'];
$len = count($rule_pice);
$bargainrule = [];
for ($k = 0 ; $k < $len ; $k++) {
$bargainrule[$k]['rule_pice'] = $rule_pice[$k];
$bargainrule[$k]['rule_start'] = $rule_start[$k];
$bargainrule[$k]['rule_end'] = $rule_end[$k];
}
$bargainrule = serialize($bargainrule);
$goods['rules'] = $bargainrule;
$goods['bar_image'] = $_GPC['bar_image'];
$goods['bar_bgc'] = $_GPC['bar_bgc'];
$goods['stock'] = $goods['num'];
unset($goods['num']);
$goods['falsejoinnum'] = $goods['allsalenum'];
unset($goods['allsalenum']);
unset($goods['optionstatus']);
unset($goods['pftid']);
if (!empty($id)) {
Bargain::updateActive($goods , ['id' => $id]);
}
else {
$id = Bargain::saveActive($goods);
}
}
//清理海报缓存
Tools::clearposter();
//保存规格
if ($goods['optionstatus'] || $goods['specstatus']) {
$this->spec_save($id , $plugin);
if($plugin == 'rush'){
$optionList = pdo_getall(PDO_NAME."goods_option",['type'=>1,'goodsid'=>$id],['stock']);
$totalnum = array_sum(array_column($optionList,'stock'));
pdo_update('wlmerchant_rush_activity',array('num' => $totalnum),array('id' => $id));
}else if($plugin == 'groupon'){
$optionList = pdo_getall(PDO_NAME."goods_option",['type'=>3,'goodsid'=>$id],['stock']);
$totalnum = array_sum(array_column($optionList,'stock'));
pdo_update('wlmerchant_groupon_activity',array('num' => $totalnum),array('id' => $id));
}else if($plugin == 'fightgroup'){
$optionList = pdo_getall(PDO_NAME."goods_option",['type'=>2,'goodsid'=>$id],['stock']);
$totalnum = array_sum(array_column($optionList,'stock'));
pdo_update('wlmerchant_fightgroup_goods',array('stock' => $totalnum),array('id' => $id));
}
}
$page = $_GPC['page'];
//编辑商品成功
$this->save_success($goods , $plugin,$page);
}
/*************************************************************************************************************/
//商品分类
$cate = pdo_getall('wlmerchant_' . $plugin . '_category' , [
'uniacid' => $_W['uniacid'] ,
'aid' => $_W['aid'] ,
'is_show' => 0
]);
if ($plugin == 'rush') {
//专题分类
$specials = pdo_getall('wlmerchant_rush_special' , ['uniacid' => $_W['uniacid'] , 'aid' => $_W['aid']]);
}
//运费模板
if(is_store()){
$express = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_express_template')."WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND sid IN (0,{$_W['storeid']}) ORDER BY id DESC");
}else{
$express = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_express_template')."WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} ORDER BY id DESC");
}
//社群
$communitylist = pdo_getall('wlmerchant_community' , [
'uniacid' => $_W['uniacid'] ,
'aid' => $_W['aid']
] , ['id' , 'communname']);
//分销设置
$distriset = p('distribution') ? Setting::wlsetting_read('distribution') : [];
//分销商等级
if($distriset['switch'] > 0){
$dislevel = pdo_getall('wlmerchant_dislevel', array('uniacid' => $_W['uniacid']),['id','name']);
}
//用户标签
$labels = pdo_getall('wlmerchant_userlabel' , ['uniacid' => $_W['uniacid']] , [
'id' ,
'name'
] , '' , 'sort DESC');
//一卡通等级
$levels = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_halflevel') . "WHERE uniacid = {$_W['uniacid']} AND status = 1 ORDER BY sort DESC");
//商品标签
$tag_type = ['rush' => 1 , 'groupon' => 3 , 'bargain' => 4 , 'fightgroup' => 2];
$presettags = pdo_getall('wlmerchant_tags' , [
'uniacid' => $_W['uniacid'] ,
'aid' => $_W['aid'] ,
'type' => $tag_type[$plugin]
] , ['id' , 'title'] , '' , 'sort DESC');
//自定义海报
if (p('diyposter')) {
$poster_type = ['rush' => 2 , 'groupon' => 5 , 'bargain' => 7 , 'fightgroup' => 6];
$posters = pdo_getall(PDO_NAME . 'poster' , [
'uniacid' => $_W['uniacid'] ,
'type' => $poster_type[$plugin]
] , ['id' , 'title']);
}
//支付有礼
if(p('paidpromotion')){
$paidlist = pdo_getall('wlmerchant_payactive',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
}
//锦鲤抽奖
if(agent_p('luckydraw')){
$drawlist = pdo_getall('wlmerchant_luckydraw',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
}
if ($id > 0) {
if ($plugin == 'rush') {
$goods = Rush::getSingleActive($id , '*');
$goods['lp_set'] = unserialize($goods['lp_set']);
}
else if ($plugin == 'groupon') {
$goods = Groupon::getSingleActive($id , '*');
}
else if ($plugin == 'bargain') {
$goods = Bargain::getSingleActive($id , '*');
$goods['rules'] = unserialize($goods['rules']);
$goods['num'] = $goods['stock'];
$goods['allsalenum'] = $goods['falsejoinnum'];
if(empty($goods['bar_bgc'])){
$goods['bar_bgc'] = '#68d3ff';
}
}
else if ($plugin == 'fightgroup') {
$goods = Wlfightgroup::getSingleGood($id , '*');
$goods['sid'] = $goods['merchantid'];
$goods['sort'] = $goods['listorder'];
$goods['starttime'] = $goods['limitstarttime'];
$goods['endtime'] = $goods['limitendtime'];
$goods['thumb'] = $goods['logo'];
$goods['thumbs'] = $goods['adv'];
$goods['num'] = $goods['stock'];
$goods['allsalenum'] = $goods['falsesalenum'];
$goods['vipprice'] = $goods['vipdiscount'];
$goods['optionstatus'] = $goods['specstatus'];
$goods['cateid'] = $goods['categoryid'];
}
$merchant = Rush::getSingleMerchant($goods['sid'] , 'id,storename,logo,groupid');
$goods['thumbs'] = unserialize($goods['thumbs']);
$tags = unserialize($goods['tag']);
$orderinfo = unserialize($goods['orderinfo']);
$userlabel = unserialize($goods['userlabel']);
$goods['level'] = unserialize($goods['level']);
//规格
$data = $this->spec_html($id , $plugin);
$html = $data['html'];
$allspecs = $data['allspecs'];
$options = $data['options'];
if(!empty($options)){
foreach($options as &$option){
$option['viparray'] = unserialize($option['viparray']);
$option['disarray'] = unserialize($option['disarray']);
}
}
if ($goods['usedatestatus'] == 1) {
$goods['week'] = unserialize($goods['week']);
}
if ($goods['usedatestatus'] == 2) {
$goods['day'] = unserialize($goods['day']);
}
if($goods['vipstatus'] == 1){
$viparray = unserialize($goods['viparray']);
}
if(empty($goods['isdistri'])){
$disarray = unserialize($goods['disarray']);
}
if(!empty($goods['appointarray'])){
$goods['appointarray'] = unserialize($goods['appointarray']);
}
}
if (empty($goods['starttime']) || empty($goods['endtime'])) {//初始化时间
$goods['starttime'] = time();
$goods['endtime'] = strtotime('+1 month');
$goods['cutofftime'] = strtotime('+2 month');
}
//推广图片反序列化
$goods['extension_img'] = unserialize($goods['extension_img']);
//支付方式
$goods['pay_type'] = unserialize($goods['pay_type']);
//满减活动
if(p('fullreduce')){
$fullreducelist = pdo_getall('wlmerchant_fullreduce_list',array('aid' => $_W['aid'],'uniacid' => $_W['uniacid']),array('id','title'));
}
//获取自定义表单信息
$formWhere = ['uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']];
if(is_store()) $formWhere['sid'] = $_W['storeid'];
$diyFormList = pdo_getall(PDO_NAME."diyform",$formWhere,['id','title'],'','create_time DESC,id DESC');
//富文本处理
if(is_base64($goods['detail'])) $goods['detail'] = htmlspecialchars_decode(base64_decode($goods['detail']));
if(is_base64($goods['describe'])) $goods['describe'] = htmlspecialchars_decode(base64_decode($goods['describe']));
// 获取特殊商品类型
if (!is_store() && empty($goods['pftid'])) {
$cc_data = Category::getStoreCategory();
} else {
$cc_data = Category::getStoreCategoryAll($_W['storeid']);
}
include wl_template('goodshouse/createactive');
}
/**
* 添加规格子项
*/
public function spec()
{
global $_W , $_GPC;
$spec = ['id' => random(32) , 'title' => $_GPC['title']];
include wl_template('goodshouse/spec');
}
/**
* 添加规格项
*/
public function spec_item()
{
global $_W , $_GPC;
$spec = ['id' => $_GPC['specid']];
$specitem = ['id' => random(32) , 'title' => $_GPC['title'] , 'show' => 1];
include wl_template('goodshouse/spec_item');
}
/**
* 完善图片链接
*/
public function jstomedia(){
global $_W , $_GPC;
$thumb = tomedia($_GPC['thumb']);
die($thumb);
}
/**
* 根据规格生成html
* @param $id
* @param $plugin
* @param $distriset
* @return string
*/
private function spec_html($id , $plugin)
{
global $_W;
$html = '';
if ($plugin == 'bargain') {
return $html;
}
$type = $this->spec_type($plugin);
$allspecs = pdo_fetchall('select * from ' . tablename('wlmerchant_goods_spec') . ' where goodsid=:id AND type = :type order by displayorder asc' , [
':id' => $id ,
':type' => $type
]);
foreach ($allspecs as &$s) {
$s['items'] = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_goods_spec_item') . "WHERE uniacid = {$_W['uniacid']} AND specid = {$s['id']} ORDER BY displayorder ASC");
}
unset($s);
$options = pdo_fetchall('select * from ' . tablename('wlmerchant_goods_option') . ' where goodsid=:id and type = :type order by id asc' , [
':id' => $id ,
':type' => $type
]);
$specs = [];
if (0 < count($options)) {
$specitemids = explode('_' , $options[0]['specs']);
foreach ($specitemids as $itemid) {
foreach ($allspecs as $ss) {
$items = $ss['items'];
foreach ($items as $it) {
while ($it['id'] == $itemid) {
$specs[] = $ss;
break;
}
}
}
}
$html = '';
$html .= '<table class="table table-bordered table-condensed">';
$html .= '<thead>';
$html .= '<tr class="active">';
$len = count($specs);
$newlen = 1;
$h = [];
$rowspans = [];
$i = 0;
while ($i < $len) {
$html .= '<th>' . $specs[$i]['title'] . '</th>';
$itemlen = count($specs[$i]['items']);
if ($itemlen <= 0) {
$itemlen = 1;
}
$newlen *= $itemlen;
$h = [];
$j = 0;
while ($j < $newlen) {
$h[$i][$j] = [];
++$j;
}
$l = count($specs[$i]['items']);
$rowspans[$i] = 1;
$j = $i + 1;
while ($j < $len) {
$rowspans[$i] *= count($specs[$j]['items']);
++$j;
}
++$i;
}
//已售
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">已售</div></div></th>';
//缩略图
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">预览图</div></div></th>';
if ($plugin == 'fightgroup') {
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">总数</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_stock_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_stock\');"></a></span></div></div></th>';
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">拼团价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_price_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_price\');"></a></span></div></div></th>';
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">单购价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_vipprice_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_vipprice\');"></a></span></div></div></th>';
if(!is_store()){
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">结算价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_settlementmoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_settlementmoney\');"></a></span></div></div></th>';
}
//$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">会员结算价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_vipsettlementmoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_vipsettlementmoney\');"></a></span></div></div></th>';
//if(!is_store()) $html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">一级分销</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_onedismoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_onedismoney\');"></a></span></div></div></th>';
}
else {
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">总数</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_stock_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_stock\');"></a></span></div></div></th>';
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">抢购价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_price_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_price\');"></a></span></div></div></th>';
//$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">会员价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_vipprice_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_vipprice\');"></a></span></div></div></th>';
if(!is_store()) {
$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">结算价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_settlementmoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_settlementmoney\');"></a></span></div></div></th>';
}
//$html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">会员结算价</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_vipsettlementmoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_vipsettlementmoney\');"></a></span></div></div></th>';
//if(!is_store()) $html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">一级分销</div><div class="input-group"><input type="number" min="0" class="form-control input-sm option_onedismoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_onedismoney\');"></a></span></div></div></th>';
}
// if ($distriset['ranknum'] > 1) {
// if(!is_store()) $html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">二级分销</div><div class="input-group"><input type="number" class="form-control input-sm option_twodismoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_twodismoney\');"></a></span></div></div></th>';
// }
// if ($distriset['ranknum'] > 2) {
// if(!is_store()) $html .= '<th><div class=""><div style="padding-bottom:10px;text-align:center;">三级分销</div><div class="input-group"><input type="number" class="form-control input-sm option_threedismoney_all" VALUE=""/><span class="input-group-addon" ><a href="javascript:;" class="fa fa-angle-double-down" title="批量设置" onclick="setCol(\'option_threedismoney\');"></a></span></div></div></th>';
// }
$html .= '</tr></thead>';
$m = 0;
while ($m < $len) {
$k = 0;
$kid = 0;
$n = 0;
$j = 0;
while ($j < $newlen) {
$rowspan = $rowspans[$m];
if (($j % $rowspan) == 0) {
$h[$m][$j] = [
'html' => '<td class=\'full\' rowspan=\'' . $rowspan . '\'>' . $specs[$m]['items'][$kid]['title'] . '</td>' ,
'id' => $specs[$m]['items'][$kid]['id']
];
}
else {
$h[$m][$j] = ['html' => '' , 'id' => $specs[$m]['items'][$kid]['id']];
}
++$n;
if ($n == $rowspan) {
++$kid;
if ((count($specs[$m]['items']) - 1) < $kid) {
$kid = 0;
}
$n = 0;
}
++$j;
}
++$m;
}
$hh = '';
$i = 0;
while ($i < $newlen) {
$hh .= '<tr>';
$ids = [];
$j = 0;
while ($j < $len) {
$hh .= $h[$j][$i]['html'];
$ids[] = $h[$j][$i]['id'];
++$j;
}
$ids = implode('_' , $ids);
$val = [
'id' => '' ,
'title' => '' ,
'stock' => '' ,
'price' => '' ,
'vipprice' => '' ,
'settlementmoney' => '' ,
'vipsettlementmoney' => '' ,
'onedismoney' => '' ,
'twodismoney' => '' ,
'threedismoney' => ''
];
foreach ($options as $o) {
while ($ids === $o['specs']) {
if ($type == 1) {
//抢购商品的销量
$stopBuyNum = WeliamWeChat::getSalesNum(1,$id,$o['id'],1,0);
}else if($type == 2){
$stopBuyNum = WeliamWeChat::getSalesNum(3,$id,$o['id'],1,0);
}else if($type == 3){
$stopBuyNum = WeliamWeChat::getSalesNum(2,$id,$o['id'],1,0);
}
$stopBuyNum = !empty($stopBuyNum) ? $stopBuyNum : 0;
$val = [
'id' => $o['id'] ,
'title' => $o['title'] ,
'stock' => $o['stock'] ,
'price' => $o['price'] ,
'vipprice' => $o['vipprice'] ,
'settlementmoney' => $o['settlementmoney'] ,
'vipsettlementmoney' => $o['vipsettlementmoney'] ,
'onedismoney' => $o['onedismoney'] ,
'twodismoney' => $o['twodismoney'] ,
'threedismoney' => $o['threedismoney'],
'thumb' => $o['thumb'],
'salenum' => $stopBuyNum
];
break;
}
}
//已售
$hh .= '<td>';
$hh .= '<div class=""><div style="padding-bottom:10px;text-align:center;">'.$val['salenum'].'</div></div>';
$hh .= '</td>';
//图片
$hh .= '<td>';
$hh .= '<input type="hidden" class = "option_thumb option_thumb_' . $ids .'" data-name="option_thumb_' . $ids .'" value="'.$val['thumb'].'" id="cimg-'. $ids .'" />';
$hh .= '<img style="width:32px;height:32px;cursor: pointer"';
$hh .= 'data-toggle="selectAttachment" data-input="#cimg-'. $ids .'" data-img="#pimg-'. $ids .'" id="pimg-'. $ids .'"';
$hh .= 'src="' .tomedia($val['thumb']).'" style="width:100%;"';
$hh .= 'data-toggle="popover" data-html ="true" data-placement="top" data-trigger ="hover" data-content="<img src='.tomedia($val['thumb']).' style="width:100px;height:100px;" /> ';
$hh .= '</td>';
$hh .= '<td>';
$hh .= '<input type="number" min="0" data-name="option_stock_' . $ids . '" type="text" class="form-control option_stock option_stock_' . $ids . '" value="' . $val['stock'] . '"/>';
$hh .= '</td>';
$hh .= '<input data-name="option_id_' . $ids . '" type="hidden" class="form-control option_id option_id_' . $ids . '" value="' . $val['id'] . '"/>';
$hh .= '<input data-name="option_ids" type="hidden" class="form-control option_ids option_ids_' . $ids . '" value="' . $ids . '"/>';
$hh .= '<input data-name="option_title_' . $ids . '" type="hidden" class="form-control option_title option_title_' . $ids . '" value="' . $val['title'] . '"/>';
$hh .= '<td><input type="number" min="0" data-name="option_price_' . $ids . '" type="text" class="form-control option_price option_price_' . $ids . '" value="' . $val['price'] . '"/></td>';
if($plugin == 'fightgroup'){
$hh .= '<td><input type="number" min="0" data-name="option_vipprice_' . $ids . '" type="text" class="form-control option_vipprice option_vipprice_' . $ids . '" value="' . $val['vipprice'] . '"/></td>';
}
if(!is_store()) {
$hh .= '<td><input type="number" min="0" data-name="option_settlementmoney_' . $ids . '" type="text" class="form-control option_settlementmoney option_settlementmoney_' . $ids . '" " value="' . $val['settlementmoney'] . '"/></td>';
}
//$hh .= '<td><input type="number" min="0" data-name="option_vipsettlementmoney_' . $ids . '" type="text" class="form-control option_vipsettlementmoney option_vipsettlementmoney_' . $ids . '" " value="' . $val['vipsettlementmoney'] . '"/></td>';
// if(!is_store()) $hh .= '<td><input type="number" min="0" data-name="option_onedismoney_' . $ids . '" type="text" class="form-control option_onedismoney option_onedismoney_' . $ids . '" " value="' . $val['onedismoney'] . '"/></td>';
// if ($distriset['ranknum'] > 1) {
// if(!is_store()) $hh .= '<td><input type="number" min="0" data-name="option_twodismoney_' . $ids . '" type="text" class="form-control option_twodismoney option_twodismoney_' . $ids . '" " value="' . $val['twodismoney'] . '"/></td>';
// }
// if ($distriset['ranknum'] > 2) {
// if(!is_store()) $hh .= '<td><input type="number" min="0" data-name="option_threedismoney_' . $ids . '" type="text" class="form-control option_threedismoney option_threedismoney_' . $ids . '" " value="' . $val['threedismoney'] . '"/></td>';
// }
$hh .= '</tr>';
++$i;
}
$html .= $hh;
$html .= '</table>';
}
$data['html'] = $html;
$data['allspecs'] = $allspecs;
$data['options'] = $options;
return $data;
}
/**
* 插件规格对应的类型
* @param $plugin
* @return mixed
*/
private function spec_type($plugin)
{
$spec_types = ['rush' => 1 , 'groupon' => 3 , 'fightgroup' => 2];
return $spec_types[$plugin];
}
/**
* 规格保存
* @param $id
* @param $plugin
*/
private function spec_save($id , $plugin)
{
global $_W,$_GPC;
$type = $this->spec_type($plugin);
$totalstocks = 0;
$spec_ids = $_POST['spec_id'];
$spec_titles = $_POST['spec_title'];
$specids = [];
$len = count($spec_ids);
$specids = [];
$spec_items = [];
$k = 0;
while ($k < $len) {
$spec_id = '';
$get_spec_id = $spec_ids[$k];
$a = [
'uniacid' => $_W['uniacid'] ,
'goodsid' => $id ,
'displayorder' => $k ,
'title' => $spec_titles[$get_spec_id]
];
if (is_numeric($get_spec_id)) { //判断是否是数字或字符串
pdo_update('wlmerchant_goods_spec' , $a , ['id' => $get_spec_id]);
$spec_id = $get_spec_id;
}
else {
$a['type'] = $type;
pdo_insert('wlmerchant_goods_spec' , $a);
$spec_id = pdo_insertid();
}
$spec_item_ids = $_POST['spec_item_id_' . $get_spec_id];
$spec_item_titles = $_POST['spec_item_title_' . $get_spec_id];
$spec_item_shows = $_POST['spec_item_show_' . $get_spec_id];
$spec_item_virtuals = $_POST['spec_item_virtual_' . $get_spec_id];
$itemlen = count($spec_item_ids);
$itemids = [];
$n = 0;
while ($n < $itemlen) {
$item_id = '';
$get_item_id = $spec_item_ids[$n];
$d = [
'uniacid' => $_W['uniacid'] ,
'specid' => $spec_id ,
'displayorder' => $n ,
'title' => $spec_item_titles[$n] ,
'show' => $spec_item_shows[$n] ,
];
if (is_numeric($get_item_id)) {
pdo_update('wlmerchant_goods_spec_item' , $d , ['id' => $get_item_id]);
$item_id = $get_item_id;
}
else {
pdo_insert('wlmerchant_goods_spec_item' , $d);
$item_id = pdo_insertid();
}
$itemids[] = $item_id;
$d['get_id'] = $get_item_id;
$d['id'] = $item_id;
$spec_items[] = $d;
++$n;
}
if (0 < count($itemids)) {
pdo_query('delete from ' . tablename('wlmerchant_goods_spec_item') . ' where specid=' . $spec_id . ' and id not in (' . implode(',' , $itemids) . ')');
}
else {
pdo_query('delete from ' . tablename('wlmerchant_goods_spec_item') . ' where specid=' . $spec_id);
}
pdo_update('wlmerchant_goods_spec' , ['content' => serialize($itemids)] , ['id' => $spec_id]);
$specids[] = $spec_id;
++$k;
}
if (0 < count($specids)) {
pdo_query('delete from ' . tablename('wlmerchant_goods_spec') . ' where type = ' . $type . ' and goodsid=' . $id . ' and id not in (' . implode(',' , $specids) . ')');
}
else {
pdo_query('delete from ' . tablename('wlmerchant_goods_spec') . ' where type = ' . $type . ' and goodsid=' . $id);
}
$optionArray = json_decode($_POST['optionArray'] , true);
$option_idss = $optionArray['option_ids'];
$len = count($option_idss);
$optionids = [];
$k = 0;
while ($k < $len) {
$option_id = '';
$ids = $option_idss[$k];
$get_option_id = $optionArray['option_id'][$k];
$idsarr = explode('_' , $ids);
$newids = [];
foreach ($idsarr as $key => $ida) {
foreach ($spec_items as $it) {
while ($it['get_id'] == $ida) {
$newids[] = $it['id'];
break;
}
}
}
$newids = implode('_' , $newids);
$a = [
'uniacid' => $_W['uniacid'] ,
'thumb' => $optionArray['option_thumb'][$k] ,
'stock' => $optionArray['option_stock'][$k] ,
'title' => $optionArray['option_title'][$k] ,
'price' => $optionArray['option_price'][$k] ,
'vipprice' => $optionArray['option_vipprice'][$k] ,
// 'settlementmoney' => $optionArray['option_settlementmoney'][$k] ,
// 'vipsettlementmoney' => $optionArray['option_vipsettlementmoney'][$k] ,
// 'onedismoney' => $optionArray['option_onedismoney'][$k] ,
// 'twodismoney' => $optionArray['option_twodismoney'][$k] ,
// 'threedismoney' => $optionArray['option_threedismoney'][$k] ,
'goodsid' => $id ,
'specs' => $newids ,
'type' => $type
];
if(!is_store()){
$a['settlementmoney'] = $optionArray['option_settlementmoney'][$k];
}
//会员减免
$viparray = [];
$vipleidkword = 'vipleid'.$get_option_id;
$vippricekword = 'vipprice'.$get_option_id;
$storesetkword = 'storeset'.$get_option_id;
$vipleid = $_GPC[$vipleidkword];
$vipprice = $_GPC[$vippricekword];
$storeset = $_GPC[$storesetkword];
foreach($vipleid as $key => $vle){
$vipa['vipprice'] = sprintf("%.2f",$vipprice[$key]);
$vipa['storeset'] = sprintf("%.2f",$storeset[$key]);
$viparray[$vle] = $vipa;
}
$a['viparray'] = serialize($viparray);
//分销佣金
$disarray = [];
$disleidkword = 'disleid'.$get_option_id;
$onedismoneykword = 'onedismoney'.$get_option_id;
$twodismoneykword = 'twodismoney'.$get_option_id;
$disleid = $_GPC[$disleidkword];
$onedismoney = $_GPC[$onedismoneykword];
$twodismoney = $_GPC[$twodismoneykword];
foreach($disleid as $keyy => $dddle){
$dddleaa['onedismoney'] = sprintf("%.2f",$onedismoney[$keyy]);
$dddleaa['twodismoney'] = sprintf("%.2f",$twodismoney[$keyy]);
$disarray[$dddle] = $dddleaa;
}
$a['disarray'] = serialize($disarray);
$totalstocks += $a['stock'];
if (empty($get_option_id)) {
pdo_insert('wlmerchant_goods_option' , $a);
$option_id = pdo_insertid();
}
else {
pdo_update('wlmerchant_goods_option' , $a , ['id' => $get_option_id]);
$option_id = $get_option_id;
}
$optionids[] = $option_id;
++$k;
}
if (0 < count($optionids)) {
pdo_query('delete from ' . tablename('wlmerchant_goods_option') . ' where type = ' . $type . ' AND goodsid=' . $id . ' and id not in ( ' . implode(',' , $optionids) . ')');
}
else {
pdo_query('delete from ' . tablename('wlmerchant_goods_option') . ' where type = ' . $type . ' AND goodsid=' . $id);
}
}
private function save_success($goods , $plugin,$page = 1)
{
global $_W;
$plugins = [
'rush' => ['name' => '抢购' , 'url' => web_url('rush/active/activelist',array('page'=>$page))] ,
'groupon' => ['name' => '团购' , 'url' => web_url('groupon/active/activelist',array('page'=>$page))] ,
'fightgroup' => ['name' => '拼团' , 'url' => web_url('wlfightgroup/fightgoods/ptgoodslist',array('page'=>$page))] ,
'bargain' => ['name' => '砍价' , 'url' => web_url('bargain/bargain_web/activitylist',array('page'=>$page))] ,
];
if ($goods['status'] == 5) {
$storename = pdo_getcolumn(PDO_NAME . 'merchantdata' , ['id' => $_W['storeid']] , 'storename');
//审核通知代理
$first = '您好,您有一个待审核任务需要处理';
$type = '审核商品';
$content = $plugins[$plugin]['name'] . '商品:' . $goods['name'];
$status = '待审核';
$remark = '商户[' . $storename . ']上传了一个' . $plugins[$plugin]['name'] . '商品待审核,请管理员尽快前往后台审核';
News::noticeAgent('storegood' , $_W['aid'] , $first , $type , $content , $status , $remark , time() , '');
}
wl_message('保存成功!' , $plugins[$plugin]['url'] , 'success');
}
public function selectMerchant()
{
global $_W , $_GPC;
$where = [];
$where['uniacid'] = $_W['uniacid'];
$where['aid'] = $_W['aid'];
$where['status'] = 2;
$where['enabled'] = 1;
$where['merchant_type'] = 2;# 新增逻辑必须是商户才可以添加商品
if ($_GPC['keyword']) $where['@storename@'] = $_GPC['keyword'];
if ($_GPC['enabled']) $where['enabled'] = $_GPC['enabled'];
$merchants = Rush::getNumMerchant('id,storename,logo' , $where , 'ID DESC' , 0 , 0 , 0);
$merchants = $merchants[0];
foreach ($merchants as $key => &$va) {
$va['logo'] = tomedia($va['logo']);
}
include wl_template('goodshouse/selectMerchant');
}
public function rules(){
include wl_template('goodshouse/rules');
}
public function appointarray(){
global $_W,$_GPC;
$houseflag = $_GPC['house'];
include wl_template('goodshouse/appointhtml');
}
/**
* 核销码列表
*/
public function checklist(){
global $_W , $_GPC;
$id = $_GPC['id'];
$plugin = $_GPC['plugin'];
$status = $_GPC['status']; //0全部 1已使用 2未使用
$pindex = max(1,intval($_GPC['page']));
if(empty($id) || empty($plugin)){
wl_message('无商品信息', referer(),'error');
}
//商品信息
if($plugin == 'rush'){
$goodinfo = pdo_get('wlmerchant_rush_activity',array('id' => $id),array('name','thumb','sid'));
$goodinfo['thumb'] = tomedia($goodinfo['thumb']);
}else if($plugin == 'groupon'){
$goodinfo = pdo_get('wlmerchant_groupon_activity',array('id' => $id),array('name','thumb','sid'));
$goodinfo['thumb'] = tomedia($goodinfo['thumb']);
}else if($plugin == 'wlfightgroup'){
$goodinfo = pdo_get('wlmerchant_fightgroup_goods',array('id' => $id),array('name','logo','merchantid'));
$goodinfo['sid'] = $goodinfo['merchantid'];
$goodinfo['thumb'] = tomedia($goodinfo['logo']);
}else if($plugin == 'bargain'){
$goodinfo = pdo_get('wlmerchant_bargain_activity',array('id' => $id),array('name','thumb','sid'));
$goodinfo['thumb'] = tomedia($goodinfo['thumb']);
}else if($plugin == 'coupon'){
$goodinfo = pdo_get('wlmerchant_couponlist',array('id' => $id),array('title','logo','merchantid'));
$goodinfo['name'] = $goodinfo['title'];
$goodinfo['sid'] = $goodinfo['merchantid'];
$goodinfo['thumb'] = tomedia($goodinfo['logo']);
}else if($plugin == 'activity'){
$goodinfo = pdo_get('wlmerchant_activitylist',array('id' => $id),array('title','thumb','sid'));
$goodinfo['name'] = $goodinfo['title'];
$goodinfo['thumb'] = tomedia($goodinfo['thumb']);
}
//商户信息
$merchant = pdo_get('wlmerchant_merchantdata',array('id' => $goodinfo['sid']),array('storename','logo'));
$merchant['logo'] = tomedia($merchant['logo']);
//条件筛选
$where = [
'uniacid' => $_W['uniacid'],
'goodsid' => $id,
'plugin' => $plugin
];
if($status == 1){
$where['status'] = 1;
}else if($status == 2){
$where['status'] = 0;
}
$lists = Util::getNumData('*','wlmerchant_checkcodelist',$where,'id DESC',$pindex,25,1);
$list = $lists[0];
$pager = $lists[1];
$tatal = $lists[2];
$typeList = [
'rush' => 1,
'groupon' => 10,
'wlfightgroup' => 2,
'bargain' => 12
];
foreach ($list as &$li){
$li['type'] = $typeList[$li['plugin']];
}
include wl_template('goodshouse/checklist');
}
/**
* 核销码导入
*/
public function importCode(){
global $_W , $_GPC;
$gid = $_GPC['gid'];
$plugin = $_GPC['plugin'];
if(empty($gid) || empty($plugin)){
wl_json(0, '缺少商品数据,请刷新重试');
}
$filename = $_FILES['file']['name'];
$filename = substr($filename, -4, 4);
if (empty ($filename)) {
wl_json(0, '请选择要导入的CSV文件');
}
if ($filename !== '.csv') {
wl_json(0, '请选择CSV文件');
}
$file_path = $_FILES['file']['tmp_name'];
$file_size = filesize($file_path); //文件大小
if ($file_size == 0) {
wl_json(0, '没有任何数据');
}
$info = util_csv::read_csv_lines($file_path, 9999, 0);
foreach ($info as $k => $v) {
$checkcode = trim($v[0]);
if(!empty($checkcode)){
$flag = pdo_getcolumn(PDO_NAME.'checkcodelist',array('uniacid'=>$_W['uniacid'],'checkcode'=>$checkcode),'id');
if(empty($flag)){
$data = [
'uniacid' => $_W['uniacid'],
'checkcode' => $checkcode,
'goodsid' => $gid,
'plugin' => $plugin,
'status' => 0
];
pdo_insert(PDO_NAME . 'checkcodelist', $data);
}
}
}
if($plugin == 'rush'){
pdo_update('wlmerchant_rush_activity',array('checkcodeflag' => 1),array('id' => $gid));
}else if($plugin == 'groupon'){
pdo_update('wlmerchant_groupon_activity',array('checkcodeflag' => 1),array('id' => $gid));
}else if($plugin == 'wlfightgroup'){
pdo_update('wlmerchant_fightgroup_goods',array('checkcodeflag' => 1),array('id' => $gid));
}else if($plugin == 'bargain'){
pdo_update('wlmerchant_bargain_activity',array('checkcodeflag' => 1),array('id' => $gid));
}else if($plugin == 'coupon'){
pdo_update('wlmerchant_couponlist',array('checkcodeflag' => 1),array('id' => $gid));
}else if($plugin == 'activity'){
pdo_update('wlmerchant_activitylist',array('checkcodeflag' => 1),array('id' => $gid));
}
wl_json(1, '导入成功');
}
public function deletecheckcode(){
global $_W , $_GPC;
$ids = $_GPC['ids'];
$id = $_GPC['id'];
if(!empty($ids)){
foreach ($ids as $v) {
pdo_delete('wlmerchant_checkcodelist',array('id'=>$v));
}
}else{
pdo_delete('wlmerchant_checkcodelist',array('id'=>$id));
}
show_json(1, '操作成功');
}
public function emptycheckcode(){
global $_W , $_GPC;
$id = $_GPC['gid'];
$plugin = $_GPC['plugin'];
if(empty($id) || empty($plugin)){
show_json(0, '无关键参数,请刷新页面重试');
}
$res = pdo_delete('wlmerchant_checkcodelist',array('goodsid'=>$id,'plugin'=>$plugin,'uniacid' => $_W['uniacid']));
if($res){
//修改商品状态
if($plugin == 'rush'){
pdo_update('wlmerchant_rush_activity',array('checkcodeflag' => 0),array('id' => $id));
}else if($plugin == 'groupon'){
pdo_update('wlmerchant_groupon_activity',array('checkcodeflag' => 0),array('id' => $id));
}else if($plugin == 'wlfightgroup'){
pdo_update('wlmerchant_fightgroup_goods',array('checkcodeflag' => 0),array('id' => $id));
}else if($plugin == 'bargain'){
pdo_update('wlmerchant_bargain_activity',array('checkcodeflag' => 0),array('id' => $id));
}else if($plugin == 'coupon'){
pdo_update('wlmerchant_couponlist',array('checkcodeflag' => 0),array('id' => $id));
}else if($plugin == 'activity'){
pdo_update('wlmerchant_activitylist',array('checkcodeflag' => 0),array('id' => $id));
}
show_json(1, '操作成功');
}else{
show_json(0, '操作失败,请刷新页面重试');
}
}
public function getClassAll()
{
global $_W , $_GPC;
$cc_id = $_GPC['cc_id'];
$list = Category::getChildCategoryAll($cc_id,['id','name']);
if ($list) show_json(1, ['list' => $list]);
else show_json(2, '数据为空');
}
}