這段時間在做傳智播客的宜立方商城項目,在此将視訊裡的課後練習寫出來分享一下
目錄
編輯
批量删除
上下架
編輯
按思路先找到JS代碼裡對應的URL,在分析JS代碼時發現無法打開編輯頁面,原來是代碼裡的URL并沒有寫的和JS代碼對應起來,首先要将item-list.jsp的對應代碼改為
<div id="itemEditWindow" class="easyui-window" title="編輯商品" data-options="modal:true,closed:true,iconCls:'icon-save',href:'item-edit'" style="width:80%;height:80%;padding:10px;">
</div>
現在可以出現對應的頁面,但是頁面裡并沒有商品的原始資訊。需要寫異步回寫的方法,通過分析JS代碼,可以發現對應的URL為
/rest/item/query/item/desc/'+data.id
/rest/item/param/item/query/'+data.id
接着開始實作
首先寫接口層
/**
* 查詢商品描述資訊
*
* @param id 商品id
* @return tbItem
*/
TbItemDesc getItemDescById(long id);
/**
* 查詢商品項
*
* @param itemId 商品訂單
* @return TbItem
*/
TbItem getItemById(long itemId);
然後将接口進行實作
@Override
public TbItemDesc getItemDescById(long id) {
return itemDescMapper.selectByPrimaryKey(id);
}
@Override
public TbItem getItemById(long itemId) {
//根據主鍵查詢
TbItemExample example = new TbItemExample();
TbItemExample.Criteria criteria = example.createCriteria();
//設定查詢條件
criteria.andIdEqualTo(itemId);
//執行查詢
List<TbItem> list = itemMapper.selectByExample(example);
if (list != null && list.size() > 0) {
return list.get(0);
}
return null;
}
最後寫controller層
/**
* 異步重新加載商品描述
*
* @param id 商品id
* @return TbItemDesc
*/
@RequestMapping("/rest/item/query/item/desc/{id}")
@ResponseBody
public TbItemDesc selectTbItemDesc(@PathVariable long id) {
return itemService.getItemDescById(id);
}
/**
* 異步重新加載商品資訊
*
* @param id 商品id
* @return TbItem
*/
@RequestMapping("/rest/item/param/item/query/{id}")
@ResponseBody
public TbItem queryById(@PathVariable long id) {
return itemService.getItemById(id);
}
這時會發現有另外一個問題,代碼似乎已經沒問題了,但是無法顯示出商品描述資料。
這是因為在這兒我們并沒有傳回狀态資訊,是以将判斷先去掉
這時編輯功能就已經實作
批量删除
和上面類似,先找到對應url為
/rest/item/delete
然後開始寫接口層
/**
* 批量删除商品
* @param ids 批量商品id
* @return E3Result
*/
E3Result deleteItems(String ids);
然後将其實作
@Override
public E3Result deleteItems(String ids) {
//判斷ids不為空
if (StringUtils.isNoneBlank(ids)) {
//将ids分别處理
String[] split = ids.split(",");
for (String id : split) {
itemMapper.deleteByPrimaryKey(Long.valueOf(id));
itemDescMapper.deleteByPrimaryKey(Long.valueOf(id));
}
return E3Result.ok();
}
return null;
}
最後寫controller
/**
* 批量删除
*
* @param ids 商品編号
* @return E3Result
*/
@RequestMapping("/rest/item/delete")
@ResponseBody
public E3Result delete(String ids) {
return itemService.deleteItems(ids);
}
上下架
首先找到對應URL
下架:/rest/item/instock
上架:/rest/item/reshelf
将其按三步進行實作
接口層
/**
* 批量上架産品
* @param ids 批量商品id
* @return E3Result
*/
E3Result groundingItem(String ids);
/**
* 批量下架産品
* @param ids 批量商品id
* @return E3Result
*/
E3Result soldOutItem(String ids);
@Override
public E3Result groundingItem(String ids) {
//判斷ids不為空
if (StringUtils.isNoneBlank(ids)) {
String[] split = ids.split(",");
//周遊所有id,進行修改下架
for (String id : split) {
TbItem item = itemMapper.selectByPrimaryKey(Long.valueOf(id));
item.setStatus((byte) 1);
//儲存到資料庫
itemMapper.updateByPrimaryKey(item);
}
return E3Result.ok();
}
return null;
}
@Override
public E3Result soldOutItem(String ids) {
//判斷ids不為空
if (StringUtils.isNoneBlank(ids)) {
String[] split = ids.split(",");
//周遊所有id進行修改下架
for (String id : split) {
TbItem item = itemMapper.selectByPrimaryKey(Long.valueOf(id));
item.setStatus((byte) 2);
//儲存到資料庫
itemMapper.updateByPrimaryKey(item);
}
return E3Result.ok();
}
return null;
}
/**
* 批量下架商品
*
* @param ids 商品編号
* @return E3Result
*/
@RequestMapping("/rest/item/instock")
@ResponseBody
public E3Result soldOutItem(String ids) {
return itemService.soldOutItem(ids);
}
/**
* 批量上架商品
*
* @param ids 商品編号
* @return E3Result
*/
@RequestMapping("/rest/item/reshelf")
@ResponseBody
public E3Result groundingItem(String ids) {
return itemService.groundingItem(ids);
}