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;
+ }
+
+}