mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-05-26 08:29:18 +08:00
修改商品
This commit is contained in:
parent
cd562da07d
commit
5970a1dbf5
@ -13,7 +13,7 @@ use think\console\Output;
|
||||
* Class UserLevel
|
||||
* @package app\data\command
|
||||
*/
|
||||
class UserLevel extends Command
|
||||
class UserUpgrade extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
@ -51,7 +51,7 @@ class ShopGoods extends Controller
|
||||
elseif ($this->type === 'recycle') $query->where(['deleted' => 1]);
|
||||
else $this->error("无法加载 {$this->type} 数据列表!");
|
||||
// 列表排序并显示
|
||||
$query->like('code,name,mark')->equal('status,cate');
|
||||
$query->like('code,name,marks,cateids')->equal('status');
|
||||
$query->order('sort desc,id desc')->page();
|
||||
}
|
||||
|
||||
@ -65,7 +65,7 @@ class ShopGoods extends Controller
|
||||
public function select()
|
||||
{
|
||||
$query = $this->_query($this->table);
|
||||
$query->equal('status,cate')->like('code,name,mark');
|
||||
$query->equal('status')->like('code,name,marks')->in('cates');
|
||||
$query->where(['deleted' => 0])->order('sort desc,id desc')->page();
|
||||
}
|
||||
|
||||
@ -78,13 +78,9 @@ class ShopGoods extends Controller
|
||||
*/
|
||||
protected function _page_filter(array &$data)
|
||||
{
|
||||
$this->marks = GoodsService::instance()->getMarkList();
|
||||
$this->clist = GoodsService::instance()->getCateList('arr2table');
|
||||
$clist = $this->app->db->name('ShopGoodsCate')->whereIn('id', array_column($data, 'cate'))->column('pid,name,status', 'id');
|
||||
foreach ($data as &$vo) {
|
||||
$vo['cate'] = $clist[$vo['cate']] ?? $vo['cate'];
|
||||
$vo['mark'] = str2arr($vo['mark'] ?: '', ',', $this->marks);
|
||||
}
|
||||
$this->marks = GoodsService::instance()->getMarkData();
|
||||
$this->cates = GoodsService::instance()->getCateData();
|
||||
GoodsService::instance()->buildItemData($data, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -153,12 +149,15 @@ class ShopGoods extends Controller
|
||||
$data['code'] = CodeExtend::uniqidNumber(14, 'G');
|
||||
}
|
||||
if ($this->request->isGet()) {
|
||||
$data['mark'] = str2arr($data['mark'] ?? '');
|
||||
$this->marks = GoodsService::instance()->getMarkList();
|
||||
$this->cates = GoodsService::instance()->getCateList('arr2table');
|
||||
$this->levels = $this->app->db->name('DataUserLevel')->where(['status' => 1])->order('number asc,id desc')->select()->toArray();
|
||||
$this->trucks = $this->app->db->name('ShopTruckTemplate')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('code,name');
|
||||
$this->discounts = $this->app->db->name('DataUserDiscount')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->select()->toArray();
|
||||
$data['marks'] = str2arr($data['marks'] ?? '');
|
||||
$data['payment'] = str2arr($data['payment'] ?? '');
|
||||
$data['cateids'] = str2arr($data['cateids'] ?? '');
|
||||
$this->marks = GoodsService::instance()->getMarkData();
|
||||
$this->cates = GoodsService::instance()->getCateData();
|
||||
$this->trucks = $this->app->db->name('ShopTruckTemplate')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('code,name', 'code');
|
||||
$this->payments = $this->app->db->name('ShopPayment')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('type,code,name', 'code');
|
||||
$this->upgrades = $this->app->db->name('DataUserUpgrade')->where(['status' => 1, 'deleted' => 0])->order('number asc,id desc')->column('number,name', 'id');
|
||||
$this->discounts = $this->app->db->name('DataUserDiscount')->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('id,name,items', 'id');
|
||||
// 商品规格处理
|
||||
$fields = 'goods_sku `sku`,goods_code,goods_spec `key`,price_selling `selling`,price_market `market`,number_virtual `virtual`,number_express `express`,reward_balance `balance`,reward_integral `integral`,status';
|
||||
$data['data_items'] = json_encode($this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->column($fields, 'goods_spec'), JSON_UNESCAPED_UNICODE);
|
||||
@ -169,7 +168,8 @@ class ShopGoods extends Controller
|
||||
[$count, $items] = [0, array_column(json_decode($data['data_items'], true), 0)];
|
||||
foreach ($items as $item) $count += intval($item['status']);
|
||||
if (empty($count)) $this->error('无效的的商品价格信息!');
|
||||
$data['mark'] = arr2str($data['mark'] ?? []);
|
||||
$data['marks'] = arr2str($data['marks'] ?? []);
|
||||
$data['payment'] = arr2str($data['payment'] ?? []);
|
||||
if (empty($data['price_market'])) $data['price_market'] = min(array_column($items, 'market'));
|
||||
if (empty($data['price_selling'])) $data['price_selling'] = min(array_column($items, 'selling'));
|
||||
$this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->update(['status' => 0]);
|
||||
|
@ -84,7 +84,7 @@ class UserDiscount extends Controller
|
||||
}
|
||||
$vo['items'] = json_encode($rule, JSON_UNESCAPED_UNICODE);
|
||||
} else {
|
||||
$query = $this->app->db->name('DataUserLevel');
|
||||
$query = $this->app->db->name('DataUserUpgrade');
|
||||
$this->levels = $query->where(['status' => 1])->order('number asc')->select()->toArray();
|
||||
if (empty($this->levels)) $this->error('未配置用户等级!');
|
||||
if (!empty($vo['items'])) foreach (json_decode($vo['items'], true) as $item) {
|
||||
|
@ -7,16 +7,16 @@ use think\admin\Controller;
|
||||
|
||||
/**
|
||||
* 用户等级管理
|
||||
* Class UserLevel
|
||||
* Class UserUpgrade
|
||||
* @package app\data\controller
|
||||
*/
|
||||
class UserLevel extends Controller
|
||||
class UserUpgrade extends Controller
|
||||
{
|
||||
/**
|
||||
* 绑定数据表
|
||||
* @var string
|
||||
*/
|
||||
private $table = 'DataUserLevel';
|
||||
private $table = 'DataUserUpgrade';
|
||||
|
||||
/**
|
||||
* 用户等级管理
|
@ -43,7 +43,7 @@ abstract class Auth extends Controller
|
||||
protected function initialize()
|
||||
{
|
||||
// 接口数据类型
|
||||
$this->type = input('api') ?: $this->request->header('api-name');
|
||||
$this->type = $this->request->header('api-name') ?: input('api');
|
||||
$this->type = $this->type ?: $this->request->header('api-type');
|
||||
if (empty($this->type) || empty(UserService::TYPES[$this->type])) {
|
||||
$this->error("接口通道未定义!");
|
||||
|
@ -29,7 +29,7 @@ class Goods extends Controller
|
||||
*/
|
||||
public function getMark()
|
||||
{
|
||||
$this->success('获取标签成功', GoodsService::instance()->getMarkList());
|
||||
$this->success('获取标签成功', GoodsService::instance()->getMarkData());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,11 +74,39 @@ class GoodsService extends Service
|
||||
return $cates;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取分类数据
|
||||
* @param boolean $simple 简化数据
|
||||
* @return array
|
||||
*/
|
||||
public function getCateData($simple = true): array
|
||||
{
|
||||
$cates = $this->app->db->name('ShopGoodsCate')->column('id,pid,name', 'id');
|
||||
foreach ($cates as $cate) if (isset($cates[$cate['pid']])) {
|
||||
$cates[$cate['id']]['parent'] =& $cates[$cate['pid']];
|
||||
}
|
||||
foreach ($cates as $key => $cate) {
|
||||
$id = $cate['id'];
|
||||
$cates[$id]['ids'][] = $cate['id'];
|
||||
$cates[$id]['names'][] = $cate['name'];
|
||||
while (isset($cate['parent']) && $cate = $cate['parent']) {
|
||||
$cates[$id]['ids'][] = $cate['id'];
|
||||
$cates[$id]['names'][] = $cate['name'];
|
||||
}
|
||||
$cates[$id]['ids'] = array_reverse($cates[$id]['ids']);
|
||||
$cates[$id]['names'] = array_reverse($cates[$id]['names']);
|
||||
if ($simple && count($cates[$id]['names']) !== $this->getCateLevel()) {
|
||||
unset($cates[$key]);
|
||||
}
|
||||
}
|
||||
return $cates;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品标签数据
|
||||
* @return array
|
||||
*/
|
||||
public function getMarkList(): array
|
||||
public function getMarkData(): array
|
||||
{
|
||||
$map = ['status' => 1];
|
||||
$query = $this->app->db->name('ShopGoodsMark');
|
||||
@ -88,29 +116,24 @@ class GoodsService extends Service
|
||||
/**
|
||||
* 商品数据绑定
|
||||
* @param array $data 商品主数据
|
||||
* @param boolean $simple 简化数据
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function buildItemData(array &$data = []): array
|
||||
public function buildItemData(array &$data = [], $simple = true): array
|
||||
{
|
||||
$cates = $this->app->db->name('ShopGoodsCate')->column('id,pid,name', 'id');
|
||||
foreach ($cates as $cate) if (isset($cates[$cate['pid']])) {
|
||||
$cates[$cate['id']]['parent'] =& $cates[$cate['pid']];
|
||||
}
|
||||
$codes = array_unique(array_column($data, 'code'));
|
||||
$query = $this->app->db->name('ShopGoodsItem')->withoutField('id,status,create_at');
|
||||
$items = $query->whereIn('goods_code', $codes)->where(['status' => 1])->select()->toArray();
|
||||
$cates = $this->getCateData();
|
||||
$marks = $this->app->db->name('ShopGoodsMark')->where(['status' => 1])->column('name');
|
||||
$query = $this->app->db->name('ShopGoodsItem')->withoutField('id,status,create_at');
|
||||
$items = $query->whereIn('goods_code', array_unique(array_column($data, 'code')))->where(['status' => 1])->select()->toArray();
|
||||
foreach ($data as &$vo) {
|
||||
$vo['marks'] = str2arr($vo['mark'], ',', $marks);
|
||||
$vo['cates'] = $cates[$vo['cate']] ?? [];
|
||||
$vo['slider'] = explode('|', $vo['slider']);
|
||||
$vo['specs'] = json_decode($vo['data_specs'], true);
|
||||
$vo['items'] = [];
|
||||
[$vo['marks'], $vo['cateids'], $vo['cateinfo']] = [str2arr($vo['marks'], ',', $marks), str2arr($vo['cateids']), []];
|
||||
foreach ($cates as $cate) if (in_array($cate['id'], $vo['cateids'])) $vo['cateinfo'] = $cate;
|
||||
[$vo['slider'], $vo['specs'], $vo['items']] = [str2arr($vo['slider'], '|'), json_decode($vo['data_specs'], true), []];
|
||||
foreach ($items as $item) if ($item['goods_code'] === $vo['code']) $vo['items'][] = $item;
|
||||
unset($vo['mark'], $vo['sort'], $vo['status'], $vo['deleted'], $vo['data_items'], $vo['data_specs']);
|
||||
if ($simple) unset($vo['marks'], $vo['sort'], $vo['status'], $vo['deleted'], $vo['data_items'], $vo['data_specs']);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
@ -221,7 +221,7 @@ class RebateCurrentService extends Service
|
||||
$pids = array_reverse(explode('-', trim($this->user['path'], '-')));
|
||||
if (empty($pids)) return false;
|
||||
// 获取拥有差额奖励的等级
|
||||
$query = $this->app->db->name('DataUserLevel');
|
||||
$query = $this->app->db->name('DataUserUpgrade');
|
||||
$numbs = $query->whereLike('rule', '%,' . self::PRIZE_05 . ',%')->column('number');
|
||||
// 获取可以参与奖励的代理
|
||||
$query = $this->app->db->name('DataUser')->whereIn('vip_number', $numbs);
|
||||
@ -275,6 +275,6 @@ class RebateCurrentService extends Service
|
||||
protected function checkLevelPrize(string $prize, int $level): bool
|
||||
{
|
||||
$map = [['number', '=', $level], ['rebate_rule', 'like', "%,{$prize},%"]];
|
||||
return $this->app->db->name('DataUserLevel')->where($map)->count() > 0;
|
||||
return $this->app->db->name('DataUserUpgrade')->where($map)->count() > 0;
|
||||
}
|
||||
}
|
@ -229,7 +229,7 @@ class UserService extends Service
|
||||
$teamsUsers = $this->app->db->name('DataUser')->whereLike('path', "%-{$uid}-%")->count();
|
||||
$orderAmount = $this->app->db->name('ShopOrder')->where(['uid' => $uid])->whereIn('status', [3, 4, 5])->sum('amount_total');
|
||||
// 计算用户级别
|
||||
foreach ($this->app->db->name('DataUserLevel')->where(['status' => 1])->order('number desc')->cursor() as $item) {
|
||||
foreach ($this->app->db->name('DataUserUpgrade')->where(['status' => 1])->order('number desc')->cursor() as $item) {
|
||||
$l1 = empty($item['goods_vip_status']) || $user['buy_vip_entry'] > 0;
|
||||
$l2 = empty($item['teams_users_status']) || $item['teams_users_number'] <= $teamsUsers;
|
||||
$l3 = empty($item['order_amount_status']) || $item['order_amount_number'] <= $orderAmount;
|
||||
@ -249,7 +249,7 @@ class UserService extends Service
|
||||
$tmpNumber = $query->whereRaw("a.uid={$uid} and a.payment_status=1 and a.status in (3,4,5) and b.vip_entry=1")->max('b.vip_number');
|
||||
if ($tmpNumber > $vipNumber) {
|
||||
$map = ['number' => $tmpNumber, 'status' => 1];
|
||||
$levelInfo = $this->app->db->name('DataUserLevel')->where($map)->find();
|
||||
$levelInfo = $this->app->db->name('DataUserUpgrade')->where($map)->find();
|
||||
if (!empty($levelInfo)) [$vipNumber, $vipName] = [$levelInfo['number'], $levelInfo['name']];
|
||||
}
|
||||
// 统计订单统计
|
||||
|
@ -2,15 +2,15 @@
|
||||
|
||||
use app\data\command\OrderClear;
|
||||
use app\data\command\UserBalance;
|
||||
use app\data\command\UserLevel;
|
||||
use app\data\command\UserUpgrade;
|
||||
use app\data\command\UserTransfer;
|
||||
use think\Console;
|
||||
|
||||
if (app()->request->isCli()) {
|
||||
Console::starting(function (Console $console) {
|
||||
$console->addCommand(UserLevel::class);
|
||||
$console->addCommand(OrderClear::class);
|
||||
$console->addCommand(UserBalance::class);
|
||||
$console->addCommand(UserUpgrade::class);
|
||||
$console->addCommand(UserTransfer::class);
|
||||
});
|
||||
} else {
|
||||
|
@ -5,33 +5,47 @@
|
||||
<form onsubmit="return false;" id="GoodsForm" data-auto="true" method="post" class='layui-form layui-card' autocomplete="off">
|
||||
<div class="layui-card-body padding-40 padding-bottom-20">
|
||||
|
||||
{notempty name='marks'}
|
||||
<div class="layui-form-item relative block">
|
||||
<span class="color-green font-w7 label-required-prev">商品标签</span>
|
||||
<span class="color-desc margin-left-5">Mark Name</span>
|
||||
<div class="tags-container layui-textarea">
|
||||
{foreach $marks as $mark}{if isset($vo.mark) && is_array($vo.mark) && in_array($mark, $vo.mark)}
|
||||
<label class="think-checkbox notselect"><input checked type="checkbox" name="mark[]" value="{$mark}" lay-ignore> {$mark}</label>
|
||||
{else}
|
||||
<label class="think-checkbox notselect"><input type="checkbox" name="mark[]" value="{$mark}" lay-ignore> {$mark}</label>
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
{notempty name='cates'}
|
||||
<!--{notempty name='cates'}-->
|
||||
<label class="layui-form-item block relative">
|
||||
<span class="color-green font-w7 label-required-prev">所属分类</span>
|
||||
<span class="color-desc margin-left-5">Category Name</span>
|
||||
<select class="layui-select" name="cate" lay-search>
|
||||
{foreach $cates as $cate}{if isset($vo.cate) and $vo.cate eq $cate.id}
|
||||
<option {$cate.sat} selected value="{$cate.id}">{$cate.spl}{$cate.name|default=''}</option>
|
||||
<select class="layui-select" name="cateids" lay-search>
|
||||
{foreach $cates as $cate}{if in_array($cate.id, $cate.ids)}
|
||||
<option selected value="{:arr2str($cate.ids)}">{:join(' > ', $cate.names)}</option>
|
||||
{else}
|
||||
<option {$cate.sat} value="{$cate.id}">{$cate.spl}{$cate.name|default=''}</option>
|
||||
<option value="{:arr2str($cate.ids)}">{:join(' > ', $cate.names)}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
{/notempty}
|
||||
<!--{/notempty}-->
|
||||
|
||||
<!--{notempty name='marks'}-->
|
||||
<div class="layui-form-item relative block">
|
||||
<span class="color-green font-w7 label-required-prev">商品标签</span>
|
||||
<span class="color-desc margin-left-5">Goods Mark Name</span>
|
||||
<div class="layui-textarea">
|
||||
{foreach $marks as $mark}{if isset($vo.marks) && is_array($vo.marks) && in_array($mark, $vo.marks)}
|
||||
<input checked type="checkbox" name="marks[]" value="{$mark}" title="{$mark}">
|
||||
{else}
|
||||
<input type="checkbox" name="marks[]" value="{$mark}" title="{$mark}">
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<!--{/notempty}-->
|
||||
|
||||
<!--{notempty name='payments'}-->
|
||||
<div class="layui-form-item relative block">
|
||||
<span class="color-green font-w7 label-required-prev">支付方式</span>
|
||||
<span class="color-desc margin-left-5">Goods Pyament Name</span>
|
||||
<div class="layui-textarea">
|
||||
{foreach $payments as $payment}{if isset($vo.payment) && is_array($vo.payment) && in_array($payment.code, $vo.payment)}
|
||||
<input checked type="checkbox" name="payment[]" value="{$payment.code}" title="{$payment.name}">
|
||||
{else}
|
||||
<input type="checkbox" name="payment[]" value="{$payment.code}" title="{$payment.name}">
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<!--{/notempty}-->
|
||||
|
||||
<label class="layui-form-item block relative">
|
||||
<span class="color-green font-w7">商品名称</span>
|
||||
@ -77,10 +91,50 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="layui-clear goods-item-box">
|
||||
|
||||
<div class="goods-item-box">
|
||||
<div class="layui-clear">
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">物流配送发货</span></legend>
|
||||
<legend><span class="layui-badge think-bg-violet">商品返利配置</span></legend>
|
||||
<div class="layui-form-item">
|
||||
{foreach ['非返利商品,其代理不会获得奖励','是返利商品,其代理将会获得奖励'] as $k => $v}
|
||||
{if (isset($vo.rebate_type) and $vo.rebate_type eq $k) or (empty($vo.rebate_type) and $k eq 0)}
|
||||
<input type="radio" name="rebate_type" value="{$k}" title="{$v}" checked>
|
||||
{else}
|
||||
<input type="radio" name="rebate_type" value="{$k}" title="{$v}">
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">入会礼包配置</span></legend>
|
||||
<div class="layui-form-item">
|
||||
{foreach ['非入会礼包,购买后不会升级等级','是入会礼包,购买后升级会员级别'] as $k=>$v}
|
||||
{if (isset($vo.vip_entry) and $vo.vip_entry eq $k) or (empty($vo.vip_entry) and $k eq 0)}
|
||||
<input type="radio" name="vip_entry" value="{$k}" title="{$v}" checked lay-filter="vip_entry">
|
||||
{else}
|
||||
<input type="radio" name="vip_entry" value="{$k}" title="{$v}" lay-filter="vip_entry">
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</fieldset>
|
||||
<!--{notempty name='upgrades'}-->
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">升级用户级别</span></legend>
|
||||
<label class="layui-form-item">
|
||||
<select name="vip_upgrade" class="layui-select" lay-filter="vip_upgrade">
|
||||
{foreach $upgrades as $upgrade}{if isset($vo.vip_upgrade) and $vo.vip_upgrade eq $upgrade.number}
|
||||
<option selected value="{$upgrade.number|default=0}">[ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
|
||||
{else}
|
||||
<option value="{$upgrade.number|default=0}">[ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
<span class="help-block">购买此商品用户可直接升级至此等级!</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
<!--{/notempty}-->
|
||||
</div>
|
||||
|
||||
<div class="layui-clear">
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">物流配送发货类型</span></legend>
|
||||
<div class="layui-form-item">
|
||||
{foreach ['虚拟商品,无需物流配送','实物商品,需要物流配送'] as $k=>$v}
|
||||
{if (isset($vo.truck_type) and $vo.truck_type eq $k) or (empty($vo.truck_type) and $k eq 0)}
|
||||
@ -90,38 +144,9 @@
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<!--{notempty name='discounts'}-->
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">入会礼包配置</span></legend>
|
||||
<div class="layui-form-item">
|
||||
{foreach ['非入会礼包,购买后不会影响等级','是入会礼包,购买后升级会员级别'] as $k=>$v}
|
||||
{if (isset($vo.vip_entry) and $vo.vip_entry eq $k) or (empty($vo.vip_entry) and $k eq 0)}
|
||||
<input type="radio" name="vip_entry" value="{$k}" title="{$v}" checked lay-filter="vip_entry">
|
||||
{else}
|
||||
<input type="radio" name="vip_entry" value="{$k}" title="{$v}" lay-filter="vip_entry">
|
||||
{/if}{/foreach}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
{notempty name='levels'}
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">升级用户级别</span></legend>
|
||||
<label class="layui-form-item">
|
||||
<select name="vip_upgrade" class="layui-select" lay-filter="vip_upgrade">
|
||||
{foreach $levels as $level}{if isset($vo.vip_upgrade) and $vo.vip_upgrade eq $level.number}
|
||||
<option selected value="{$level.number|default=0}">[ {$level.number|default='0'} ] {$level.name|default=''}</option>
|
||||
{else}
|
||||
<option value="{$level.number|default=0}">[ {$level.number|default='0'} ] {$level.name|default=''}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
<span class="help-block">购买此商品用户可直接升级至此等级!</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
{/notempty}
|
||||
|
||||
{notempty name='discounts'}
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">用户折扣方案</span></legend>
|
||||
<legend><span class="layui-badge think-bg-violet">用户购买折扣方案</span></legend>
|
||||
<label class="layui-form-item">
|
||||
<select name="discount_id" class="layui-select" lay-search>
|
||||
<option value="0"> -- 不设置 --</option>
|
||||
@ -131,29 +156,26 @@
|
||||
<option value="{$discount.id|default=0}">{$discount.name|default='0'}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
<span class="help-block">用户级别达到规则可享有折扣!</span>
|
||||
<span class="help-block">当用户等级达到指定等级后可享有折扣!</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
{/notempty}
|
||||
|
||||
{notempty name='levels'}
|
||||
<!--{/notempty}-->
|
||||
<!--{notempty name='upgrades'}-->
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">限制最低购买等级</span></legend>
|
||||
<label class="layui-form-item">
|
||||
<select name="limit_low_vip" class="layui-select">
|
||||
<option value="0"> -- 不设置 --</option>
|
||||
{foreach $levels as $level}{if isset($vo.limit_low_vip) and $vo.limit_low_vip eq $level.number}
|
||||
<option selected value="{$level.number|default=0}">[ {$level.number|default='0'} ] {$level.name|default=''}</option>
|
||||
{foreach $upgrades as $upgrade}{if isset($vo.limit_low_vip) and $vo.limit_low_vip eq $upgrade.number}
|
||||
<option selected value="{$upgrade.number|default=0}">[ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
|
||||
{else}
|
||||
<option value="{$level.number|default=0}">[ {$level.number|default='0'} ] {$level.name|default=''}</option>
|
||||
<option value="{$upgrade.number|default=0}">[ {$upgrade.number|default='0'} ] {$upgrade.name|default=''}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
<span class="help-block">
|
||||
限制此等级及低于此等级的用户不能购买!</span>
|
||||
<span class="help-block">限制此等级及低于此等级的用户不能购买!</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
{/notempty}
|
||||
|
||||
<!--{/notempty}-->
|
||||
<fieldset>
|
||||
<legend><span class="layui-badge think-bg-violet">商品限购数量</span></legend>
|
||||
<label class="layui-form-item">
|
||||
@ -161,7 +183,7 @@
|
||||
<span class="help-block">限制每人可购买数量(为 0 时不限制)!</span>
|
||||
</label>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
@ -260,7 +282,7 @@
|
||||
|
||||
<label class="layui-form-item block">
|
||||
<span class="font-w7 color-green">商品简介描述</span>
|
||||
<textarea class="layui-textarea" placeholder="请输入商品简介描述" name="remark">{$vo.remark|default=''|raw}</textarea>
|
||||
<textarea class="layui-textarea" placeholder="请输入商品简介描述" name="remarks">{$vo.remarks|default=''|raw}</textarea>
|
||||
</label>
|
||||
|
||||
<div class="layui-form-item block">
|
||||
|
@ -67,20 +67,24 @@
|
||||
商品名称:<span>{$vo.name|default='--'}</span><br>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-left">
|
||||
<td class="text-left sub-span-blue">
|
||||
<div>
|
||||
<!--{notempty name='clist'}-->
|
||||
所属分类:{$vo.cate.name|default='-'}<br>
|
||||
<!--{/notempty}-->
|
||||
</div>
|
||||
<div>
|
||||
{notempty name='vo.mark'}{foreach $vo.mark as $mark}
|
||||
<span class="notselect nowrap layui-badge layui-bg-cyan">{$mark}</span>
|
||||
{notempty name='vo.marks'}{foreach $vo.marks as $mark}
|
||||
<b class="notselect nowrap layui-badge layui-bg-cyan">{$mark}</b>
|
||||
{/foreach}{/notempty}
|
||||
</div>
|
||||
<div class="nowrap">
|
||||
{notempty name='vo.cateinfo'}
|
||||
{:join('<span class="layui-icon layui-icon-right font-s10"></span>', $vo.cateinfo.names)}<br>
|
||||
{/notempty}
|
||||
</div>
|
||||
</td>
|
||||
<td class='nowrap'>
|
||||
<div>销售状态:{eq name='vo.status' value='0'}<span class="layui-badge">已下架</span>{else}<span class="layui-badge layui-bg-green">销售中</span>{/eq}</div>
|
||||
<div>
|
||||
{eq name='vo.status' value='0'}<span class="layui-badge">已下架</span>{else}<span class="layui-badge layui-bg-green">销售中</span>{/eq}
|
||||
{eq name='vo.vip_entry' value='0'}<span class="layui-badge">非入会礼包</span>{else}<span class="layui-badge layui-bg-green">是入会礼包</span>{/eq}
|
||||
{eq name='vo.truck_type' value='0'}<span class="layui-badge">无需快递配送</span>{else}<span class="layui-badge layui-bg-green">需要快递配送</span>{/eq}
|
||||
</div>
|
||||
<div>创建时间:{$vo.create_at|format_datetime}</div>
|
||||
</td>
|
||||
<td class='nowrap sub-span-blue'>
|
||||
|
@ -21,26 +21,26 @@
|
||||
<label class="layui-input-inline">
|
||||
<select class="layui-select" name="mark" lay-search>
|
||||
<option value="">-- 全部标签 --</option>
|
||||
{foreach $marks as $mark}{if input('mark','') eq $mark}
|
||||
<option selected value="{$mark}">{$mark}</option>
|
||||
{foreach $marks as $mark}{if input('mark','') eq ','.$mark.','}
|
||||
<option selected value=",{$mark},">{$mark}</option>
|
||||
{else}
|
||||
<option value="{$mark}">{$mark}</option>
|
||||
<option value=",{$mark},">{$mark}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
{notempty name='clist'}
|
||||
{notempty name='cates'}
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">商品分类</label>
|
||||
<label class="layui-input-inline">
|
||||
<select class="layui-select" name="cate" lay-search>
|
||||
<select class="layui-select" name="cateids" lay-search>
|
||||
<option value="">-- 全部分类 --</option>
|
||||
{foreach $clist as $cate}{if input('cate','') eq $cate.id}
|
||||
<option {$cate.sat} selected value="{$cate.id}">{$cate.spl}{$cate.name|default=''}</option>
|
||||
{foreach $cates as $cate}{if input('cateids','') eq ','.$cate.id.','}
|
||||
<option selected value=",{$cate.id},">{:join(' > ', $cate.names)}</option>
|
||||
{else}
|
||||
<option {$cate.sat} value="{$cate.id}">{$cate.spl}{$cate.name|default=''}</option>
|
||||
<option value=",{$cate.id},">{:join(' > ', $cate.names)}</option>
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
</label>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="layui-form-item">
|
||||
<div class="relative block">
|
||||
<span class="color-green font-w7">库存数据</span>
|
||||
<span class="color-desc margin-left-5">Stock Data</span>
|
||||
<span class="color-desc margin-left-5">Goods Stock Data</span>
|
||||
<table class="layui-table border-0 margin-0" lay-skin="line">
|
||||
<colgroup>
|
||||
<col style="width:auto">
|
||||
|
5
vendor/composer/autoload_classmap.php
vendored
5
vendor/composer/autoload_classmap.php
vendored
@ -242,7 +242,10 @@ return array(
|
||||
'app\\data\\service\\NewsService' => $baseDir . '/app/data/service/NewsService.php',
|
||||
'app\\data\\service\\OrderService' => $baseDir . '/app/data/service/OrderService.php',
|
||||
'app\\data\\service\\PaymentService' => $baseDir . '/app/data/service/PaymentService.php',
|
||||
'app\\data\\service\\PrizeService' => $baseDir . '/app/data/service/PrizeService.php',
|
||||
'app\\data\\service\\RebateCurrentService' => $baseDir . '/app/data/service/RebateCurrentService.php',
|
||||
'app\\data\\service\\RebateMonthService' => $baseDir . '/app/data/service/RebateMonthService.php',
|
||||
'app\\data\\service\\RebateQuarterService' => $baseDir . '/app/data/service/RebateQuarterService.php',
|
||||
'app\\data\\service\\RebateYearService' => $baseDir . '/app/data/service/RebateYearService.php',
|
||||
'app\\data\\service\\TruckService' => $baseDir . '/app/data/service/TruckService.php',
|
||||
'app\\data\\service\\UserService' => $baseDir . '/app/data/service/UserService.php',
|
||||
'app\\data\\service\\payment\\AlipayPaymentService' => $baseDir . '/app/data/service/payment/AlipayPaymentService.php',
|
||||
|
5
vendor/composer/autoload_static.php
vendored
5
vendor/composer/autoload_static.php
vendored
@ -371,7 +371,10 @@ class ComposerStaticInit4f89fd0e0503ccf740f2fa5757825d7b
|
||||
'app\\data\\service\\NewsService' => __DIR__ . '/../..' . '/app/data/service/NewsService.php',
|
||||
'app\\data\\service\\OrderService' => __DIR__ . '/../..' . '/app/data/service/OrderService.php',
|
||||
'app\\data\\service\\PaymentService' => __DIR__ . '/../..' . '/app/data/service/PaymentService.php',
|
||||
'app\\data\\service\\PrizeService' => __DIR__ . '/../..' . '/app/data/service/PrizeService.php',
|
||||
'app\\data\\service\\RebateCurrentService' => __DIR__ . '/../..' . '/app/data/service/RebateCurrentService.php',
|
||||
'app\\data\\service\\RebateMonthService' => __DIR__ . '/../..' . '/app/data/service/RebateMonthService.php',
|
||||
'app\\data\\service\\RebateQuarterService' => __DIR__ . '/../..' . '/app/data/service/RebateQuarterService.php',
|
||||
'app\\data\\service\\RebateYearService' => __DIR__ . '/../..' . '/app/data/service/RebateYearService.php',
|
||||
'app\\data\\service\\TruckService' => __DIR__ . '/../..' . '/app/data/service/TruckService.php',
|
||||
'app\\data\\service\\UserService' => __DIR__ . '/../..' . '/app/data/service/UserService.php',
|
||||
'app\\data\\service\\payment\\AlipayPaymentService' => __DIR__ . '/../..' . '/app/data/service/payment/AlipayPaymentService.php',
|
||||
|
2
vendor/services.php
vendored
2
vendor/services.php
vendored
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// This file is automatically generated at:2021-03-10 10:48:21
|
||||
// This file is automatically generated at:2021-03-11 11:29:29
|
||||
declare (strict_types = 1);
|
||||
return array (
|
||||
0 => 'think\\admin\\Library',
|
||||
|
Loading…
x
Reference in New Issue
Block a user