修改商品管理

This commit is contained in:
Anyon 2020-09-09 11:45:37 +08:00
parent f75ba9fe78
commit 7b9055626e
5 changed files with 38 additions and 22 deletions

View File

@ -63,13 +63,10 @@ class ShopGoods extends Controller
*/ */
protected function _page_filter(&$data) protected function _page_filter(&$data)
{ {
$query = $this->app->db->name('ShopGoodsCate'); $query = $this->app->db->name('ShopGoodsCate')->where(['deleted' => 0, 'status' => 1]);
$query->where(['deleted' => 0, 'status' => 1])->order('sort desc,id desc'); $this->clist = DataExtend::arr2table($query->order('sort desc,id desc')->select()->toArray());
$this->clist = DataExtend::arr2table($query->select()->toArray()); $clist = $this->app->db->name('ShopGoodsCate')->whereIn('id', array_column($data, 'cate'))->column('pid,name,status', 'id');
foreach ($data as &$vo) { foreach ($data as &$vo) $vo['cate'] = $clist[$vo['cate']] ?? $vo['cate'];
[$vo['list'], $vo['cate']] = [[], []];
foreach ($this->clist as $cate) if ($cate['id'] === $vo['cate']) $vo['cate'] = $cate;
}
} }
/** /**
@ -147,21 +144,22 @@ class ShopGoods extends Controller
$data['code'] = CodeExtend::uniqidNumber(12, 'G'); $data['code'] = CodeExtend::uniqidNumber(12, 'G');
} }
if ($this->request->isGet()) { if ($this->request->isGet()) {
// 商品分类数据 $this->marks = GoodsService::instance()->getMarkList();
$this->cates = GoodsService::instance()->getCateList('arr2table'); $this->cates = GoodsService::instance()->getCateList('arr2table');
// 商品默认规格 $data['mark'] = isset($data['mark']) && trim($data['mark'], ',') ? explode(',', trim($data['mark'], ',')) : [];
$fields = 'goods_sku `sku`,goods_code,goods_spec `key`,price_selling `selling`,price_market `market`,number_virtual `virtual`,number_express `express`,status'; $fields = 'goods_sku `sku`,goods_code,goods_spec `key`,price_selling `selling`,price_market `market`,number_virtual `virtual`,number_express `express`,status';
$data['data_items'] = json_encode($this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->column($fields, 'goods_spec'), JSON_UNESCAPED_UNICODE); $data['data_items'] = json_encode($this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->column($fields, 'goods_spec'), JSON_UNESCAPED_UNICODE);
} elseif ($this->request->isPost()) { } elseif ($this->request->isPost()) {
if (empty($data['cover'])) $this->error('商品图片不能为空!'); if (empty($data['cover'])) $this->error('商品图片不能为空!');
if (empty($data['slider'])) $this->error('轮播图不能为空!'); if (empty($data['slider'])) $this->error('轮播图不能为空!');
// 商品规格保存 // 商品规格保存
$data['mark'] = ',' . (isset($data['mark']) && is_array($data['mark']) ? join(',', $data['mark']) : '') . ',';
[$count, $items] = [0, json_decode($data['data_items'], true)]; [$count, $items] = [0, json_decode($data['data_items'], true)];
foreach ($items as $item) { foreach ($items as $item) {
$count += intval($item[0]['status']); $count += intval($item[0]['status']);
if (empty($data['price_market'])) $data['price_market'] = $item[0]['market']; if (empty($data['price_market'])) $data['price_market'] = $item[0]['market'];
} }
if (empty($count)) $this->error('无可用的商品规格'); if (empty($count)) $this->error('无效的的商品价格信息');
$this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->update(['status' => 0]); $this->app->db->name('ShopGoodsItem')->where(['goods_code' => $data['code']])->update(['status' => 0]);
foreach ($items as $item) data_save('ShopGoodsItem', [ foreach ($items as $item) data_save('ShopGoodsItem', [
'goods_code' => $data['code'], 'goods_code' => $data['code'],

View File

@ -70,6 +70,17 @@ class GoodsService extends Service
return DataExtend::$type($query->withoutField('sort,status,deleted,create_at')->select()->toArray()); return DataExtend::$type($query->withoutField('sort,status,deleted,create_at')->select()->toArray());
} }
/**
* 获取商品标签数据
* @return array
*/
public function getMarkList()
{
$map = ['status' => 1];
$query = $this->app->db->name('ShopGoodsMark');
return $query->where($map)->order('sort desc,id desc')->column('name');
}
/** /**
* 最大分类级别 * 最大分类级别
* @return integer * @return integer

View File

@ -20,6 +20,17 @@
</select> </select>
</label> </label>
<div class="layui-form-item relative block">
<span class="color-green font-w7 label-required-prev">课程标签</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>
<label class="layui-form-item block relative"> <label class="layui-form-item block relative">
<span class="color-green font-w7">商品名称</span> <span class="color-green font-w7">商品名称</span>
<input name="name" required class="layui-input" placeholder="请输入商品名称" value="{$vo.name|default=''}"> <input name="name" required class="layui-input" placeholder="请输入商品名称" value="{$vo.name|default=''}">

View File

@ -5,12 +5,12 @@
<button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加商品</button> <button data-open='{:url("add")}' class='layui-btn layui-btn-sm layui-btn-primary'>添加商品</button>
<!--{/if}--> <!--{/if}-->
{if $type eq 'index'} {if $type eq 'index'}
<!--{if auth("state")}--> <!--{if auth("remove")}-->
<button data-action='{:url("state")}' data-rule="code#{key};deleted#1" class='layui-btn layui-btn-sm layui-btn-primary'>删除商品</button> <button data-action='{:url("remove")}' data-rule="code#{key};deleted#1" class='layui-btn layui-btn-sm layui-btn-primary'>删除商品</button>
<!--{/if}--> <!--{/if}-->
{else} {else}
<!--{if auth("state")}--> <!--{if auth("remove")}-->
<button data-action='{:url("state")}' data-rule="code#{key};deleted#0" data-confirm="确定要恢复这些数据吗" class='layui-btn layui-btn-sm layui-btn-primary'>恢复商品</button> <button data-action='{:url("remove")}' data-rule="code#{key};deleted#0" data-confirm="确定要恢复这些数据吗" class='layui-btn layui-btn-sm layui-btn-primary'>恢复商品</button>
<!--{/if}--> <!--{/if}-->
{/if} {/if}
{/block} {/block}
@ -23,8 +23,7 @@
<li data-open="{:url('index')}?type={$k}" class="layui-this">{$v}</li> <li data-open="{:url('index')}?type={$k}" class="layui-this">{$v}</li>
{else} {else}
<li data-open="{:url('index')}?type={$k}">{$v}</li> <li data-open="{:url('index')}?type={$k}">{$v}</li>
{/if} {/if}{/foreach}
{/foreach}
</ul> </ul>
<div class="layui-tab-content think-box-shadow table-block"> <div class="layui-tab-content think-box-shadow table-block">
{include file='shop_goods/index_search'} {include file='shop_goods/index_search'}
@ -65,7 +64,7 @@
</td> </td>
<td class='nowrap'> <td class='nowrap'>
入会礼包:{if empty($vo.vip_mod)}<span class=" color-red"></span>{else}<span class="color-blue"></span> [ <span class="color-blue">{$vo.vip_level|default='0'}</span> ]{/if}<br> 入会礼包:{if empty($vo.vip_mod)}<span class=" color-red"></span>{else}<span class="color-blue"></span> [ <span class="color-blue">{$vo.vip_level|default='0'}</span> ]{/if}<br>
所属分类:{$vo.cate.title|default='&#45;&#45;'}<br> 所属分类:{$vo.cate.name|default='-'}<br>
</td> </td>
<td class='nowrap'> <td class='nowrap'>
销售状态:{eq name='vo.status' value='0'}<span class="layui-badge">已下架</span>{else}<span class="layui-badge layui-bg-green">销售中</span>{/eq}<br> 销售状态:{eq name='vo.status' value='0'}<span class="layui-badge">已下架</span>{else}<span class="layui-badge layui-bg-green">销售中</span>{/eq}<br>
@ -115,7 +114,3 @@
</div> </div>
</div> </div>
{/block} {/block}
{block name='script'}
<script>form.render()</script>
{/block}

View File

@ -38,4 +38,5 @@
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button> <button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div> </div>
</form> </form>
<script>form.render()</script>
</fieldset> </fieldset>