ITPub博客

首页 > IT职业 > IT生活 > 移动商城第三篇(商品管理)【查询商品、添加商品】

移动商城第三篇(商品管理)【查询商品、添加商品】

IT生活 作者:gamebus 时间:2021-09-09 09:11:05 0 删除 编辑

tags: 移动商城项目


商品录入/上下架

我们发现页面是这样子的。

图片描述

我们可以从原型界面上知道:用户可以根据多个条件来对我们的数据进行筛选,并且我们是需要做分页的。

全部
全部 未上架 已上架

搜索:

到目前为止,我们4个查询条件可以都使用了。接下来就是我们的数据回显了。

为什么要数据回显??我们一旦使用了条件查询,跳转到对应的controller时,返回的页面的查询条件就没有了,这是不合理的。因此我们要对条件查询进行回显

品牌回显:只要查询条件的值等于品牌对应的值,那么我们就选中!


        

审核条件回显:只要查询条件的值等于审核条件的值,那么就选中!


    

模糊查询回显:


上架状态条件回显:

上架状态的条件并不是通过表单来提交的,而是直接使用超链接定位的。


        全部
        未上架
        已上架

当我们店家未上架商品的时候,我们的样式应该是会改变到here属性上的。因此,我们想要上架状态条件回显,首先得获取到对应的值

        
         

使用jquery代码进行控制样式


        $(function () {
            var showStatusVal =  $("#showStatus").val();
            if(showStatusVal=='0') {
                $("#label5").attr("class", "here");
            }else if(showStatusVal=='1') {
                $("#label4").attr("class", "here");
            }else {
                $("#label6").attr("class", "here");
            }
        });

我们也可以使用Jquery代码来对分页进行页面的逻辑控制


            //得到当前页数,总页数
            var pageNoVal = parseInt($("#currentPageNo").val());//1,2
            var totalPageVal = parseInt($("#totalPage").val());

            //上一页和下一页都不显示的条件
            if (pageNoVal ==1 && pageNoVal==totalPageVal ) {
                $("#previous").hide();
                $("#next").hide();
            }//显示下一页,不显示上一页的条件
            else if (pageNoVal == 1 && pageNoVal  1 && pageNoVal  1 && pageNoVal==totalPageVal) {
                $("#next").hide();
                $("#previous").show();
            }

            //按钮点击事件
            $("#next").click(function () {

                //将当前页数+1,设置到我们的隐藏域中
                pageNoVal++;//2
                $("#pageNo").val(pageNoVal);//2

                //提交表单
                $("#form1").submit();
            });

            $("#previous").click(function () {
                //将当前页数+1,设置到我们的隐藏域中
                pageNoVal--;
                $("#pageNo").val(pageNoVal);

                //提交表单
                $("#form1").submit();
            });

需要值得注意的是:我们在input标签上多了一行这么一段代码:


    

那为什么我们要使用currentPageNo这么一行代码呢???而我们的Jquery代码也是拿currentPageNo它的值作为我们页面跳转。

如果没有这行代码,直接使用PageNo会怎么样呢??

解释:

其实我们的页面跳转也是需要根据查询条件的结果来进行跳转的!

  • 如果我们查询了所有数据,我们跳转到第7页,再设置条件为“三星”,如果直接使用PageNo的话,那么系统就会去找“三星”的第七页数据,显然,这是不合理的,当我们设置了查询条件时,应该跳转到的是“三星”的第一页数据!
  • 归终到底,currentPageNo它就是根据我们当前条件来进行跳转!如果查询条件修改了,那么PageNo默认的值是为1的(因为通过隐藏域带过去的数据一直都是0)。
添加商品
    /**
     * 跳转到添加商品页面
     * @return
     */
    @RequestMapping("/toAddItem.do")
    public String toAddItem() {

        return "item/addItem";
    }

我们发现添加商品页面是由4个选项卡组成:

图片描述

基本信息

在基本信息的选项卡中,还是需要我们查询所有的品牌数据,在页面上给用户选择:


上传文件

我们在添加品牌的时候已经做过了上传文件的功能了,逻辑大致是一样的,我们拿过来修改一些东西即可!

在表单form标签中,记得要使用以下的数据类型进行表单提交!


  enctype="multipart/form-data" 

修改对应的name名称


                

请上传图片宽为120px,高为50px,大小不超过100K。

Jquery代码:


  function submitUpload() {
            var opt = {
                //重新指定form的action的值
                url: "${path}/upload/uploadPic.do",
                type: "post",
                dateType: "json",
                success: function (responseText) {
                    var jsonObj = $.parseJSON(responseText.replace(/<.>/ig, ""));
                    $("#imgsImgSrc").attr("src", jsonObj.realPath);
                    $("#imgs").val(jsonObj.relativePath);
                },
                error: function () {
                    alert("系统错误");
                }
            };
            $("#form111").ajaxSubmit(opt);
        }

图片描述

添加基本属性测试

到目前位置,我们的Controller可以拿到Item页面全部的基本属性:

图片描述

图片描述

商品基本属性中的隐藏属性

商品的id是使用oracle中的序列进行自动增长。

        /*对于商品的id,我们是自增长的。*/
        
            select seqitemid.nextval from dual
        

对于审核状态,默认设置为0【待审核】
对于上架状态,默认设置为1【下架】
对于销售量,默认设置为0【并没有人购买】

在Mapper中把对应的属性设置默认值。


(#{itemId,jdbcType=DECIMAL}, #{itemName,jdbcType=VARCHAR}, #{itemNo,jdbcType=VARCHAR}, 
      #{brandId,jdbcType=DECIMAL}, #{catId,jdbcType=DECIMAL}, #{tagImgId,jdbcType=DECIMAL}, 
      #{tagImg,jdbcType=DECIMAL}, #{isNew,jdbcType=DECIMAL}, #{isGood,jdbcType=DECIMAL}, 
      #{isHot,jdbcType=DECIMAL}, #{promotion,jdbcType=VARCHAR}, 0, 
      1, #{imgs,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, 
      #{pageDesc,jdbcType=VARCHAR}, #{itemRecycle,jdbcType=DECIMAL}, #{onSaleTime,jdbcType=TIMESTAMP}, 
      #{checkTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{updateUserId,jdbcType=DECIMAL}, 
      sysdate, #{checkerUserId,jdbcType=DECIMAL}, #{fullPathDeploy,jdbcType=VARCHAR}, 
      #{fullPathDeployOffer,jdbcType=VARCHAR}, #{originalItemId,jdbcType=DECIMAL}, #{lastStatus,jdbcType=DECIMAL}, 
      #{merchantId,jdbcType=DECIMAL}, #{itemSort,jdbcType=DECIMAL}, 0, 
      #{createUserId,jdbcType=DECIMAL}, #{simLevel,jdbcType=DECIMAL}, #{giftDesc,jdbcType=VARCHAR}, 
      #{giftImg,jdbcType=VARCHAR}, #{giftShowType,jdbcType=VARCHAR}, #{imgSize1,jdbcType=VARCHAR}
      )
大字段数据

我们第二个选项卡的原型界面如下:

图片描述

我们需要用到另外一张表:

图片描述

因此我们需要逆向工程对应的表:


    

加载对应的映射文件:

图片描述

Dao层

id是EbItemClob无法从页面上获取的,因此我们需要传递进去。

@Repository
public class EbItemClobDaoImpl extends SqlSessionDaoSupport implements EbItemClobDao {
    String nameSpace = "com.rl.ecps.sqlMap.sqlMap.EbItemClobMapper.";
    public void saveItemClob(EbItemClob ebItemClob, Long itemId) {
        ebItemClob.setItemId(itemId);
        this.getSqlSession().insert(nameSpace + "insert", ebItemClob);
    }
}

fckEditor文本编辑器

其实就是一个文本域,而该文本域是能带有格式的。以前我们使用过“富文本编辑器”就是这么的一种,这次我们使用fckEditor文本编辑器

首先,把我们的下载下来的文档加入到web目录下。

图片描述

引入核心的JS文件


创建出FCK对象,设置相关属性:


            var fck = new FCKeditor("itemDesc");
            fck.BasePath = "${path}/ecps/console/res/plugins/fckeditor/";
            fck.Config["ImageUploadURL"] = "${path}/upload/uploadForFck.do?typeStr=Image";
            fck.Height = 400;
            fck.ToolbarSet = "Default";
            fck.ReplaceTextarea();

itemDesc就是我们文档域的id值:


 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4687/viewspace-2800097/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-10

  • 博文量
    155
  • 访问量
    13187