Browse Source

编辑商品

yuhaitao14 7 years ago
parent
commit
77f0977fb3

+ 11 - 2
shop/src/main/java/com/zskk/shop/controller/admin/GoodsManagerController.java

@@ -108,8 +108,6 @@ public class GoodsManagerController extends AbstractController{
 		return new ControllerResult(goodService.setGoodStatus(base, status? GoodService.GOOD_ONLINE: GoodService.GOOD_OFFLINE));
 		return new ControllerResult(goodService.setGoodStatus(base, status? GoodService.GOOD_ONLINE: GoodService.GOOD_OFFLINE));
 	}
 	}
 	
 	
-	
-
 	@RequestMapping("getGoodDescribe")
 	@RequestMapping("getGoodDescribe")
 	@ResponseBody
 	@ResponseBody
 	public ControllerResult getGoodDescribe(@RequestParam("gid") Integer gid){
 	public ControllerResult getGoodDescribe(@RequestParam("gid") Integer gid){
@@ -117,6 +115,17 @@ public class GoodsManagerController extends AbstractController{
 		return new ControllerResult(goodService.toGoodDescribeBeans(list));
 		return new ControllerResult(goodService.toGoodDescribeBeans(list));
 	}
 	}
 	
 	
+	@RequestMapping("saveGoodDescribe")
+	@ResponseBody
+	public ControllerResult saveGoodDescribe(@RequestParam("gid") Integer gid, @RequestParam("items") String itemsStr){
+		GoodBase base = goodService.queryOneGoodBase(gid);
+		if (base == null){
+			throw new ZSKKException(ErrorConstant.PARAM_ERROR);
+		}
+		goodService.saveGoodDescribe(base, JSON.parseArray(itemsStr, GoodDescribe.class));
+		return new ControllerResult(Boolean.TRUE);
+	}
+	
 	@RequestMapping("getOneGood")
 	@RequestMapping("getOneGood")
 	@ResponseBody
 	@ResponseBody
 	public ControllerResult getOneGood(@RequestParam("gid") Integer gid){
 	public ControllerResult getOneGood(@RequestParam("gid") Integer gid){

+ 6 - 0
shop/src/main/java/com/zskk/shop/dao/GoodMapper.java

@@ -118,6 +118,12 @@ public interface GoodMapper {
 	 */
 	 */
 	public int updateGoodDescribe(GoodDescribe goodDescribe);
 	public int updateGoodDescribe(GoodDescribe goodDescribe);
 	
 	
+	/**
+	 * 商城商品的全部详细信息
+	 * @param gid
+	 */
+	public void delAllGoodDescribes(Integer gid);
+	
 	/**
 	/**
 	 * 查询商品价格
 	 * 查询商品价格
 	 * @param gid
 	 * @param gid

+ 18 - 0
shop/src/main/java/com/zskk/shop/service/GoodService.java

@@ -157,6 +157,24 @@ public class GoodService {
 		return goodMapper.queryGoodDescribes(gid);
 		return goodMapper.queryGoodDescribes(gid);
 	}
 	}
 	
 	
+	/**
+	 * 保存商品详信息
+	 * @param good
+	 * @param items
+	 */
+	@Transactional
+	public void saveGoodDescribe(GoodBase good, List<GoodDescribe> items){
+		Integer now = ToolsUtil.getNow();
+		goodMapper.delAllGoodDescribes(good.getGid());
+		for(GoodDescribe it: items){
+			it.setCtime(now);
+			it.setGid(good.getGid());
+			it.setSort(0);
+			it.setType(2);
+			goodMapper.addGoodDescribe(it);
+		}
+	}
+	
 	public GoodBean toBaseGoodBean(GoodBase base){
 	public GoodBean toBaseGoodBean(GoodBase base){
 		GoodBean bean  = new GoodBean();
 		GoodBean bean  = new GoodBean();
 		bean.setGid(base.getGid());
 		bean.setGid(base.getGid());

+ 3 - 0
shop/src/main/resource/mapper/GoodMapper.xml

@@ -93,6 +93,9 @@
 		update good_describe title=#{title},content=#{content}, type=#{type}, sort=#{sort}
 		update good_describe title=#{title},content=#{content}, type=#{type}, sort=#{sort}
 		where gid=#{gid}
 		where gid=#{gid}
 	</update>
 	</update>
+	<delete id="delAllGoodDescribes">
+		delete from good_describe where gid=#{gid}
+	</delete>
 	
 	
 	<!-- 商品价格 -->
 	<!-- 商品价格 -->
 	<sql id="selectGoodPrice">
 	<sql id="selectGoodPrice">

+ 2 - 1
shop/static/manager/src/api/index.js

@@ -65,5 +65,6 @@ export default {
     getOneGood: (params, vue) => post(`${serverPath}manage/getOneGood`, params, vue),
     getOneGood: (params, vue) => post(`${serverPath}manage/getOneGood`, params, vue),
     editGoodsBase: (params, vue) => post(`${serverPath}manage/editbase`, params, vue),
     editGoodsBase: (params, vue) => post(`${serverPath}manage/editbase`, params, vue),
     setGoodStatus: (params, vue) => post(`${serverPath}manage/setGoodStatus`, params, vue),
     setGoodStatus: (params, vue) => post(`${serverPath}manage/setGoodStatus`, params, vue),
-    getGoodDescribe: (params, vue) => post(`${serverPath}manage/getGoodDescribe`, params, vue)
+    getGoodDescribe: (params, vue) => post(`${serverPath}manage/getGoodDescribe`, params, vue),
+    saveGoodDescribe: (params, vue) => post(`${serverPath}manage/saveGoodDescribe`, params, vue),
 }
 }

+ 81 - 0
shop/static/manager/src/components/page/EditGoodsDescribe.vue

@@ -0,0 +1,81 @@
+<template>
+    <div>
+        <el-upload :action="uploadAction" list-type="picture-card" :file-list="items" :on-success="onUploadSuccess" :before-upload="onBeforeUpload">
+            <i class="el-icon-plus"></i>
+        </el-upload>
+        <div>
+            <el-button type="primary" @click="save">保存</el-button>
+             <el-button @click="goBack">取消</el-button>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+  data() {
+    return {
+      uploadAction: process.env.SERVER_PATH + 'upload',
+      items: [],
+      gid: 0
+    }
+  },
+  methods: {
+    onBeforeUpload: function(file) {
+      const isJPG = file.type === 'image/jpeg'
+      const isPNG = file.type === 'image/png'
+
+      if (!isJPG && !isPNG) {
+        this.$message.error('上传商品图标只能是 JPG/PNG 格式!')
+        return false
+      } else {
+        return true
+      }
+    },
+    onUploadSuccess: function(res, file) {
+      if (res.code != 0) {
+        this.$message.error(
+          '上传图片失败 原因:' + res.msg + '(' + res.code + ')'
+        )
+      } else {
+        this.items.push({ name: '', url: res.obj })
+      }
+    },
+    save: function() {
+      var items = []
+      this.items.forEach(it => {
+        items.push({ title: it.name, content: it.url })
+      })
+      var that = this
+      this.$http
+        .saveGoodDescribe({ gid: this.gid, items: items }, this)
+        .then(res => {
+          if (res.code === 0) {
+            this.$message({
+              message: '操作成功',
+              type: 'success',
+              duration: 1000,
+              onClose: function() {
+               that.goBack()
+              }
+            })
+          }
+        })
+    },
+    goBack: function(){
+        this.$router.back();
+    }
+  },
+  mounted: function() {
+    let gid = this.$route.query.gid
+    this.gid = gid
+    this.$http.getGoodDescribe({ gid: gid }, this).then(res => {
+      if (res.code === 0) {
+        var items = []
+        res.obj.forEach(item => {
+          items.push({ id: item.id, name: item.title, url: item.content })
+        })
+        this.items = items
+      }
+    })
+  }
+}
+</script>

+ 4 - 1
shop/static/manager/src/components/page/GoodsManager.vue

@@ -34,7 +34,7 @@
             <el-table-column label="折扣价" prop="price.discountPrice"></el-table-column>
             <el-table-column label="折扣价" prop="price.discountPrice"></el-table-column>
             <el-table-column label="详细">
             <el-table-column label="详细">
                 <template slot-scope="scope">
                 <template slot-scope="scope">
-                    <el-button type="text" size="small">编辑详细</el-button>
+                    <el-button type="text" size="small" @click="goEditGoodsDescribe(scope.row)">编辑详细</el-button>
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
             <el-table-column label="状态" prop="status" :formatter="statusFormater">
             <el-table-column label="状态" prop="status" :formatter="statusFormater">
@@ -127,6 +127,9 @@ export default {
     },
     },
     goEdit: function (row){
     goEdit: function (row){
         this.$router.push({path:'/editGoods', query:{gid: row.gid}})
         this.$router.push({path:'/editGoods', query:{gid: row.gid}})
+    },
+    goEditGoodsDescribe: function(row){
+        this.$router.push({path:'/editGoodsDescribe', query:{gid: row.gid}})
     }
     }
   },
   },
   mounted: function() {
   mounted: function() {

+ 4 - 0
shop/static/manager/src/router/index.js

@@ -17,6 +17,10 @@ export default new Router({
                 {
                 {
                     path: '/editGoods',
                     path: '/editGoods',
                     component: resolve => require(['../components/page/EditGoods'], resolve)
                     component: resolve => require(['../components/page/EditGoods'], resolve)
+                },
+                {
+                    path: '/editGoodsDescribe',
+                    component: resolve => require(['../components/page/EditGoodsDescribe'], resolve)
                 }
                 }
             ]
             ]
         },
         },