移動商城第十篇【商品審覈和上下價】

商品審覈

接下來咱們作的是商品審覈的功能:javascript

這裏寫圖片描述

咱們到修改url的地址,而且給出對應controller的方法html

<li><a href="${path}/item/listAudit.do?auditStatus=0&showStatus=1"><samp class="t05"></samp>商品審覈</a></li>

查詢出未審覈的商品其實就是條件查詢的一種,所以該controller的代碼和列出商品的代碼幾乎同樣。java

@RequestMapping("/listAudit.do")
    public String listAudit(QueryCondition queryCondition,Model model) {

        //查詢出全部的品牌
        List<EbBrand> ebBrands = ebBrandService.selectBrand();

        //若是是第一次訪問的話,那麼默認是沒有當前頁號的,所以賦值爲1
        if (queryCondition.getPageNo() == null) {
            queryCondition.setPageNo(1);
        }
        //獲得分頁數據
        Page page = itemService.selectItemByCondition(queryCondition);

        model.addAttribute("page", page);
        model.addAttribute("ebBrands", ebBrands);

        //回顯條件數據
        model.addAttribute("queryCondition", queryCondition);


        return "item/listAudit";
    }

處理下邊的url而且隨着條件,樣式發生改變:sql

這裏寫圖片描述

<h2 class="h2_ch"><span id="tabs" class="l">
        <a id="label4" href="${base}/item/listAudit.do" title="所有實體商品" class="nor">所有</a>
        <a id="label1" href="${path}/item/listItem.do?auditStatus=0&showStatus=1" title="待審覈實體商品" class="nor">待審覈</a>
        <a id="label2" href="${path}/item/listItem.do?auditStatus=2&showStatus=1" title="審覈不經過實體商品" class="nor">審覈不經過</a>
        <a id="label3" href="${path}/item/listItem.do?auditStatus=1&showStatus=1" title="已審覈實體商品" class="nor">已審覈</a>
    </span></h2>

數據回顯

經過隱藏域拿到查詢條件的值:數據庫

<input type="hidden" id="auditStatus" name="auditStatus" value="${queryCondition.auditStatus}"/>

經過判斷隱藏域的值來改變咱們的樣式:markdown

$(document).ready(function () {
            if ($("#auditStatus").val() == '0') {
                $("#label1").attr("class", "here");
            }
            else if ($("#auditStatus").val() == 2) {
                $("#label2").attr("class", "here");
            }
            else if ($("#auditStatus").val() == 1) {
                $("#label3").attr("class", "here");
            }
            else $("#label4").attr("class", "here");
        })

這裏寫圖片描述

查詢條件以及回顯:session

 <p>查詢: <ui:select name="catID" list="catList" rootId="0" defaulttext="全部分類" defaultvalue="" currentValue="${catID}"/> <select id="brandId" name="brandId""> <option value="">所有品牌</option> <c:forEach items="${ebBrands}" var="brand"> <option value="${brand.brandId}" <%--這是數據回顯--%> <c:if test="${queryCondition.brandId==brand.brandId}"> selected </c:if> >${brand.brandName}</option> </c:forEach> <%-- </select><select id="stock" name="stock" style="display:none;"> <option value="-1" selected="">所有庫存</option> <option value="0"<c:if test='${stock==0}'> selected</c:if>>已缺貨</option> <option value="1"<c:if test='${stock==1}'> selected</c:if>>即將缺貨</option> </select>--%> <%--模糊查詢--%> <input type="text" id="searchText" name="itemName" value="${queryCondition.itemName}" title="" class="text20 medium gray"/> <input type="submit" id="goSearch" class="hand btn60x20" value="查詢"/> </p>

這裏寫圖片描述

根據審覈條件的不一樣,在顯示商品的url中也應該是不一樣的。app

  • 只要在遍歷的時候,判斷對應的狀態就好了。

這裏寫圖片描述

處理審覈

處理審覈:使用JavaScript方法來進行控制,把item的Id傳遞進去和審覈對應的值。jsp

<c:if test="${item.auditStatus==0}">
        <a href="javascript:void(0);" onclick="isPass(${item.itemId}, 1)">經過</a>
        <a href="javascript:void(0);" onclick="isPass(${item.itemId}, 2)">不經過</a>
    </c:if>

審覈經過和不經過總會有理由的,對於咱們的理由咱們使用一張表來保存的。post

function isPass(itemId, auditStatus){
            //修改浮動層的標題
            $("#addItemNoteH2").html("商品審覈");
            //清空內容
            $("#itemNote").val("");
            tipShow("#addItemNote");
            //給表單賦值
            $("#itemId").val(itemId);
            $("#myAuditStatus").val(auditStatus);
        }

使用表單來處理咱們的操做。其中notes是咱們彈出框的數據。

  • 咱們使用一個表單就能夠把不一樣方法中的數據集合在一塊兒,咱們只要把表單提交過去就好了!
<form action="${path }/item/auditItem.do" id="auditForm" method="post">
    <input type="hidden" name="itemId" id="itemId">
    <input type="hidden" name="auditStatus" id="myAuditStatus">
    <input type="hidden" name="notes" id="notes">
</form>

響應事件,給表單賦值,提交表單

$("#addItemNoteConfirm").click(function(){
                var notes = $("#itemNote").val();
                //給表單賦值
                $("#notes").val(notes);
                //提交表單
                $("#auditForm").submit();
            });

咱們是使用EB_CONSOLE_LOG這張數據表來保存咱們後臺操做的日誌記錄的。

表的字段以下:

這裏寫圖片描述

既然咱們要操做到表,咱們就得逆向工廠…

這裏寫圖片描述

設置主鍵爲自動增加

<insert id="insert" parameterType="com.rl.ecps.model.EbConsoleLog" >
    insert into EB_CONSOLE_LOG (CONSOLE_LOG_ID, ENTITY_NAME, ENTITY_ID, 
      USER_ID, OP_TYPE, OP_TIME, 
      NOTES, TABLE_NAME)
    values (seqconsolelogid.nextval, #{entityName,jdbcType=VARCHAR}, #{entityId,jdbcType=DECIMAL}, 
      #{userId,jdbcType=DECIMAL}, #{opType,jdbcType=VARCHAR}, #{opTime,jdbcType=TIMESTAMP}, 
      #{notes,jdbcType=VARCHAR}, #{tableName,jdbcType=VARCHAR})
  </insert>

編寫dao

/** * 繼承SqlSessionDaoSupport可以獲得sessionFactory的引用,很是方便! */ @Repository public class EbConsoleLogDaoImpl extends SqlSessionDaoSupport implements EbConsoleLogDao { String nameSpace = "com.rl.ecps.sqlMap.EbConsoleLogMapper."; public void saveConsoleLog(EbConsoleLog ConsoleLog) { this.getSqlSession().insert(nameSpace + "insert", ConsoleLog); } } 

修改商品的屬性,因爲修改的狀態個數是未知的,所以咱們使用動態修改:

public void updateItem(EbItem ebItem) {
        this.getSqlSession().update(nameSpace + "updateByPrimaryKeySelective", ebItem);
    }

編寫service

public void updateItem(Long itemId, Short auditStatus, String notes) {

        //設置item的屬性
        EbItem ebItem = new EbItem();
        ebItem.setItemId(itemId);
        ebItem.setAuditStatus(auditStatus);
        ebItem.setCheckerUserId((long) 222);
        ebItem.setCheckTime(new Date());

        //更新item
        itemDao.updateItem(ebItem);

        //操做日誌
        EbConsoleLog ebConsoleLog = new EbConsoleLog();
        ebConsoleLog.setEntityId(itemId);
        ebConsoleLog.setEntityName("商品表");
        ebConsoleLog.setNotes(notes);
        ebConsoleLog.setOpTime(new Date());
        if(auditStatus == 1){
            ebConsoleLog.setOpType("審覈經過");
        }else{
            ebConsoleLog.setOpType("審覈不經過");
        }
        ebConsoleLog.setTableName("EB_ITEM");
        ebConsoleLog.setUserId(1l);
        logDao.saveConsoleLog(ebConsoleLog);

    }

controller

@RequestMapping("/auditItem.do")
    public String  auditItem(Long itemId, Short auditStatus, String notes) throws IOException {
        itemService.updateItem(itemId, auditStatus, notes);
        return "redirect:listAudit.do";
    }

把商品的狀態修改了,而且已經把操做記錄寫到數據庫表中了。

這裏寫圖片描述

上下價

對於上下價和審覈的邏輯基本是相同的…

這裏寫圖片描述

根據不一樣的狀態給出不一樣的超連接:

<a href="/ecps-console/shop/item/viewItem.jsp" title="查看">查看</a>
            <c:if test="${item.showStatus == 1 }">
                <a href="/ecps-console/ecps/console/item/editItem.do?type=1&itemId=2384">編輯</a>
                <a href="javascript:void(0);" onclick="singleDel('2384')">刪除</a>
                <a href="javascript:void(0);" onclick="isShow(${item.itemId}, 0)">上架</a>
            </c:if>
            <c:if test="${item.showStatus == 0 }">
                <a href="javascript:void(0);" onclick="isShow(${item.itemId}, 1)">下架</a>
                <a href="javascript:void(0);">發佈</a>
            </c:if>

給表單賦值

function isShow(itemId, showStatus) {
            tipShow("#confirm");
            //給表單賦值
            $("#itemId").val(itemId);
            $("#myShowStatus").val(showStatus);
        }

在彈出框中綁定提交事件,提交表單

$("#confirmOk").click(function () {
    $("#showForm").submit();
});

編寫controller和service

@RequestMapping("/showItem.do")
    public String  showItem(Long itemId, Short showStatus) throws IOException {
        itemService.showItem(itemId, showStatus);
        return "redirect:listItem.do";
    }
public void showItem(Long itemId, Short showStatus) {

        //設置item的屬性
        EbItem ebItem = new EbItem();
        ebItem.setItemId(itemId);
        ebItem.setShowStatus(showStatus);
        ebItem.setCheckerUserId((long) 222);
        ebItem.setCheckTime(new Date());

        //更新item
        itemDao.updateItem(ebItem);

        //操做日誌
        EbConsoleLog ebConsoleLog = new EbConsoleLog();
        ebConsoleLog.setEntityId(itemId);
        ebConsoleLog.setEntityName("商品表");
        ebConsoleLog.setOpTime(new Date());
        if(showStatus == 1){
            ebConsoleLog.setOpType("下架");
        }else{
            ebConsoleLog.setOpType("上架");
        }
        ebConsoleLog.setTableName("EB_ITEM");
        ebConsoleLog.setUserId(1l);
        logDao.saveConsoleLog(ebConsoleLog);
    }

這裏寫圖片描述

相關文章
相關標籤/搜索