yuhaitao14 7 years ago
parent
commit
5e0ca4643d

+ 2 - 2
shop/src/main/java/com/zskk/shop/controller/GlobalErrorController.java

@@ -28,7 +28,7 @@ import com.zskk.shop.exception.ErrorConstant;
 import com.zskk.shop.exception.ZSKKException;
 import com.zskk.shop.utils.LogUtil;
 
-@ControllerAdvice  
+//@ControllerAdvice  
 public class GlobalErrorController {
 	
 	@Value("${zskk.uccenter}")
@@ -48,7 +48,7 @@ public class GlobalErrorController {
 	}
 	
 	private Object process(HttpServletRequest request, Exception e){
-		LogUtil.sysError(e.getMessage(), e);
+		//LogUtil.sysError(e.getMessage(), e);
 		
 		String accept = request.getHeader("Accept");
 		HttpHeaders headers = new HttpHeaders();

+ 107 - 0
shop/src/main/java/com/zskk/shop/controller/ShopErrorController.java

@@ -0,0 +1,107 @@
+/**
+* @版权信息 (@copyright Copyright 2017-XXXX JDJR.COM All Right Reserved);
+* @see
+* @author 于海涛 京东金融【技术研发部-证券及营销平台研发部-营销平台研发部】
+* @version 1.0
+* @date 2018年6月7日
+*/
+
+package com.zskk.shop.controller;
+
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.autoconfigure.web.AbstractErrorController;
+import org.springframework.boot.autoconfigure.web.ErrorAttributes;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.servlet.ModelAndView;
+
+import com.alibaba.fastjson.JSON;
+import com.zskk.shop.exception.ErrorConstant;
+import com.zskk.shop.exception.ZSKKError;
+import com.zskk.shop.exception.ZSKKException;
+import com.zskk.shop.utils.LogUtil;
+
+@Controller
+public class ShopErrorController extends AbstractErrorController {
+	@Value("${zskk.uccenter}")
+	private String uccenter;
+	
+	@Value("${zskk.myhost}")
+	private String myhost;
+	
+	public ShopErrorController(ErrorAttributes errorAttributes) {
+		super(errorAttributes);
+	}
+
+	@Override
+	public String getErrorPath() {
+		return "error";
+	}
+
+	@RequestMapping(produces = "text/html")
+	public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {
+		Map<String, Object> error 	= this.getErrorAttributes(request, Boolean.TRUE);
+		String exception 			= (String)error.get("exception");
+		String message				= (String)error.get("message");
+		if (ZSKKException.class.getName().equals(exception)){
+			ZSKKError errorObj = JSON.parseObject(message, ZSKKError.class);
+			if (errorObj.getCode() == ErrorConstant.NO_LOGIN_ERROR.getCode()){
+				return new ModelAndView("redirect:" + uccenter + "/login/authorize?redirect=" + this.getRequestUrl(request));
+			}else{
+				ModelAndView model = new ModelAndView(this.getErrorPath());
+				model.addObject("code", errorObj.getCode());
+				model.addObject("msg", errorObj.getMsg());
+				return model;
+			}
+		}else{
+			ModelAndView model = new ModelAndView(this.getErrorPath());
+			model.addObject("code", ErrorConstant.SERVER_ERROR.getCode());
+			model.addObject("msg", ErrorConstant.SERVER_ERROR.getMsg());
+			return model;
+		}
+		
+	}
+
+	@RequestMapping
+	@ResponseBody
+	public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {
+		Map<String, Object> error 	= this.getErrorAttributes(request, Boolean.TRUE);
+		String exception 			= (String)error.get("exception");
+		String message				= (String)error.get("message");
+		Map<String, Object> body = new HashMap<>();
+		if (ZSKKException.class.getName().equals(exception)){
+			ZSKKError errorObj = JSON.parseObject(message, ZSKKError.class);
+			body.put("code", errorObj.getCode());
+			body.put("msg", errorObj.getMsg());
+		}else{
+			body.put("code", ErrorConstant.SERVER_ERROR.getCode());
+			body.put("msg", ErrorConstant.SERVER_ERROR.getMsg());
+		}
+		return new ResponseEntity<Map<String,Object>>(body, HttpStatus.OK);
+
+	}
+
+	private String getRequestUrl(HttpServletRequest request){
+		try{
+			String path = request.getRequestURI();
+			String query = request.getQueryString();
+			String url = myhost + path + (query != null? "?" + query: "");
+			return URLEncoder.encode(url, "UTF-8");
+		}catch (Exception e) {
+			LogUtil.sysError(e.getMessage(), e);
+			return "";
+		}
+	}
+}

+ 62 - 0
shop/src/main/java/com/zskk/shop/controller/admin/SysLabelController.java

@@ -0,0 +1,62 @@
+/**
+* @版权信息 (@copyright Copyright 2017-XXXX JDJR.COM All Right Reserved);
+* @see
+* @author 于海涛 京东金融【技术研发部-证券及营销平台研发部-营销平台研发部】
+* @version 1.0
+* @date 2018年6月7日
+*/
+
+package com.zskk.shop.controller.admin;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.zskk.shop.controller.AbstractController;
+import com.zskk.shop.controller.bean.ControllerResult;
+import com.zskk.shop.dao.entry.SysLabel;
+import com.zskk.shop.exception.ErrorConstant;
+import com.zskk.shop.exception.ZSKKException;
+import com.zskk.shop.service.SysLabelService;
+
+@RequestMapping("/manage/label")
+@Controller
+public class SysLabelController  extends AbstractController {
+
+	@Autowired
+	private SysLabelService sysLabelService;
+	
+	@RequestMapping("/labels")
+	@ResponseBody
+	public ControllerResult labels(){
+		return new ControllerResult(sysLabelService.queryAll());
+	}
+	
+	@RequestMapping("/get")
+	@ResponseBody
+	public ControllerResult getOne(@RequestParam("id") Integer id){
+		SysLabel label = sysLabelService.queryLabel(id);
+		if (label == null){
+			throw new ZSKKException(ErrorConstant.PARAM_ERROR);
+		}
+		return new ControllerResult(label);
+	}
+	
+	@RequestMapping("/save")
+	public ControllerResult save(SysLabel label){
+		if (label.getId().equals(0)){
+			sysLabelService.addLabel(label.getName(), label.getStatus());
+		}else{
+			SysLabel old = sysLabelService.queryLabel(label.getId());
+			if (old == null){
+				throw new ZSKKException(ErrorConstant.PARAM_ERROR);
+			}
+			sysLabelService.updateLabel(old, label.getName(), label.getStatus());
+		}
+		return new ControllerResult(Boolean.TRUE);
+	}
+	
+	
+}

+ 3 - 1
shop/src/main/java/com/zskk/shop/dao/SysLabelMapper.java

@@ -16,12 +16,14 @@ import com.zskk.shop.dao.entry.SysLabel;
 public interface SysLabelMapper {
 	public List<SysLabel> queryAllLabels();
 	
-	public SysLabel queryLabel();
+	public SysLabel queryLabel(Integer id);
 	
 	public void addLabel(SysLabel sysLabel);
 	
 	public int updateLabel(SysLabel sysLabel);
 	
+	public int delLabel(Integer id);
+	
 	public List<GoodLabel> queryLabelGoodids(Integer lid);
 	
 	public void addLabelGood(GoodLabel bean);

+ 10 - 3
shop/src/main/java/com/zskk/shop/dao/entry/SysLabel.java

@@ -9,12 +9,13 @@
 package com.zskk.shop.dao.entry;
 
 public class SysLabel {
-	private int id;
+	private Integer id;
 	private String name;
-	public int getId() {
+	private Integer status;
+	public Integer getId() {
 		return id;
 	}
-	public void setId(int id) {
+	public void setId(Integer id) {
 		this.id = id;
 	}
 	public String getName() {
@@ -23,4 +24,10 @@ public class SysLabel {
 	public void setName(String name) {
 		this.name = name;
 	}
+	public Integer getStatus() {
+		return status;
+	}
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
 }

+ 3 - 1
shop/src/main/java/com/zskk/shop/exception/ZSKKException.java

@@ -1,12 +1,14 @@
 package com.zskk.shop.exception;
 
+import com.alibaba.fastjson.JSON;
+
 public class ZSKKException extends RuntimeException {
 	private static final long serialVersionUID = 1L;
 	
 	private ZSKKError error;
 	
 	public ZSKKException(ZSKKError error){
-		super(error.getMsg());
+		super(JSON.toJSONString(error));
 		this.error = error;
 	}
 

+ 38 - 0
shop/src/main/java/com/zskk/shop/service/SysLabelService.java

@@ -20,6 +20,16 @@ import com.zskk.shop.dao.entry.SysLabel;
 @Service
 public class SysLabelService {
 	
+	/**
+	 *  状态 上线
+	 */
+	public static final Integer LABEL_STATUS_ONLINE = 1;
+	
+	/**
+	 * 状态 离线
+	 */
+	public static final Integer LABEL_STATUS_OFFLINE = 0;
+	
 	@Autowired
 	private SysLabelMapper sysLabelMapper;
 	
@@ -30,4 +40,32 @@ public class SysLabelService {
 	public List<GoodLabel> queryLabelGoods(Integer lid){
 		return sysLabelMapper.queryLabelGoodids(lid);
 	}
+	
+	public SysLabel queryLabel(Integer id){
+		return sysLabelMapper.queryLabel(id);
+	}
+	
+	/**
+	 * 添加标签
+	 * @param name
+	 */
+	public void addLabel(String name, Integer status){
+		SysLabel label = new SysLabel();
+		label.setName(name);
+		label.setStatus(status);
+		sysLabelMapper.addLabel(label);
+	}
+	
+	/**
+	 * 更新标签
+	 * @param label
+	 * @param name
+	 * @param status
+	 * @return
+	 */
+	public int updateLabel(SysLabel label, String name, Integer status){
+		label.setName(name);
+		label.setStatus(status);
+		return sysLabelMapper.updateLabel(label);
+	}
 }

+ 7 - 4
shop/src/main/resource/mapper/SysLabelMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.zskk.shop.dao.SysLabelMapper">
 	<select id="queryAllLabels" resultType="com.zskk.shop.dao.entry.SysLabel">
 		select *
-		from sys_label
+		from sys_label where status=1
 	</select>
 	<select id="queryLabel" resultType="com.zskk.shop.dao.entry.SysLabel">
 		select *
@@ -11,11 +11,14 @@
 		where id=#{id}
 	</select>
 	<insert id="addLabel" parameterType="com.zskk.shop.dao.entry.SysLabel">
-		insert into sys_label(name)
-		values(#{name})
+		insert into sys_label(name, status)
+		values(#{name}, #{status})
 	</insert>
 	<update id="updateLabel" parameterType="com.zskk.shop.dao.entry.SysLabel">
-		update sys_label set name=#{name} where id=#{id}
+		update sys_label set name=#{name},status=#{status} where id=#{id}
+	</update>
+	<update id="delLabel" >
+		update sys_label set status=0 where id=#{id}
 	</update>
 	
 	<select id="queryLabelGoodids" resultType="com.zskk.shop.dao.entry.GoodLabel">

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

@@ -67,4 +67,5 @@ export default {
     setGoodStatus: (params, vue) => post(`${serverPath}manage/setGoodStatus`, params, vue),
     getGoodDescribe: (params, vue) => post(`${serverPath}manage/getGoodDescribe`, params, vue),
     saveGoodDescribe: (params, vue) => post(`${serverPath}manage/saveGoodDescribe`, params, vue),
+    getSysLabels: (params, vue) => post(`${serverPath}manage/label/labels`, params, vue),
 }

+ 1 - 1
shop/static/manager/src/components/Header.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="header">
-        <div class="logo">后台管理系统</div>
+        <div class="logo">商城后台管理系统</div>
         <div class="user-info">
             <el-dropdown trigger="click" @command="handleCommand">
                 <span class="el-dropdown-link">

+ 3 - 2
shop/static/manager/src/components/Sidebar.vue

@@ -38,8 +38,9 @@ export default {
     }
   },
   mounted: function() {
-      var item    = { icon: '', index: '/goodsManager', title: '商品管理'}
-      var items   = [item]
+      var items   = []
+      items.push({ icon: '', index: '/goodsManager', title: '商品管理'})
+      items.push({ icon: '', index: '/sysLabelManager', title: '系统标签'})
       this.items  = items
       for (var i in items){
           var item = items[i]

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

@@ -112,7 +112,7 @@ export default {
           cancelButtonText: '取消',
           type: 'warning'
         }).then(() => {
-          this.$http.setGoodStatus({gid: row.gid, status:(row.status === 1? false: true)}).then(res =>{
+          this.$http.setGoodStatus({gid: row.gid, status:(row.status === 1? false: true)}, this).then(res =>{
               if (res.code === 0){
                   row.status = row.status === 1? 0: 1;
                   this.$message({

+ 28 - 0
shop/static/manager/src/components/page/SysLabelManager.vue

@@ -0,0 +1,28 @@
+<template>
+    <el-table :data="items">
+        <el-table-column label="标签名称" prop="name"></el-table-column>
+        <el-table-column label="操作">
+             <template slot-scope="scope">
+                    <el-button type="text" size="small">编辑</el-button>
+                    <el-button type="text" size="small">删除</el-button>
+                </template>
+
+        </el-table-column>
+    </el-table>
+</template>
+<script>
+export default {
+    data: function(){
+        return {
+            items:[]
+        }
+    },
+    mounted: function (){
+        this.$http.getSysLabels({}, this).then(res => {
+            if (res.code === 0){
+                this.items = res.obj;
+            }
+        })
+    }
+}
+</script>

+ 5 - 1
shop/static/manager/src/router/index.js

@@ -21,13 +21,17 @@ export default new Router({
                 {
                     path: '/editGoodsDescribe',
                     component: resolve => require(['../components/page/EditGoodsDescribe'], resolve)
+                },
+                {
+                    path: '/sysLabelManager',
+                    component: resolve => require(['../components/page/SysLabelManager'], resolve)
                 }
             ]
         },
         {
             path: '/demo',
             name: 'demo',
-            component: resolve => require(['../components/page/EditGoods'], resolve)
+            component: resolve => require(['../components/page/SysLabelManager'], resolve)
         }
     ]
 })

+ 73 - 31
shop/static/manager/static/css/main.css

@@ -1,80 +1,114 @@
-*{margin:0;padding:0;}
-html,body,#app,.wrapper{
-    width:100%;
-    height:100%;
+* {
+    margin: 0;
+    padding: 0;
+}
+
+html,
+body,
+#app,
+.wrapper {
+    width: 100%;
+    height: 100%;
     overflow: hidden;
 }
-body{
-    font-family:"Helvetica Neue",Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif;
+
+body {
+    font-family: "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif;
+}
+
+a {
+    text-decoration: none
 }
-a{text-decoration: none}
-.content{
+
+.content {
     background: none repeat scroll 0 0 #fff;
     position: absolute;
     left: 250px;
     right: 0;
     top: 70px;
-    bottom:0;
+    bottom: 0;
     width: auto;
-    padding:40px;
+    padding: 20px;
     box-sizing: border-box;
     overflow-y: scroll;
 }
-.crumbs{
+
+.crumbs {
     margin-bottom: 20px;
 }
-.pagination{
+
+.pagination {
     margin: 20px 0;
     text-align: right;
 }
-.plugins-tips{
-    padding:20px 10px;
+
+.plugins-tips {
+    padding: 20px 10px;
     margin-bottom: 20px;
 }
+
 .el-button+.el-tooltip {
     margin-left: 10px;
 }
 
-.el-table tr:hover{
+.el-table tr:hover {
     background: #f6faff;
 }
-.mgb20{
+
+.mgb20 {
     margin-bottom: 20px;
 }
 
-.move-enter-active,.move-leave-active{
+.move-enter-active,
+.move-leave-active {
     transition: opacity .5s;
 }
-.move-enter,.move-leave{
+
+.move-enter,
+.move-leave {
     opacity: 0;
 }
+
+
 /*BaseForm*/
-.form-box{
-    width:600px;
+
+.form-box {
+    width: 600px;
 }
-.form-box .line{
+
+.form-box .line {
     text-align: center;
 }
-.el-time-panel__content::after, .el-time-panel__content::before {
+
+.el-time-panel__content::after,
+.el-time-panel__content::before {
     margin-top: -7px;
 }
+
+
 /*Readme*/
-.ms-doc .el-checkbox__input.is-disabled+.el-checkbox__label{
+
+.ms-doc .el-checkbox__input.is-disabled+.el-checkbox__label {
     color: #333;
     cursor: pointer;
 }
+
+
 /*Upload*/
-.pure-button{
-    width:150px;
-    height:40px;
+
+.pure-button {
+    width: 150px;
+    height: 40px;
     line-height: 40px;
     text-align: center;
     color: #fff;
     border-radius: 3px;
 }
-.g-core-image-corp-container .info-aside{
-    height:45px;
+
+.g-core-image-corp-container .info-aside {
+    height: 45px;
 }
+
 .el-upload--text {
     background-color: #fff;
     border: 1px dashed #d9d9d9;
@@ -87,27 +121,35 @@ a{text-decoration: none}
     position: relative;
     overflow: hidden;
 }
+
 .el-upload--text .el-icon-upload {
     font-size: 67px;
     color: #97a8be;
     margin: 40px 0 16px;
     line-height: 50px;
 }
+
 .el-upload--text {
     color: #97a8be;
     font-size: 14px;
     text-align: center;
 }
+
 .el-upload--text em {
     font-style: normal;
 }
+
+
 /*VueEditor*/
-.ql-container{
+
+.ql-container {
     min-height: 400px;
 }
-.ql-snow .ql-tooltip{
+
+.ql-snow .ql-tooltip {
     transform: translateX(117.5px) translateY(10px) !important;
 }
-.editor-btn{
+
+.editor-btn {
     margin-top: 20px;
 }