From 2d4dc7e0c188a8036141dcf37ca00ead68366bad Mon Sep 17 00:00:00 2001 From: zhh Date: Wed, 18 Apr 2018 17:25:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + mall-admin/pom.xml | 4 ++ .../macro/mall/component/WebLogAspect.java | 48 +++++++++++++ .../mall/controller/PmsBrandController.java | 14 ---- ...PmsProductAttributeCategoryController.java | 7 -- .../PmsProductAttributeController.java | 19 +++++ .../PmsProductCategoryController.java | 7 -- .../java/com/macro/mall/dto/CommonResult.java | 6 ++ .../service/PmsProductAttributeService.java | 7 ++ .../impl/PmsProductAttributeServiceImpl.java | 15 ++++ .../java/com/macro/mall/util/JsonUtils.java | 71 +++++++++++++++++++ 11 files changed, 171 insertions(+), 28 deletions(-) create mode 100644 mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java create mode 100644 mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeController.java create mode 100644 mall-admin/src/main/java/com/macro/mall/service/PmsProductAttributeService.java create mode 100644 mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductAttributeServiceImpl.java create mode 100644 mall-admin/src/main/java/com/macro/mall/util/JsonUtils.java diff --git a/README.md b/README.md index a4b41ab..88b1ab4 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ crud操作demo | ✔ 集成监控功能 | ✔ 包结构调整 | ✔ SpringSecurity登录改为Restful形式 | +SpringAOP通用日志处理 | ### 功能完善 diff --git a/mall-admin/pom.xml b/mall-admin/pom.xml index e3df15e..712f97a 100644 --- a/mall-admin/pom.xml +++ b/mall-admin/pom.xml @@ -51,6 +51,10 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-aop + io.springfox springfox-swagger2 diff --git a/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java b/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java new file mode 100644 index 0000000..1110271 --- /dev/null +++ b/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java @@ -0,0 +1,48 @@ +package com.macro.mall.component; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +/** + * 统一日志处理切面 + */ +@Aspect +@Component +public class WebLogAspect { + private static final Logger LOGGER = LoggerFactory.getLogger(WebLogAspect.class); + private ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("execution(public * com.macro.mall.controller.*.*(..))") + public void webLog() { + } + + @Before("webLog()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + startTime.set(System.currentTimeMillis()); + //获取当前请求对象 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + //记录请求信息(可以记录到数据库中) + String classMethod = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName(); + String args = Arrays.toString(joinPoint.getArgs()); + LOGGER.info("HTTP URL:{}; HTTP_METHOD:{}; IP:{}; CLASS_METHOD:{}; ARGS:{}", + request.getRequestURL(), request.getMethod(), request.getRemoteAddr(), classMethod, args); + } + + @AfterReturning(value = "webLog()", returning = "ret") + public void doAfterReturning(Object ret) throws Throwable { + long costTime = System.currentTimeMillis() - startTime.get(); + LOGGER.info("RESPONSE:{}; COST_TIME:{}ms", ret, costTime); + } +} diff --git a/mall-admin/src/main/java/com/macro/mall/controller/PmsBrandController.java b/mall-admin/src/main/java/com/macro/mall/controller/PmsBrandController.java index 1303388..7b0b6fa 100644 --- a/mall-admin/src/main/java/com/macro/mall/controller/PmsBrandController.java +++ b/mall-admin/src/main/java/com/macro/mall/controller/PmsBrandController.java @@ -25,8 +25,6 @@ public class PmsBrandController { @Autowired private PmsBrandService brandService; - private static final Logger LOGGER = LoggerFactory.getLogger(PmsBrandController.class); - @ApiOperation(value = "获取全部品牌列表") @RequestMapping(value = "/listAll", method = RequestMethod.GET) @ResponseBody @@ -45,10 +43,8 @@ public class PmsBrandController { int count = brandService.createBrand(pmsBrand); if (count == 1) { commonResult = new CommonResult().success(pmsBrand); - LOGGER.debug("createBrand success:{}", pmsBrand); } else { commonResult = new CommonResult().failed(); - LOGGER.debug("createBrand failed:{}", pmsBrand); } return commonResult; } @@ -64,10 +60,8 @@ public class PmsBrandController { int count = brandService.updateBrand(id, pmsBrandParam); if (count == 1) { commonResult = new CommonResult().success(pmsBrandParam); - LOGGER.debug("updateBrand success:{}", pmsBrandParam); } else { commonResult = new CommonResult().failed(); - LOGGER.debug("updateBrand failed:{}", pmsBrandParam); } return commonResult; } @@ -78,10 +72,8 @@ public class PmsBrandController { public Object deleteBrand(@PathVariable("id") Long id) { int count = brandService.deleteBrand(id); if (count == 1) { - LOGGER.debug("deleteBrand success:id={}", id); return new CommonResult().success(null); } else { - LOGGER.debug("deleteBrand failed:id={}", id); return new CommonResult().failed(); } } @@ -108,10 +100,8 @@ public class PmsBrandController { public Object deleteBrandBatch(@RequestParam("ids") List ids) { int count = brandService.deleteBrand(ids); if (count > 0) { - LOGGER.debug("deleteBrandBatch success:ids={}", ids); return new CommonResult().success(count); } else { - LOGGER.debug("deleteBrandBatch failed:ids={}", ids); return new CommonResult().failed(); } } @@ -123,10 +113,8 @@ public class PmsBrandController { @RequestParam("showStatus") Integer showStatus) { int count = brandService.updateShowStatus(ids, showStatus); if (count > 0) { - LOGGER.debug("updateShowStatus success:ids={}", ids); return new CommonResult().success(count); } else { - LOGGER.debug("updateShowStatus failed:ids={}", ids); return new CommonResult().failed(); } } @@ -138,10 +126,8 @@ public class PmsBrandController { @RequestParam("factoryStatus") Integer factoryStatus) { int count = brandService.updateFactoryStatus(ids, factoryStatus); if (count > 0) { - LOGGER.debug("updateFactoryStatus success:{}", ids); return new CommonResult().success(count); } else { - LOGGER.debug("updateFactoryStatus failed:{}", ids); return new CommonResult().failed(); } } diff --git a/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeCategoryController.java b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeCategoryController.java index a594445..232a0cf 100644 --- a/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeCategoryController.java +++ b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeCategoryController.java @@ -18,7 +18,6 @@ import java.util.List; @Controller @RequestMapping("/productAttribute/category") public class PmsProductAttributeCategoryController { - private static final Logger LOGGER = LoggerFactory.getLogger(PmsProductAttributeCategoryController.class); @Autowired private PmsProductAttributeCategoryService productAttributeCategoryService; @@ -28,10 +27,8 @@ public class PmsProductAttributeCategoryController { public Object create(@RequestParam String name) { int count = productAttributeCategoryService.create(name); if (count > 0) { - LOGGER.debug("create success name:{}", name); return new CommonResult().success(count); } else { - LOGGER.debug("create failed name:{}", name); return new CommonResult().failed(); } } @@ -42,10 +39,8 @@ public class PmsProductAttributeCategoryController { public Object update(@PathVariable Long id, @RequestParam String name) { int count = productAttributeCategoryService.update(id, name); if (count > 0) { - LOGGER.debug("update success id:{}", id); return new CommonResult().success(count); } else { - LOGGER.debug("update failed id:{}", id); return new CommonResult().failed(); } } @@ -56,10 +51,8 @@ public class PmsProductAttributeCategoryController { public Object delete(@PathVariable Long id) { int count = productAttributeCategoryService.delete(id); if (count > 0) { - LOGGER.debug("delete success name:{}", id); return new CommonResult().success(count); } else { - LOGGER.debug("delete failed name:{}", id); return new CommonResult().failed(); } } diff --git a/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeController.java b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeController.java new file mode 100644 index 0000000..3dfbb9f --- /dev/null +++ b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductAttributeController.java @@ -0,0 +1,19 @@ +package com.macro.mall.controller; + +import com.macro.mall.service.PmsProductAttributeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * 商品属性管理Controller + */ +@Controller +@RequestMapping("/productAttribute") +public class PmsProductAttributeController { + private static final Logger LOGGER = LoggerFactory.getLogger(PmsProductAttributeController.class); + @Autowired + private PmsProductAttributeService productAttributeService; +} diff --git a/mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java index ed8bc6d..a6c6129 100644 --- a/mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java +++ b/mall-admin/src/main/java/com/macro/mall/controller/PmsProductCategoryController.java @@ -21,7 +21,6 @@ import java.util.List; @Controller @RequestMapping("/productCategory") public class PmsProductCategoryController { - private static final Logger LOGGER = LoggerFactory.getLogger(PmsProductCategoryController.class); @Autowired private PmsProductCategoryService productCategoryService; @@ -34,10 +33,8 @@ public class PmsProductCategoryController { } int count = productCategoryService.create(pmsProductCategoryParam); if (count > 0) { - LOGGER.debug("create success {}", pmsProductCategoryParam); return new CommonResult().success(count); } else { - LOGGER.debug("create failed {}", pmsProductCategoryParam); return new CommonResult().failed(); } } @@ -54,10 +51,8 @@ public class PmsProductCategoryController { } int count = productCategoryService.update(id, pmsProductCategoryParam); if (count > 0) { - LOGGER.debug("update success {}", pmsProductCategoryParam); return new CommonResult().success(count); } else { - LOGGER.debug("update failed {}", pmsProductCategoryParam); return new CommonResult().failed(); } } @@ -78,10 +73,8 @@ public class PmsProductCategoryController { public Object delete(@PathVariable Long id) { int count = productCategoryService.delete(id); if (count > 0) { - LOGGER.debug("delete success id:{}", id); return new CommonResult().success(count); } else { - LOGGER.debug("delete failed id:{}", id); return new CommonResult().failed(); } } diff --git a/mall-admin/src/main/java/com/macro/mall/dto/CommonResult.java b/mall-admin/src/main/java/com/macro/mall/dto/CommonResult.java index f47f697..d7955d3 100644 --- a/mall-admin/src/main/java/com/macro/mall/dto/CommonResult.java +++ b/mall-admin/src/main/java/com/macro/mall/dto/CommonResult.java @@ -1,6 +1,7 @@ package com.macro.mall.dto; import com.github.pagehelper.PageInfo; +import com.macro.mall.util.JsonUtils; import org.springframework.validation.BindingResult; import java.util.HashMap; @@ -76,6 +77,11 @@ public class CommonResult { return this; } + @Override + public String toString() { + return JsonUtils.objectToJson(this); + } + public int getCode() { return code; } diff --git a/mall-admin/src/main/java/com/macro/mall/service/PmsProductAttributeService.java b/mall-admin/src/main/java/com/macro/mall/service/PmsProductAttributeService.java new file mode 100644 index 0000000..895f3ad --- /dev/null +++ b/mall-admin/src/main/java/com/macro/mall/service/PmsProductAttributeService.java @@ -0,0 +1,7 @@ +package com.macro.mall.service; + +/** + * 商品属性Service + */ +public interface PmsProductAttributeService { +} diff --git a/mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductAttributeServiceImpl.java b/mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductAttributeServiceImpl.java new file mode 100644 index 0000000..afe58be --- /dev/null +++ b/mall-admin/src/main/java/com/macro/mall/service/impl/PmsProductAttributeServiceImpl.java @@ -0,0 +1,15 @@ +package com.macro.mall.service.impl; + +import com.macro.mall.mapper.PmsProductAttributeMapper; +import com.macro.mall.service.PmsProductAttributeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 商品属性Service实现类 + */ +@Service +public class PmsProductAttributeServiceImpl implements PmsProductAttributeService{ + @Autowired + private PmsProductAttributeMapper productAttributeMapper; +} diff --git a/mall-admin/src/main/java/com/macro/mall/util/JsonUtils.java b/mall-admin/src/main/java/com/macro/mall/util/JsonUtils.java new file mode 100644 index 0000000..8b7da2d --- /dev/null +++ b/mall-admin/src/main/java/com/macro/mall/util/JsonUtils.java @@ -0,0 +1,71 @@ +package com.macro.mall.util; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.util.List; + +/** + * 淘淘商城自定义响应结构 + */ +public class JsonUtils { + + // 定义jackson对象 + private static final ObjectMapper MAPPER = new ObjectMapper(); + + /** + * 将对象转换成json字符串。 + *

Title: pojoToJson

+ *

Description:

+ * @param data + * @return + */ + public static String objectToJson(Object data) { + try { + String string = MAPPER.writeValueAsString(data); + return string; + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将json结果集转化为对象 + * + * @param jsonData json数据 + * @param beanType 对象中的object类型 + * @return + */ + public static T jsonToPojo(String jsonData, Class beanType) { + try { + T t = MAPPER.readValue(jsonData, beanType); + return t; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 将json数据转换成pojo对象list + *

Title: jsonToList

+ *

Description:

+ * @param jsonData + * @param beanType + * @return + */ + public static List jsonToList(String jsonData, Class beanType) { + JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType); + try { + List list = MAPPER.readValue(jsonData, javaType); + return list; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + +}