Browse Source

商品分类编辑
分类增加图片字段

qxp 5 years ago
parent
commit
7fcaca8682
19 changed files with 501 additions and 191 deletions
  1. 40 127
      dgtly-admin/src/main/resources/templates/appIndex.html
  2. 13 0
      dgtly-common/src/main/java/com/dgtly/common/core/domain/Ztree.java
  3. 7 7
      dgtly-goods/dgtly-goods-admin/src/main/java/com/dgtly/goods/controller/GoodsInfoController.java
  4. 8 0
      dgtly-goods/dgtly-goods-admin/src/main/java/com/dgtly/goods/controller/GoodsTypeController.java
  5. 9 9
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/add.html
  6. 44 12
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/edit.html
  7. 23 4
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/info.html
  8. 74 4
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/add.html
  9. 156 19
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/edit.html
  10. 13 2
      dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/type.html
  11. 23 0
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/domain/GoodsType.java
  12. 11 0
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/mapper/GoodsInfoMapper.java
  13. 8 0
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/mapper/GoodsTypeAttributeMapper.java
  14. 9 0
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/IGoodsInfoService.java
  15. 12 0
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/impl/GoodsInfoServiceImpl.java
  16. 26 2
      dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/impl/GoodsTypeServiceImpl.java
  17. 9 1
      dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsInfoMapper.xml
  18. 4 0
      dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsTypeAttributeMapper.xml
  19. 12 4
      dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsTypeMapper.xml

+ 40 - 127
dgtly-admin/src/main/resources/templates/appIndex.html

@@ -53,7 +53,7 @@
                         <li><a class="menuItem" th:href="@{/system/main}">了解若依</a></li>
                     </ul>
                 </li>-->
-                <li th:each="menu : ${menus}">
+                <li th:each="menu : ${menus}" >
                 	<a th:class="@{${menu.url != '' && menu.url != '#'} ? ${menu.target}}" th:href="@{${menu.url == ''} ? |#| : ${menu.url}}">
                 		<i class="fa fa-bar-chart-o" th:class="${menu.icon}"></i>
                     	<span class="nav-label" th:text="${menu.menuName}">一级菜单</span> 
@@ -69,97 +69,6 @@
 						</li>
 					</ul>
                 </li>
-                <li th:if="${demoEnabled}">
-                    <a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>
-                    <ul class="nav nav-second-level collapse">
-                        <li> <a>表单<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/select}">下拉框</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/timeline}">时间轴</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/basic}">基本表单</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/cards}">卡片列表</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/jasny}">功能扩展</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/sortable}">拖动排序</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/tabs_panels}">选项卡 & 面板</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/validate}">表单校验</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/wizard}">表单向导</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/upload}">文件上传</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/datetime}">日期和时间</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/summernote}">富文本编辑器</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/duallistbox}">左右互选组件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/form/autocomplete}">搜索自动补全</a></li>
-							</ul>
-                        </li>
-                        <li> <a>表格<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/button}">点击按钮加载表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">表格冻结列</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/event}">自定义触发事件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/detail}">表格细节视图</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/child}">表格父子视图</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/image}">表格图片预览</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/curd}">动态增删改查</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/reorder}">表格拖拽操作</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/editable}">表格行内编辑</a></li>
-								<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
-							</ul>
-                        </li>
-                        <li> <a>弹框<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>
-								<li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>
-								<li><a class="menuItem" th:href="@{/demo/modal/table}">弹层表格</a></li>
-							</ul>
-                        </li>
-                        <li> <a>操作<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>
-								<li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>
-							</ul>
-                        </li>
-                        <li> <a>报表<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/sparkline}">sparkline</a></li>
-								<li><a class="menuItem" th:href="@{/demo/report/metrics}">图表组合</a></li>
-							</ul>
-                        </li>
-                        <li> <a>图标<span class="fa arrow"></span></a>
-                            <ul class="nav nav-third-level">
-								<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
-								<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
-							</ul>
-                        </li>
-                        <li>
-	                        <a href="#"><i class="fa fa-sitemap"></i> <span class="nav-label">四层菜单 </span><span class="fa arrow"></span></a>
-	                        <ul class="nav nav-second-level collapse">
-	                            <li>
-	                                <a href="#" id="damian">三级菜单1<span class="fa arrow"></span></a>
-	                                <ul class="nav nav-third-level">
-	                                    <li>
-	                                        <a href="#">四级菜单1</a>
-	                                    </li>
-	                                    <li>
-	                                        <a href="#">四级菜单2</a>
-	                                    </li>
-	                                </ul>
-	                            </li>
-	                            <li><a href="#">三级菜单2</a></li>
-	                        </ul>
-	                    </li>
-                    </ul>
-                </li>
             </ul>
         </div>
     </nav>
@@ -245,43 +154,47 @@
 <script th:src="@{/ruoyi/index.js}"></script>
 <script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
 <script th:inline="javascript">
-var ctx = [[@{/}]];
-var skin = storage.get("skin");
-var menuUrl=[[${menuUrl}]] ;
-// 本地主题优先,未设置取系统配置
-if($.common.isNotEmpty(skin)){
-	$("body").addClass(skin.split('|')[0]);
-	$("body").addClass(skin.split('|')[1]);
-} else {
-	var sideTheme = [[${@config.getKey('sys.index.sideTheme')}]];
-	var skinName = [[${@config.getKey('sys.index.skinName')}]];
-	$("body").addClass(sideTheme);
-	$("body").addClass(skinName);
-}
-
-/* 用户管理-重置密码 */
-function resetPwd() {
-    var url = ctx + 'system/user/profile/resetPwd';
-    $.modal.open("重置密码", url, '800', '500');
-}
-/* 切换主题 */
-function switchSkin() {
-    layer.open({
-		type : 2,
-		shadeClose : true,
-		title : "切换主题",
-		area : ["530px", "386px"],
-		content : [ctx + "system/switchSkin", 'no']
-	})
-}
+    var ctx = [[@{/}]];
+    var skin = storage.get("skin");
+    var menuUrl=[[${menuUrl}]] ;
+    // 本地主题优先,未设置取系统配置
+    if($.common.isNotEmpty(skin)){
+        $("body").addClass(skin.split('|')[0]);
+        $("body").addClass(skin.split('|')[1]);
+    } else {
+        var sideTheme = [[${@config.getKey('sys.index.sideTheme')}]];
+        var skinName = [[${@config.getKey('sys.index.skinName')}]];
+        $("body").addClass(sideTheme);
+        $("body").addClass(skinName);
+    }
 
-$(function() {
-    if (menuUrl !== '' &&menuUrl!='#') {
-        var url = menuUrl.substring(1, menuUrl.length);
-        $('a[href$="' + url + '"]').parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
-        $('a[href$="' + url + '"]').click();
+    /* 用户管理-重置密码 */
+    function resetPwd() {
+        var url = ctx + 'system/user/profile/resetPwd';
+        $.modal.open("重置密码", url, '800', '500');
+    }
+    /* 切换主题 */
+    function switchSkin() {
+        layer.open({
+            type : 2,
+            shadeClose : true,
+            title : "切换主题",
+            area : ["530px", "386px"],
+            content : [ctx + "system/switchSkin", 'no']
+        })
     }
-});
+
+    $(function() {
+        if (menuUrl !== '' &&menuUrl!='#') {
+            var url = menuUrl.substring(1, menuUrl.length);
+            var arr = $('a[href$="' + url + '"]');
+            for(var i=0;i<arr.length;i++){
+                if(arr[i].dataset["index"]!="1"){
+                    arr[i].click()
+                }
+            }
+        }
+    });
 </script>
 </body>
 </html>

+ 13 - 0
dgtly-common/src/main/java/com/dgtly/common/core/domain/Ztree.java

@@ -23,6 +23,9 @@ public class Ztree implements Serializable
     /** 节点标题 */
     private String title;
 
+    /** 节点备用字段 */
+    private String remake;
+
     /** 是否勾选 */
     private boolean checked = false;
 
@@ -101,4 +104,14 @@ public class Ztree implements Serializable
     {
         this.nocheck = nocheck;
     }
+
+
+    public String getRemake() {
+        return remake;
+    }
+
+    public void setRemake(String remake) {
+        this.remake = remake;
+    }
+
 }

+ 7 - 7
dgtly-goods/dgtly-goods-admin/src/main/java/com/dgtly/goods/controller/GoodsInfoController.java

@@ -133,7 +133,7 @@ public class GoodsInfoController extends BaseController
      * 修改商品基础详情
      */
     @GetMapping("/edit/{id}")
-    public String edit(@PathVariable("id") Long id, ModelMap mmap)
+    public String edit(@PathVariable("id") Long id,String isShow, ModelMap mmap)
     {
         Boolean isSystemUser = false;
         /*判断是否是系统内部人员*/
@@ -146,7 +146,10 @@ public class GoodsInfoController extends BaseController
         mmap.put("isSystemUser",isSystemUser);
         GoodsInfo goodsInfo = goodsInfoService.selectGoodsInfoById(id);
         mmap.put("goodsInfo", goodsInfo);
-        mmap.put("slideshows",Convert.toStrArray(goodsInfo.getSlideshow()));
+        mmap.put("isShow", StringUtils.isNotEmpty(isShow)?true:false);
+        if(goodsInfo.getSlideshow()!=null){
+            mmap.put("slideshows",Convert.toStrArray(goodsInfo.getSlideshow()));
+        }
         return prefix + "/edit";
     }
 
@@ -196,12 +199,9 @@ public class GoodsInfoController extends BaseController
     @RequiresPermissions("goods:info:putaway")
     @PostMapping("/putaway")
     @ResponseBody
-    public Object putaway(Long id,String putawayFlag)
+    public Object putaway(String ids,String putawayFlag)
     {
-        GoodsInfo goodsInfo = new GoodsInfo();
-        goodsInfo.setId(id);
-        goodsInfo.setPutawayFlag(putawayFlag);
-        int i =  goodsInfoService.updateGoodsInfo(goodsInfo);
+        int i =  goodsInfoService.putawayGooodsInfo(ids,putawayFlag);
         return toAjax(i);
     }
 }

+ 8 - 0
dgtly-goods/dgtly-goods-admin/src/main/java/com/dgtly/goods/controller/GoodsTypeController.java

@@ -126,6 +126,7 @@ public class GoodsTypeController extends BaseController
     @ResponseBody
     public AjaxResult addSave(GoodsType goodsType)
     {
+        goodsType.setCreateBy(ShiroUtils.getLoginName());
         return toAjax(goodsTypeService.insertGoodsType(goodsType));
     }
 
@@ -137,6 +138,13 @@ public class GoodsTypeController extends BaseController
     {
         GoodsType goodsType = goodsTypeService.selectGoodsTypeById(id);
         mmap.put("goodsType", goodsType);
+        if (goodsInfoService.selectGoodsInfoCountByTypeId(id) > 0)
+        {
+            mmap.put("hasGoodsInfo", true);
+        }else{
+            mmap.put("hasGoodsInfo", false);
+        }
+
         return prefix + "/edit";
     }
 

+ 9 - 9
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/add.html

@@ -256,7 +256,7 @@
             focusCleanup: true
         });
 
-        /************************上传文件******************************/
+        //上传文件
         function sendFile(file, obj) {
             var data = new FormData();
             data.append("file", file);
@@ -281,7 +281,7 @@
             });
         }
 
-        /*********************提交*********************************/
+        //提交
         function submitHandler() {
 
             if ($.validate.form()) {
@@ -320,7 +320,7 @@
             autoclose: true
         });
 
-        /******************选择分类树**********************************/
+        //选择分类树
         function selectTypeTree() {
             var typeId = "0";
             var url = ctx + "goods/type/selectTypeTree/" + typeId;
@@ -340,7 +340,7 @@
             getTypyAttributu($("#input_typeId").val());
             layer.close(index);
         }
-        /**********************获取分类信息****************************/
+        /获取分类信息
         function getTypyAttributu(id){
             console.log(id)
             $.ajax({
@@ -361,7 +361,7 @@
                 }
             });
         }
-        /************************解析分类属性类表***************************/
+        //解析分类属性类表
         function resolverType(goodsType){
             $("#div_area").html("");
             var objs = goodsType.goodsTypeAttributes;
@@ -382,7 +382,7 @@
             $("#div_area").html(str);
         }
 
-        /******************选择商户列表**********************************/
+        //选择商户列表
         function selectCompanyList() {
             if(!isSystemUser){
                 return
@@ -403,7 +403,7 @@
             layer.close(index);
         }
 
-        /*******************规格表格动态添加值*********************************************/
+        //规格表格动态添加值
         $("#btn-size-add").click(function(){
             var htmlStr='';
             htmlStr+='<tr><td class="input-group" style="padding: 0">';
@@ -416,7 +416,7 @@
                 $(this).parent().parent().parent('tr').remove();
             });
         })
-        /*******************颜色表格动态添加值*********************************************/
+        //颜色表格动态添加值
         $("#btn-color-add").click(function(){
             var htmlStr='';
             htmlStr+='<tr><td class="input-group" style="padding: 0">';
@@ -430,7 +430,7 @@
             });
         })
 
-        /*******************轮播图添加图片************************/
+        //轮播图添加图片
         $("#btn-slideshow-add").click(function(){
             $("#input-slideshow-add").click();
         })

+ 44 - 12
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/edit.html

@@ -23,7 +23,7 @@
 </head>
 <body class="white-bg">
 <div class="wrapper wrapper-content animated fadeInRight ibox-content">
-    <form class="form-horizontal m" id="form-info-add"  th:object="${goodsInfo}">
+    <form class="form-horizontal m" id="form-info-edit"  th:object="${goodsInfo}">
         <input name="id" th:value="*{id}" type="hidden">
         <div class="row">
             <div class="col-sm-6">
@@ -268,6 +268,7 @@
 <th:block th:include="include :: jasny-bootstrap-js" />
 <script type="text/javascript">
     var isSystemUser = [[${isSystemUser}]];
+    var isShow = [[${isShow}]];
     var prefix = ctx + "goods/info"
     var sizeIndex=([[${goodsInfo.goodsSizes.size()}]])?[[${goodsInfo.goodsSizes.size()}]]:0;
     var colorIndex=([[${goodsInfo.goodsColors.size()}]])?[[${goodsInfo.goodsColors.size()}]]:0;
@@ -287,16 +288,25 @@
                 }
             }
         });
-        $("#form-info-add").validate({
+        $("#form-info-edit").validate({
             focusCleanup: true
         });
 
+
+        //处理展示还是 编辑
+        handleDisable();
+
+
+        //动态规格颜色的 移除按钮
         $('.remove').on('click',function(){
+            if(isShow){
+                return
+            }
             $(this).parent().parent().parent('tr').remove();
         });
 
 
-        /*******************规格表格动态添加值*********************************************/
+        //规格表格动态添加值
         $("#btn-size-add").on('click',function(){
             var htmlStr='';
             htmlStr+='<tr><td class="input-group" style="padding: 0">';
@@ -307,7 +317,7 @@
             $("#tbody-size").append(htmlStr)
 
         })
-        /*******************颜色表格动态添加值*********************************************/
+        //颜色表格动态添加值
         $("#btn-color-add").on('click',function(){
             var htmlStr='';
             htmlStr+='<tr><td class="input-group" style="padding: 0">';
@@ -319,7 +329,7 @@
 
         })
 
-        /*******************轮播图添加图片************************/
+        //轮播图添加图片
         $("#btn-slideshow-add").on('click',function(){
             $("#input-slideshow-add").click();
         })
@@ -331,7 +341,8 @@
         });
     })
 
-    /*********************提交*********************************/
+
+    //提交
     function submitHandler() {
 
         if ($.validate.form()) {
@@ -357,13 +368,13 @@
             if(file != undefined){
                 $('#input_cover').val(file);
             }
-            $.operate.save(prefix + "/edit", $('#form-info-add').serialize());
+            $.operate.save(prefix + "/edit", $('#form-info-edit').serialize());
         }else{
             $.modal.alertError("表单填写有误,请重新填写后提交");
         }
     }
 
-    /************************上传文件******************************/
+    //上传文件
     function sendFile(file, obj) {
         var data = new FormData();
         data.append("file", file);
@@ -388,7 +399,7 @@
         });
     }
 
-    /******************选择分类树**********************************/
+    //选择分类树
     function selectTypeTree() {
         var typeId = "0";
         var url = ctx + "goods/type/selectTypeTree/" + typeId;
@@ -408,7 +419,7 @@
         getTypyAttributu($("#input_typeId").val());
         layer.close(index);
     }
-    /**********************获取分类信息****************************/
+    //获取分类信息
     function getTypyAttributu(id){
         console.log(id)
         $.ajax({
@@ -429,7 +440,7 @@
             }
         });
     }
-    /************************解析分类属性类表***************************/
+    //解析分类属性类表
     function resolverType(goodsType){
         $("#div_area").html("");
         var objs = goodsType.goodsTypeAttributes;
@@ -450,7 +461,7 @@
         $("#div_area").html(str);
     }
 
-    /******************选择商户列表**********************************/
+    //选择商户列表
     function selectCompanyList() {
         if(!isSystemUser){
             return
@@ -508,6 +519,27 @@
         var _this = $(self).parent();
         _this.remove();
     }
+    //处理页面展示还是编辑
+    function handleDisable(){
+        if(isShow){
+
+            var forms = $("#form-info-edit");
+            forms.each(function(index, form){
+                for ( var i = 0; i < form.length; i++) {
+                    var element = form.elements[i];
+                    element.disabled = true;
+                }
+            });
+            //隐藏选择图片按钮
+            $(".btn.btn-white.btn-file").hide();
+            $(".thumbnail.slideshow_span").hide();
+            $("#btn-size-add").hide();
+            $("#btn-color-add").hide();
+            //禁用富文本编辑器
+            $('.summernote').summernote('disable');
+        }
+
+    }
 </script>
 </body>
 </html>

+ 23 - 4
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/info/info.html

@@ -37,9 +37,15 @@
             </div>
 
             <div class="btn-group-sm" id="toolbar" role="group">
-                <a th:if="@{!${isSystemUser}}" class="btn btn-success" onclick="$.operate.addFull()" shiro:hasPermission="goods:info:add">
+                <a th:if="@{!${isSystemUser}}" class="btn btn-primary" onclick="$.operate.addFull()" shiro:hasPermission="goods:info:add">
                     <i class="fa fa-plus"></i> 添加
                 </a>
+                <a th:if="@{!${isSystemUser}}" class="btn  btn-success" onclick="putawayAll(1)" shiro:hasPermission="goods:info:putaway">
+                    <i class="fa fa-plus"></i> 上架
+                </a>
+                <a th:if="@{!${isSystemUser}}" class="btn btn-warning" onclick="putawayAll(0)" shiro:hasPermission="goods:info:putaway">
+                    <i class="fa fa-plus"></i> 下架
+                </a>
             </div>
             <div class="col-sm-12 select-table table-striped">
                 <table id="bootstrap-table"></table>
@@ -135,11 +141,11 @@
                                 actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '"  onclick="$.operate.remove(\'' + row.id + '\')" shiro:hasPermission="goods:info:remove"><i class="fa fa-remove"></i>删除</a> ');
                             }else if(row.putawayFlag=="1"){
                                 actions.push('<a class="btn btn-warning btn-xs ' + putawayFlag + '" onclick="putaway('+row.id+',0)" shiro:hasPermission="goods:info:putaway"><i class="fa fa-download"></i> 下架</a> ');
-                                actions.push('<a class="btn btn-primary btn-xs " shiro:hasPermission="goods:info:putaway"><i class="fa fa-edit"></i>查看详情</a> ');
+                                actions.push('<a class="btn btn-primary btn-xs " onclick="$.modal.openFull(\'查看详情\', \''+prefix + '/edit/'+row.id+'?isShow=1\')" shiro:hasPermission="goods:info:putaway"><i class="fa fa-edit"></i>查看详情</a> ');
                             }
 
                         }else{
-                            actions.push('<a class="btn btn-primary btn-xs " shiro:hasPermission="goods:info:putaway"><i class="fa fa-edit"></i>查看详情</a> ');
+                            actions.push('<a class="btn btn-primary btn-xs " onclick="$.modal.openFull(\'查看详情\', \''+prefix + '/edit/'+row.id+'?isShow=1\')"  shiro:hasPermission="goods:info:putaway"><i class="fa fa-edit"></i>查看详情</a> ');
                         }
 
                         return actions.join('');
@@ -149,9 +155,22 @@
             $.table.init(options);
         });
 
+        //批量上下架
+        function putawayAll(putawayFlag){
+            var rows = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
+            if (rows.length == 0) {
+                $.modal.alertWarning("请至少选择一条记录");
+                return;
+            }
+            $.modal.confirm("确认要上/下架选中的" + rows.length + "条数据吗?", function() {
+                var url = $.table._option.removeUrl;
+                putaway(rows.join(),putawayFlag);
+            });
+
+        }
         function putaway(id,putaway){
             var data = new FormData();
-            data.append("id", id);
+            data.append("ids", id);
             data.append("putawayFlag", putaway);
             $.ajax({
                 type: "POST",

+ 74 - 4
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/add.html

@@ -2,6 +2,10 @@
 <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
 <head>
     <th:block th:include="include :: header('新增商品分类列')" />
+    <style type="text/css">
+
+
+    </style>
 </head>
 <body class="white-bg">
     <div class="wrapper wrapper-content animated fadeInRight ibox-content">
@@ -13,6 +17,24 @@
                     <input name="name" class="form-control" type="text" required>
                 </div>
             </div>
+            <div class="form-group">
+                <input id="input_img" name="img" type="hidden"/>
+                <label class="col-sm-3 control-label">图标:</label>
+                <div class="col-sm-8">
+                    <div id="fmz" class="fileinput-preview fileinput-exists thumbnail" style="width: 200px; height: 200px;">
+
+                    </div>
+                    <input type="file" id="input-img-add" style="display: none;" onchange="upload_img()"/>
+                    <div id="div-openBtn">
+                        <a  class="btn btn-white" onclick="selectFile()">打开图片</a>
+                    </div>
+                    <div id="div-changeBtn" style="display: none">
+                        <a  class="btn btn-white" onclick="selectFile()">更换图片</a>
+                        <a  class="btn btn-white" onclick="clearImg()">清除</a>
+                    </div>
+
+                </div>
+            </div>
             <div class="form-group">
                 <label class="col-sm-3 control-label"><span style="color: red; ">*</span>所属分类:</label>
                 <div class="col-sm-8">
@@ -32,6 +54,8 @@
         var prefix = ctx + "goods/type"
         var attributesIndex = 0;
         $(function(){
+
+            //添加属性按钮
             $('#addAttribute').click(function(){
                var str =' <div class="row">' +
                    '            <div class="col-sm-4">' +
@@ -60,17 +84,20 @@
                '            </div>';
                 $('#form-type-add').append(str);
                 attributesIndex++;
-                $('.remove').on('click',function(){
-                    $(this).parent().parent().parent('.row').remove();
-                });
+
             });
+            //移除按钮
+            $('.remove').on('click',function(){
+                $(this).parent().parent().parent('.row').remove();
+            });
+
         })
 
 
         $("#form-type-add").validate({
             focusCleanup: true
         });
-        /*选择分类树*/
+        //选择分类树
         function selectTypeTree() {
             var treeId = $("#treeId").val();
             var typeId = $.common.isEmpty(treeId) ? "0" : treeId;
@@ -101,6 +128,49 @@
             }
         }
 
+        //添加图片
+        function selectFile(){
+            $("#input-img-add").click();
+        }
+        function clearImg(){
+            $("#fmz").html();
+            $("#input_img").val();
+            $("#div-changeBtn").hide();
+            $("#div-openBtn").show();
+        }
+        function  upload_img(){
+            if ($("#input-img-add").val() == '') {
+                return;
+            }var data = new FormData();
+            data.append('file', document.getElementById('input-img-add').files[0]);
+            $.ajax({
+                url:ctx+"common/upload",
+                type:"post",
+                data: data,
+                cache: false,
+                contentType: false,
+                processData: false,
+                dataType: 'json',
+                success: function(result) {
+                    if (result.code == web_status.SUCCESS) {
+                        var htmlStr='';
+                        htmlStr+='<div style="width:100%;height: 100%;">'+
+                            '   <img style="max-width: 100%;max-height: 100%" src="'+result.data.fileName+'">' +
+                            '</div>'
+                        $("#fmz").html(htmlStr);
+                        $("#input_img").val(result.data.fileName);
+                        $("#div-changeBtn").show();
+                        $("#div-openBtn").hide();
+                    } else {
+                        $.modal.alertError(result.msg);
+                    }
+                },
+                error:function(result) {
+                    alert("上传失败")
+                }
+            });
+        }
+
     </script>
 </body>
 </html>

+ 156 - 19
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/edit.html

@@ -5,48 +5,185 @@
 </head>
 <body class="white-bg">
     <div class="wrapper wrapper-content animated fadeInRight ibox-content">
-        <form class="form-horizontal m" id="form-type-edit" th:object="${goodsType}">
+        <form class="form-horizontal m" id="form-type-edit" th:object="${goodsType}" >
             <input name="id" th:field="*{id}" type="hidden">
             <input name="parentId" th:field="*{parentId}" type="hidden">
-            <div class="form-group">    
+            <div class="form-group">
                 <label class="col-sm-3 control-label">类型名称:</label>
                 <div class="col-sm-8">
                     <input name="name" th:field="*{name}" class="form-control" type="text" required>
                 </div>
             </div>
-            <h4 class="form-header h4">属性字段</h4>
-            <div class="row" th:each="attribute:*{goodsTypeAttributes}" >
-                <div class="col-sm-4">
-                    <div class="form-group">
-                        <label class="col-sm-6 control-label"> 属性名:</label>
-                        <div class="col-sm-6">
-                            <input class="form-control" th:value="${attribute.attributeName}" maxlength="30" required>
+            <div class="form-group">
+                <input id="input_img" name="img" type="hidden" th:field="*{img}"/>
+                <label class="col-sm-3 control-label">图标:</label>
+                <div class="col-sm-8">
+                    <div id="fmz" class="fileinput-preview fileinput-exists thumbnail" style="width: 200px; height: 200px;">
+                        <div style="width:100%;height: 100%;">
+                            <img style="max-width: 100%;max-height: 100%" th:src="*{img}">
                         </div>
                     </div>
+                    <input type="file" id="input-img-add" style="display: none;" onchange="upload_img()"/>
+                    <div id="div-openBtn" style="display: none">
+                        <a  class="btn btn-white" onclick="selectFile()">打开图片</a>
+                    </div>
+                    <div id="div-changeBtn" >
+                        <a  class="btn btn-white" onclick="selectFile()">更换图片</a>
+                        <a  class="btn btn-white" onclick="clearImg()">清除</a>
+                    </div>
+
                 </div>
-                <div class="col-sm-4">
-                    <div class="form-group">
-                        <label class="col-sm-6 control-label"> 排序:</label>
-                        <div class="col-sm-6">
-                            <input class="form-control" th:value="${attribute.sort}" maxlength="30" required>
+            </div>
+            <div>
+                <div>
+                    <h4 class="form-header h4">属性字段 <a class="btn btn-success btn-xs" id="addAttribute"><i class="fa fa-plus"></i>添加</a></h4>
+                    <!--  循环属性-->
+                    <div class="row" th:each="item,it:*{goodsTypeAttributes}" id="div-attribute">
+                        <div class="col-sm-4">
+                            <div class="form-group">
+                                <label class="col-sm-6 control-label"> 属性名:</label>
+                                <div class="col-sm-6">
+                                    <input th:attr="name='goodsTypeAttributes['+${it.index}+'].id'" th:value="${item.id}" class="form-control" type="hidden" required>
+                                    <input th:attr="name='goodsTypeAttributes['+${it.index}+'].attributeName'"  th:value="${item.attributeName}" placeholder="请输入属性名称" class="form-control" type="text" maxlength="30" required>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-sm-4">
+                            <div class="form-group">
+                                <label class="col-sm-6 control-label">排序:</label>
+                                <div class="col-sm-6">
+                                    <div class="input-group">
+                                        <input th:attr="name='goodsTypeAttributes['+${it.index}+'].sort'" th:value="${item.sort}" placeholder="请输入排序值" class="form-control" type="text" maxlength="30" required>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="col-sm-2">
+                            <div class="form-group">
+                                <a class="remove btn btn-danger btn-sm" ><i class="fa fa-plus"></i>删除</a>
+                            </div>
                         </div>
                     </div>
                 </div>
+
+                <div th:if="${hasGoodsInfo}" style="position: absolute;width: 100%;top: 340px;left: 0;bottom: 0; background-color: #0000007d;
+                z-index: 100;display: -webkit-flex;justify-content: center;align-items: center;">
+                    <span style="color: black;font-size: 18px;font-weight: bold"> 该分类有已有所属商品,禁止编辑属性</span>
+                </div>
             </div>
+
         </form>
+
+
     </div>
     <th:block th:include="include :: footer" />
-    <script type="text/javascript">
-        var prefix = ctx + "system/type";
-        $("#form-type-edit").validate({
-            focusCleanup: true
-        });
+    <script th:inline="javascript">
+        var prefix = ctx + "goods/type";
+        var hasGoodsInfo = [[${hasGoodsInfo}]];
+        var attributesIndex =  ([[${goodsType.goodsTypeAttributes.size()}]])?[[${goodsType.goodsTypeAttributes.size()}]]:0;
+        $(function(){
+
+            //添加属性按钮
+            $('#addAttribute').click(function(){
+                var str =' <div class="row">' +
+                    '            <div class="col-sm-4">' +
+                    '                    <div class="form-group">' +
+                    '                        <label class="col-sm-6 control-label"> 属性名:</label>' +
+                    '                        <div class="col-sm-6">' +
+                    '                            <input name="goodsTypeAttributes['+attributesIndex+'].attributeName" placeholder="请输入属性名称" class="form-control" type="text" maxlength="30" required>' +
+                    '                        </div>' +
+                    '                    </div>' +
+                    '                </div>' +
+                    '                <div class="col-sm-4">' +
+                    '                    <div class="form-group">' +
+                    '                        <label class="col-sm-6 control-label">排序:</label>' +
+                    '                        <div class="col-sm-6">' +
+                    '                            <div class="input-group">' +
+                    '                                <input name="goodsTypeAttributes['+attributesIndex+'].sort" placeholder="请输入排序值" class="form-control" type="text" maxlength="30" required>'+
+                    '                            </div>' +
+                    '                        </div>' +
+                    '                    </div>' +
+                    '                </div>' +
+                    '                <div class="col-sm-2">' +
+                    '                    <div class="form-group">' +
+                    '                        <a class="remove btn btn-danger btn-sm" ><i class="fa fa-plus"></i>删除</a>'+
+                    '                    </div>' +
+                    '                </div>'+
+                    '            </div>';
+                $('#form-type-edit').append(str);
+                attributesIndex++;
+            });
+
+            //移除按钮
+            $('.remove').on('click',function(){
+                $(this).parent().parent().parent('.row').remove();
+            });
+            //提交验证
+            $("#form-type-edit").validate({
+                focusCleanup: true
+            });
+
+        })
+
+
 
         function submitHandler() {
             if ($.validate.form()) {
+                //如果分类有所属商品 不能修改属性
+                if(hasGoodsInfo) {// 获取页面已有的一个form表单
+                    var ele = $("#div-attribute input");
+                    ele.each(function () {
+                        $(this).removeAttr("name");
+                    })
+                }
+
                 $.operate.save(prefix + "/edit", $('#form-type-edit').serialize());
             }
         }
+        //添加图片
+        function selectFile(){
+            $("#input-img-add").click();
+        }
+        function clearImg(){
+            $("#fmz").html("");
+            $("#input_img").val();
+            $("#div-changeBtn").hide();
+            $("#div-openBtn").show();
+        }
+        function  upload_img(){
+            if ($("#input-img-add").val() == '') {
+                return;
+            }var data = new FormData();
+            data.append('file', document.getElementById('input-img-add').files[0]);
+            $.ajax({
+                url:ctx+"common/upload",
+                type:"post",
+                data: data,
+                cache: false,
+                contentType: false,
+                processData: false,
+                dataType: 'json',
+                success: function(result) {
+                    if (result.code == web_status.SUCCESS) {
+                        var htmlStr='';
+                        htmlStr+='<div style="width:100%;height: 100%;">'+
+                            '   <img style="max-width: 100%;max-height: 100%" src="'+result.data.fileName+'">' +
+                            '</div>'
+                        $("#fmz").html(htmlStr);
+                        $("#input_img").val(result.data.fileName);
+                        $("#div-changeBtn").show();
+                        $("#div-openBtn").hide();
+                    } else {
+                        $.modal.alertError(result.msg);
+                    }
+                },
+                error:function(result) {
+                    alert("上传失败")
+                }
+            });
+        }
+
+
     </script>
 </body>
 </html>

+ 13 - 2
dgtly-goods/dgtly-goods-admin/src/main/resources/templates/goods/type/type.html

@@ -55,6 +55,8 @@
                 parentCode: "parentId",
                 uniqueId: "id",
                 expandColumn:2,
+                expandAll:false,
+                expandFirst:false,
                 url: prefix + "/list",
                 createUrl: prefix + "/add/{id}",
                 updateUrl: prefix + "/edit/{id}",
@@ -72,6 +74,15 @@
                     field : 'name', 
                     title : '类型名称'
                 },
+                {
+                    field : 'img',
+                    title : '图标',
+                    formatter: function(value, row, index) {
+                        // 图片预览(注意:如存储在本地直接获取数据库路径,如有配置context-path需要使用ctx+路径)
+                        // 如:/profile/upload/2019/08/08/3b7a839aced67397bac694d77611ce72.png
+                        return $.table.imageView(value,250,250);
+                    }
+                },
                 {
                     field : 'parentId', 
                     title : '父属性id',
@@ -87,7 +98,7 @@
                     title : '属性字段'
                 },
                 {
-                    field : 'remark', 
+                    field : 'remark',
                     title : '备注'
                 },
                 {
@@ -96,7 +107,7 @@
                     formatter: function(value, row, index) {
                         var actions = [];
                         actions.push('<a class="btn btn-primary btn-xs ' + addFlag + '" href="javascript:void(0)" onclick="$.operate.add(\'' + row.id + '\')"><i class="fa fa-plus"></i>添加</a> ');
-                        //actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                         actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
                         return actions.join('');
                     }

+ 23 - 0
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/domain/GoodsType.java

@@ -23,6 +23,10 @@ public class GoodsType extends BaseEntity
     /** 类型名称 */
     @Excel(name = "类型名称")
     private String name;
+    /** 图片*/
+    private String img;
+
+
 
     /** 父属性id */
     @Excel(name = "父属性id")
@@ -32,6 +36,9 @@ public class GoodsType extends BaseEntity
     @Excel(name = "祖级列表")
     private String ancestors;
 
+    /** 删除标记*/
+    private String delFlag;
+
     /** 商品类型属性列表*/
     private List<GoodsTypeAttribute> goodsTypeAttributes;
 
@@ -90,6 +97,22 @@ public class GoodsType extends BaseEntity
     public void setAttributeNames(String attributeNames) {
         this.attributeNames = attributeNames;
     }
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
 
     @Override
     public String toString() {

+ 11 - 0
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/mapper/GoodsInfoMapper.java

@@ -1,6 +1,9 @@
 package com.dgtly.goods.mapper;
 
 import com.dgtly.goods.domain.GoodsInfo;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Property;
+
 import java.util.List;
 
 /**
@@ -95,4 +98,12 @@ public interface GoodsInfoMapper
 
 
     public int countGoodsInfo();
+    /**
+     * @descption: 批量上下架
+     * @param:
+     * @return:
+     * @auther: qxp
+     * @date: 2020/3/3 10:43
+     */
+    int putawayGooodsInfo(@Param("ids") String[] ids, @Param("putawayFlag")String putawayFlag);
 }

+ 8 - 0
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/mapper/GoodsTypeAttributeMapper.java

@@ -68,4 +68,12 @@ public interface GoodsTypeAttributeMapper
      * @return 结果
      */
     public int batchAttribute(@Param("list")List<GoodsTypeAttribute> goodsTypeAttributes,@Param("typeId")Long typeId);
+    /**
+     * 批量删除分类属性根据typdId
+     *
+     * @param itypeId 分类id
+     *
+     * @return 结果
+     */
+    int deleteGoodsTypeAttributeByTypeId(Long itypeId);
 }

+ 9 - 0
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/IGoodsInfoService.java

@@ -95,4 +95,13 @@ public interface IGoodsInfoService
     public List<GoodsInfo> selectGoodsInfoByIds(String ids);
 
     public int countGoodsInfo();
+
+    /**
+     * @descption: 批量上下架
+     * @param:
+     * @return:
+     * @auther: qxp
+     * @date: 2020/3/3 10:43
+     */
+    int putawayGooodsInfo(String ids, String putawayFlag);
 }

+ 12 - 0
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/impl/GoodsInfoServiceImpl.java

@@ -164,6 +164,18 @@ public class GoodsInfoServiceImpl implements IGoodsInfoService
         return goodsInfoMapper.selectGoodsInfoByIds(Convert.toStrArray(ids));
     }
 
+    /**
+     * @descption: 为前端网页提供商品查询,价格筛选
+     * @param:
+     * @return:
+     * @auther: qxp
+     * @date: 2020/3/3 10:43
+     */
+    @Override
+    public int putawayGooodsInfo(String ids, String putawayFlag) {
+        return  goodsInfoMapper.putawayGooodsInfo(Convert.toStrArray(ids),putawayFlag);
+    }
+
     /**
      * @descption: 用于更新或插入 商品属性、颜色、规格
      * @param:

+ 26 - 2
dgtly-goods/dgtly-goods-common/src/main/java/com/dgtly/goods/service/impl/GoodsTypeServiceImpl.java

@@ -9,6 +9,7 @@ import com.dgtly.common.exception.BusinessException;
 import com.dgtly.common.utils.DateUtils;
 import com.dgtly.goods.domain.GoodsTypeAttribute;
 import com.dgtly.goods.mapper.GoodsTypeAttributeMapper;
+import com.dgtly.goods.service.IGoodsInfoService;
 import com.dgtly.system.domain.SysDept;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -32,6 +33,9 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService
     @Autowired
     private GoodsTypeAttributeMapper goodsTypeAttributeMapper;
 
+    @Autowired
+    private IGoodsInfoService goodsInfoService;
+
     /**
      * 查询商品分类列
      * 
@@ -103,10 +107,29 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService
      * @return 结果
      */
     @Override
+    @Transactional
     public int updateGoodsType(GoodsType goodsType)
     {
         goodsType.setUpdateTime(DateUtils.getNowDate());
-        return goodsTypeMapper.updateGoodsType(goodsType);
+        int i = goodsInfoService.selectGoodsInfoCountByTypeId(goodsType.getId());
+
+        if(i>0&&goodsType.getGoodsTypeAttributes()!=null){
+            throw new RuntimeException("分类存在商品时不允许编辑属性");
+        }
+        //如果有商品 只更新基本属性不更新属性列表
+        if(i<=0){
+            goodsTypeAttributeMapper.deleteGoodsTypeAttributeByTypeId(goodsType.getId());
+            if(goodsType.getGoodsTypeAttributes()!=null){
+                int goodsTypeAttributeSize =goodsType.getGoodsTypeAttributes().size();
+                int n= goodsTypeAttributeMapper.batchAttribute(goodsType.getGoodsTypeAttributes(),goodsType.getId());
+                if(n!=goodsTypeAttributeSize){
+                    throw new RuntimeException("分类分类更新失败");
+                }
+            }
+        }
+        i = goodsTypeMapper.updateGoodsType(goodsType);
+
+        return i;
     }
 
     /**
@@ -203,12 +226,13 @@ public class GoodsTypeServiceImpl implements IGoodsTypeService
         List<Ztree> ztrees = new ArrayList<Ztree>();
         for (GoodsType goodsType : goodsTypes)
         {
-
             Ztree ztree = new Ztree();
             ztree.setId(goodsType.getId());
             ztree.setpId(goodsType.getParentId());
             ztree.setName(goodsType.getName());
             ztree.setTitle(goodsType.getName());
+            ztree.setRemake(goodsType.getImg());
+            ztree.setOpen(false);
             ztrees.add(ztree);
         }
         return ztrees;

+ 9 - 1
dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsInfoMapper.xml

@@ -219,7 +219,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where
             find_in_set(#{typeId} ,gt.ancestors )
             and gi.del_flag = "0"
-            and gi.putaway_flag = "1"
 
     </select>
     <select id="selectGoodsInfoListInWeb" parameterType="GoodsInfo" resultMap="GoodsInfoResult">
@@ -244,6 +243,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by gi.putaway_flag ,gi.create_time
     </select>
 
+    <update id="putawayGooodsInfo">
+        update goods_info
+        set putaway_flag = #{putawayFlag}
+        where id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
 
     <select id="countGoodsInfo" resultType="java.lang.Integer">
         select count(name) from goods_info where del_flag = 0

+ 4 - 0
dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsTypeAttributeMapper.xml

@@ -74,4 +74,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     </insert>
 
+    <delete id="deleteGoodsTypeAttributeByTypeId" parameterType="Long">
+        delete from goods_type_attribute where type_id = #{typeId}
+    </delete>
+
 </mapper>

+ 12 - 4
dgtly-goods/dgtly-goods-common/src/main/resources/mapper/goods/GoodsTypeMapper.xml

@@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <resultMap type="GoodsType" id="GoodsTypeResult">
         <result property="id"    column="id"    />
         <result property="name"    column="name"    />
+        <result property="img"    column="img"    />
         <result property="parentId"    column="parent_id"    />
         <result property="ancestors"    column="ancestors"    />
         <result property="createTime"    column="create_time"    />
@@ -14,6 +15,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="updateBy"    column="update_by"    />
         <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
         <collection  property="goodsTypeAttributes"   javaType="java.util.List"       resultMap="GoodsTypeAttributeResult" />
     </resultMap>
 
@@ -25,7 +27,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectGoodsTypeVo">
-        select gt.id, gt.name, gt.parent_id, gt.ancestors, gt.create_time, gt.create_by, gt.update_time, gt.update_by, gt.remark,
+        select gt.id, gt.name, gt.parent_id, gt.img,gt.ancestors, gt.create_time, gt.create_by, gt.update_time,
+                gt.update_by, gt.remark,gt.del_flag,
                 gta.id attributeId,gta.type_id,gta.attribute_name,gta.sort
         from goods_type gt
         left join goods_type_attribute gta on gta.type_id = gt.id
@@ -33,7 +36,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectGoodsTypeList" parameterType="GoodsType" resultMap="GoodsTypeResult">
         <include refid="selectGoodsTypeVo"/>
-        <where>  
+        <where>
+            gt.del_flag= '0'
             <if test="name != null  and name != ''"> and gt.name like concat('%', #{name}, '%')</if>
             <if test="parentId != null "> and gt.parent_id = #{parentId}</if>
             <if test="ancestors != null  and ancestors != ''"> and gt.ancestors = #{ancestors}</if>
@@ -52,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into goods_type
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="name != null  and name != ''">name,</if>
+            <if test="img != null  and img != ''">img,</if>
             <if test="parentId != null ">parent_id,</if>
             <if test="ancestors != null  and ancestors != ''">ancestors,</if>
             <if test="createTime != null ">create_time,</if>
@@ -62,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="name != null  and name != ''">#{name},</if>
+            <if test="img != null  and img != ''">#{img},</if>
             <if test="parentId != null ">#{parentId},</if>
             <if test="ancestors != null  and ancestors != ''">#{ancestors},</if>
             <if test="createTime != null ">#{createTime},</if>
@@ -78,6 +84,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="name != null  and name != ''">name = #{name},</if>
             <if test="parentId != null ">parent_id = #{parentId},</if>
             <if test="ancestors != null  and ancestors != ''">ancestors = #{ancestors},</if>
+            <if test="img != null  and img != ''">img = #{img},</if>
             <if test="createTime != null ">create_time = #{createTime},</if>
             <if test="createBy != null  and createBy != ''">create_by = #{createBy},</if>
             <if test="updateTime != null ">update_time = #{updateTime},</if>
@@ -88,11 +95,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteGoodsTypeById" parameterType="Long">
-        delete from goods_type where id = #{id}
+        update  goods_type set  del_flag = '2' where id = #{id}
     </delete>
 
     <delete id="deleteGoodsTypeByIds" parameterType="String">
-        delete from goods_type where id in 
+        update goods_type set  del_flag = '2' where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
@@ -101,6 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="selectGoodsTypeCount" parameterType="GoodsType" resultType="int" >
         select  count(1) from goods_type
         <where>
+            del_flag='0'
             <if test="name != null  and name != ''"> and name = #{name}</if>
             <if test="parentId != null "> and parent_id = #{parentId}</if>
             <if test="ancestors != null  and ancestors != ''"> and  find_in_set(#{ancestors} ,ancestors ) </if>