From 317d21981520b527d971929586505ddf0a1a1d71 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 04 一月 2024 14:27:00 +0800
Subject: [PATCH] #
---
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/mapper/ApiLogMapper.java | 12
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiLogService.java | 10
zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/controller/ApiController.java | 14
zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/WebConfig.java | 24 +
zy-asrs-common/src/main/resources/mapper/openapi/ApiLogMapper.xml | 5
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiLogServiceImpl.java | 42 +++
zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/ControllerResAdvice.java | 81 ++++++
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiService.java | 6
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/ApiLog.java | 200 +++++++++++++++
zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/AdminInterceptor.java | 70 +++++
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java | 21 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WaitPakin.java | 5
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java | 57 ++++
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/controller/ApiLogController.java | 106 ++++++++
zy-asrs-common/src/main/java/com/zy/asrs/common/utils/IpTools.java | 94 +++++++
15 files changed, 735 insertions(+), 12 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/controller/ApiLogController.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/controller/ApiLogController.java
new file mode 100644
index 0000000..4b18652
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/controller/ApiLogController.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.common.openapi.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.openapi.entity.ApiLog;
+import com.zy.asrs.common.openapi.service.ApiLogService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class ApiLogController extends BaseController {
+
+ @Autowired
+ private ApiLogService apiLogService;
+
+ @RequestMapping(value = "/apiLog/{id}/auth")
+ @ManagerAuth
+ public R get(@PathVariable("id") String id) {
+ return R.ok(apiLogService.getById(String.valueOf(id)));
+ }
+
+ @RequestMapping(value = "/apiLog/page/auth")
+ @ManagerAuth
+ public R page(@RequestParam(defaultValue = "1") Integer curr,
+ @RequestParam(defaultValue = "10") Integer limit,
+ @RequestParam(required = false) String condition,
+ @RequestParam(required = false) String timeRange,
+ @RequestParam Map<String, Object> param) {
+ LambdaQueryWrapper<ApiLog> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(ApiLog::getUuid, condition);
+ }
+ if (!Cools.isEmpty(timeRange)) {
+ String[] range = timeRange.split(RANGE_TIME_LINK);
+ wrapper.ge(ApiLog::getCreateTime, DateUtils.convert(range[0]));
+ wrapper.le(ApiLog::getCreateTime, DateUtils.convert(range[1]));
+ }
+ return R.ok(apiLogService.page(new Page<>(curr, limit), wrapper));
+ }
+
+
+ @RequestMapping(value = "/apiLog/add/auth")
+ @ManagerAuth
+ public R add(ApiLog apiLog) {
+ apiLogService.save(apiLog);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/apiLog/update/auth")
+ @ManagerAuth
+ public R update(ApiLog apiLog){
+ if (Cools.isEmpty(apiLog) || null==apiLog.getId()){
+ return R.error();
+ }
+ apiLogService.updateById(apiLog);
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/apiLog/delete/auth")
+ @ManagerAuth
+ public R delete(@RequestParam(value="ids[]") Long[] ids){
+ for (Long id : ids){
+ apiLogService.removeById(id);
+ }
+ return R.ok();
+ }
+
+ @RequestMapping(value = "/apiLogQuery/auth")
+ @ManagerAuth
+ public R query(String condition) {
+ LambdaQueryWrapper<ApiLog> wrapper = new LambdaQueryWrapper<>();
+ wrapper.like(ApiLog::getUuid, condition);
+ Page<ApiLog> page = apiLogService.page(new Page<>(0, 10), wrapper);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (ApiLog apiLog : page.getRecords()){
+ Map<String, Object> map = new HashMap<>();
+ map.put("id", apiLog.getId());
+ map.put("value", apiLog.getUuid());
+ result.add(map);
+ }
+ return R.ok(result);
+ }
+
+ @RequestMapping("/apiLog/all/get/kv")
+ @ManagerAuth
+ public R getDataKV(@RequestParam(required = false) String condition) {
+ List<KeyValueVo> vos = new ArrayList<>();
+ LambdaQueryWrapper<ApiLog> wrapper = new LambdaQueryWrapper<>();
+ if (!Cools.isEmpty(condition)) {
+ wrapper.like(ApiLog::getUuid, condition);
+ }
+ apiLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getUuid()), item.getId())));
+ return R.ok().add(vos);
+ }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/ApiLog.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/ApiLog.java
new file mode 100644
index 0000000..aa0c709
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/ApiLog.java
@@ -0,0 +1,200 @@
+package com.zy.asrs.common.openapi.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("openapi_api_log")
+public class ApiLog implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ID
+ */
+ @ApiModelProperty(value= "ID")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鏃ュ織缂栧彿
+ */
+ @ApiModelProperty(value= "鏃ュ織缂栧彿")
+ private String uuid;
+
+ /**
+ * 鍚嶇О绌洪棿
+ */
+ @ApiModelProperty(value= "鍚嶇О绌洪棿")
+ private String namespace;
+
+ /**
+ * 鎺ュ彛鍦板潃
+ */
+ @ApiModelProperty(value= "鎺ュ彛鍦板潃")
+ private String url;
+
+ /**
+ * 骞冲彴瀵嗛挜
+ */
+ @ApiModelProperty(value= "骞冲彴瀵嗛挜")
+ private String appkey;
+
+ /**
+ * 鏃堕棿鎴�
+ */
+ @ApiModelProperty(value= "鏃堕棿鎴�")
+ private String timestamp;
+
+ /**
+ * 瀹㈡埛绔疘P
+ */
+ @ApiModelProperty(value= "瀹㈡埛绔疘P")
+ private String clientIp;
+
+ /**
+ * 璇锋眰鍐呭
+ */
+ @ApiModelProperty(value= "璇锋眰鍐呭")
+ private String request;
+
+ /**
+ * 鍝嶅簲鍐呭
+ */
+ @ApiModelProperty(value= "鍝嶅簲鍐呭")
+ private String response;
+
+ /**
+ * 寮傚父鍐呭
+ */
+ @ApiModelProperty(value= "寮傚父鍐呭")
+ private String err;
+
+ /**
+ * 缁撴灉 1: 鎴愬姛 0: 澶辫触
+ */
+ @ApiModelProperty(value= "缁撴灉 1: 鎴愬姛 0: 澶辫触 ")
+ private Integer result;
+
+ /**
+ * 鐘舵�� 1: 姝e父 0: 绂佺敤
+ */
+ @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ")
+ private Integer status;
+
+ /**
+ * 娣诲姞鏃堕棿
+ */
+ @ApiModelProperty(value= "娣诲姞鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @ApiModelProperty(value= "淇敼鏃堕棿")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ private Date updateTime;
+
+ /**
+ * 澶囨敞
+ */
+ @ApiModelProperty(value= "澶囨敞")
+ private String memo;
+
+ public ApiLog() {}
+
+ public ApiLog(String uuid,String namespace,String url,String appkey,String timestamp,String clientIp,String request,String response,String err,Integer result,Integer status,Date createTime,Date updateTime,String memo) {
+ this.uuid = uuid;
+ this.namespace = namespace;
+ this.url = url;
+ this.appkey = appkey;
+ this.timestamp = timestamp;
+ this.clientIp = clientIp;
+ this.request = request;
+ this.response = response;
+ this.err = err;
+ this.result = result;
+ this.status = status;
+ this.createTime = createTime;
+ this.updateTime = updateTime;
+ this.memo = memo;
+ }
+
+// ApiLog apiLog = new ApiLog(
+// null, // 鏃ュ織缂栧彿
+// null, // 鍚嶇О绌洪棿
+// null, // 鎺ュ彛鍦板潃
+// null, // 骞冲彴瀵嗛挜
+// null, // 鏃堕棿鎴�
+// null, // 瀹㈡埛绔疘P
+// null, // 璇锋眰鍐呭
+// null, // 鍝嶅簲鍐呭
+// null, // 寮傚父鍐呭
+// null, // 缁撴灉
+// null, // 鐘舵��
+// null, // 娣诲姞鏃堕棿
+// null, // 淇敼鏃堕棿
+// null // 澶囨敞
+// );
+
+ public String getResult$(){
+ if (null == this.result){ return null; }
+ switch (this.result){
+ case 1:
+ return "鎴愬姛";
+ case 0:
+ return "澶辫触";
+ default:
+ return String.valueOf(this.result);
+ }
+ }
+
+ public String getStatus$(){
+ if (null == this.status){ return null; }
+ switch (this.status){
+ case 1:
+ return "姝e父";
+ case 0:
+ return "绂佺敤";
+ default:
+ return String.valueOf(this.status);
+ }
+ }
+
+ public String getCreateTime$(){
+ if (Cools.isEmpty(this.createTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+ }
+
+ public String getUpdateTime$(){
+ if (Cools.isEmpty(this.updateTime)){
+ return "";
+ }
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+ }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java
new file mode 100644
index 0000000..9af7847
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java
@@ -0,0 +1,57 @@
+package com.zy.asrs.common.openapi.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/28
+ */
+@Data
+public class CombParam {
+
+ // 鍗曟嵁缂栧彿
+ private String orderNo;
+
+ // 鎵樼洏鏉$爜
+ private String barcode;
+
+ // 搴撲綅缂栧彿
+ private String locno;
+
+ //缁勬墭鐗╂枡
+ private List<CombMat> combMats;
+
+ //浠撳簱ID
+ private Long hostId;
+
+ @Data
+ public static class CombMat {
+
+ //鏂欐兂鐮�
+ private String containerCode;
+
+ //閿�鍞鍗曞彿
+ private String csocode;
+
+ //閿�鍞鍗曡鍙�
+ private String isoseq;
+
+ // 鐗╂枡缂栧彿
+ private String matnr;
+
+ // 搴忓垪鐮�
+ private String batch;
+
+ // 鐗╂枡鏁伴噺
+ private Double anfme;
+
+ // 鍟嗗搧鍚嶇О
+ private String maktx;
+
+ // 瑙勬牸
+ private String specs;
+
+ }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/mapper/ApiLogMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/mapper/ApiLogMapper.java
new file mode 100644
index 0000000..2fdbe5c
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/mapper/ApiLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.openapi.mapper;
+
+import com.zy.asrs.common.openapi.entity.ApiLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ApiLogMapper extends BaseMapper<ApiLog> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiLogService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiLogService.java
new file mode 100644
index 0000000..3f603ce
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiLogService.java
@@ -0,0 +1,10 @@
+package com.zy.asrs.common.openapi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.openapi.entity.ApiLog;
+
+public interface ApiLogService extends IService<ApiLog> {
+
+ void saveLog(String namespace, String url, String appkey, String ip, String request, String response, boolean success);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiService.java
index 321e8b5..0fbe62f 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/ApiService.java
@@ -1,6 +1,10 @@
package com.zy.asrs.common.openapi.service;
+import com.zy.asrs.common.openapi.entity.param.CombParam;
import com.zy.asrs.common.openapi.entity.param.GenerateOrderPakInParam;
+import com.zy.asrs.common.wms.entity.DocType;
+
+import java.util.List;
public interface ApiService {
@@ -9,4 +13,6 @@
*/
void generateOrderPakIn(GenerateOrderPakInParam param);
+ List<DocType> getOrderType();
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiLogServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiLogServiceImpl.java
new file mode 100644
index 0000000..4be1fcb
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiLogServiceImpl.java
@@ -0,0 +1,42 @@
+package com.zy.asrs.common.openapi.service.impl;
+
+import com.zy.asrs.common.openapi.mapper.ApiLogMapper;
+import com.zy.asrs.common.openapi.entity.ApiLog;
+import com.zy.asrs.common.openapi.service.ApiLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.framework.common.SnowflakeIdWorker;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+@Service("apiLogService")
+public class ApiLogServiceImpl extends ServiceImpl<ApiLogMapper, ApiLog> implements ApiLogService {
+
+ @Autowired
+ private SnowflakeIdWorker snowflakeIdWorker;
+
+ @Override
+ public void saveLog(String namespace, String url, String appkey, String ip, String request, String response, boolean success) {
+ Date now = new Date();
+ ApiLog apiLog = new ApiLog(
+ String.valueOf(snowflakeIdWorker.nextId()), // 鏃ュ織缂栧彿
+ namespace, // 鍚嶇О绌洪棿
+ url, // 鎺ュ彛鍦板潃
+ appkey, // 骞冲彴瀵嗛挜
+ String.valueOf(now.getTime()), // 鏃堕棿鎴�
+ ip, // 瀹㈡埛绔疘P
+ request, // 璇锋眰鍐呭
+ response,
+ null, // 寮傚父鍐呭
+ success?1:0 , // 缁撴灉
+ 1, // 鐘舵��
+ now, // 娣诲姞鏃堕棿
+ null, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!this.save(apiLog)) {
+ log.error("鎺ュ彛璋冪敤鏃ュ織淇濆瓨澶辫触锛�");
+ }
+ }
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java
index f1d0c4a..730e227 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/service/impl/ApiServiceImpl.java
@@ -2,22 +2,19 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.domain.dto.DetlDto;
+import com.zy.asrs.common.openapi.entity.param.CombParam;
import com.zy.asrs.common.openapi.entity.param.GenerateOrderPakInParam;
import com.zy.asrs.common.openapi.service.ApiService;
-import com.zy.asrs.common.wms.entity.DocType;
-import com.zy.asrs.common.wms.entity.Mat;
-import com.zy.asrs.common.wms.entity.Order;
-import com.zy.asrs.common.wms.entity.OrderDetl;
-import com.zy.asrs.common.wms.service.DocTypeService;
-import com.zy.asrs.common.wms.service.MatService;
-import com.zy.asrs.common.wms.service.OrderDetlService;
-import com.zy.asrs.common.wms.service.OrderService;
+import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.service.*;
+import com.zy.asrs.framework.common.BaseRes;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.DateUtils;
import com.zy.asrs.framework.common.SnowflakeIdWorker;
import com.zy.asrs.framework.exception.CoolException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
@@ -36,6 +33,8 @@
private MatService matService;
@Autowired
private OrderDetlService orderDetlService;
+ @Autowired
+ private WaitPakinService waitPakinService;
@Override
public void generateOrderPakIn(GenerateOrderPakInParam param) {
@@ -124,4 +123,10 @@
}
}
}
+
+ @Override
+ public List<DocType> getOrderType() {
+ List<DocType> list = docTypeService.list();
+ return list;
+ }
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/IpTools.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/IpTools.java
new file mode 100644
index 0000000..f1b3ea7
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/utils/IpTools.java
@@ -0,0 +1,94 @@
+package com.zy.asrs.common.utils;
+
+import com.zy.asrs.framework.common.Cools;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.util.Enumeration;
+
+/**
+ * Created by vincent on 2020/8/6
+ */
+@Slf4j
+public class IpTools {
+
+ public static String gainRealIp(HttpServletRequest request) {
+ String ipAddress = "";
+ try {
+ if (request == null) {
+ return ipAddress;
+ }
+
+ //鎺掗櫎鏈湴娴嬭瘯
+ if ("127.0.0.1".equals(request.getServerName()) || "localhost".equals(request.getServerName())) {
+ ipAddress = "127.0.0.1";
+ return ipAddress;
+ }
+
+ ipAddress = request.getRemoteAddr();
+ if (Cools.isEmpty(ipAddress)) {
+ ipAddress = request.getRemoteHost();
+ } else {
+ return ipAddress;
+ }
+
+ if (!Cools.isEmpty(ipAddress)) {
+ return ipAddress;
+ }
+
+ // 鑾峰彇鐪熷疄ip,鎺掗櫎浠g悊ip
+ ipAddress = request.getHeader("Referer");
+
+ // ipAddress = this.getRequest().getRemoteAddr();
+ ipAddress = request.getHeader("X-Forwarded-For");
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ ipAddress = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
+ // 鏇存崲niginx浠g悊
+ // ipAddress = request.getRemoteAddr();
+ ipAddress = request.getHeader("X-Real-IP");
+ if (ipAddress != null && (ipAddress.equals("" + "") || ipAddress.endsWith("0:0:0:0:0:0:0:1"))) {
+ // 鏍规嵁缃戝崱鍙栨湰鏈洪厤缃殑IP
+
+ // linux涓嬩篃鍙互鑾峰彇鏈湴鐨刬p鍦板潃
+ Enumeration<?> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
+ InetAddress ip;
+ while (allNetInterfaces.hasMoreElements()) {
+ NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
+ Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
+ while (addresses.hasMoreElements()) {
+ ip = addresses.nextElement();
+ if (ip instanceof Inet4Address) {
+ // 鑾峰彇鐪熷疄鐨処p鍦板潃
+ ipAddress = ip.getHostAddress();
+
+ }
+ }
+ }
+
+ }
+
+ }
+ // 瀵逛簬閫氳繃澶氫釜浠g悊鐨勬儏鍐碉紝绗竴涓狪P涓哄鎴风鐪熷疄IP,澶氫釜IP鎸夌収','鍒嗗壊"***.***.***.***".length()=15
+ if (ipAddress != null && ipAddress.length() > 15) {
+
+ if (ipAddress.indexOf(",") > 0) {
+ ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
+ }
+ }
+
+ } catch (Exception e) {
+ log.warn("ip{},瑙f瀽寮傚父", ipAddress, e);
+ }
+ return ipAddress;
+
+ }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WaitPakin.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WaitPakin.java
index bdc5ed7..461b5f8 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WaitPakin.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WaitPakin.java
@@ -2,6 +2,8 @@
import java.text.SimpleDateFormat;
import java.util.Date;
+
+import com.zy.asrs.common.utils.Synchro;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -426,5 +428,8 @@
return null;
}
+ public void sync(Object source) {
+ Synchro.Copy(source, this);
+ }
}
diff --git a/zy-asrs-common/src/main/resources/mapper/openapi/ApiLogMapper.xml b/zy-asrs-common/src/main/resources/mapper/openapi/ApiLogMapper.xml
new file mode 100644
index 0000000..4baba72
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/openapi/ApiLogMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.openapi.mapper.ApiLogMapper">
+
+</mapper>
diff --git a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/AdminInterceptor.java b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/AdminInterceptor.java
new file mode 100644
index 0000000..7977294
--- /dev/null
+++ b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/AdminInterceptor.java
@@ -0,0 +1,70 @@
+package com.zy.asrs.openapi.config;
+
+import com.zy.asrs.common.sys.entity.OperateLog;
+import com.zy.asrs.common.sys.service.OperateLogService;
+import com.zy.asrs.framework.annotations.AppAuth;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.lang.Nullable;
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.lang.reflect.Method;
+
+@Component
+public class AdminInterceptor extends HandlerInterceptorAdapter {
+
+ @Autowired
+ private OperateLogService operateLogService;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+ cors(response);
+ if (handler instanceof org.springframework.web.servlet.resource.ResourceHttpRequestHandler) {
+ return true;
+ }
+ // 璺ㄥ煙璁剧疆
+ // response.setHeader("Access-Control-Allow-Origin", "*");
+ HandlerMethod handlerMethod = (HandlerMethod) handler;
+ Method method = handlerMethod.getMethod();
+ if (method.isAnnotationPresent(AppAuth.class)){
+ AppAuth annotation = method.getAnnotation(AppAuth.class);
+ if (annotation.value().equals(AppAuth.Auth.CHECK)){
+ request.setAttribute("appAuth", annotation.memo());
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) {
+ Object obj = request.getAttribute("operateLog");
+ if (obj instanceof OperateLog) {
+ OperateLog operate = (OperateLog) obj;
+ operate.setResponse(String.valueOf(response.getStatus()));
+ operateLogService.save(operate);
+ }
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
+// Object r = request.getAttribute("cool-response");
+ }
+
+ /**
+ * 璺ㄥ煙
+ */
+ public static void cors(HttpServletResponse response){
+ // 璺ㄥ煙璁剧疆
+ response.setHeader("Access-Control-Allow-Origin", "*");
+ response.setHeader("Access-Control-Allow-Credentials", "true");
+ response.setHeader("Access-Control-Allow-Methods", "*");
+ response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Token");
+ response.setHeader("Access-Control-Expose-Headers", "*");
+
+ }
+
+}
diff --git a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/ControllerResAdvice.java b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/ControllerResAdvice.java
new file mode 100644
index 0000000..a2a6e28
--- /dev/null
+++ b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/ControllerResAdvice.java
@@ -0,0 +1,81 @@
+package com.zy.asrs.openapi.config;
+
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.common.openapi.service.ApiLogService;
+import com.zy.asrs.common.utils.IpTools;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.MethodParameter;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.server.ServerHttpRequest;
+import org.springframework.http.server.ServerHttpResponse;
+import org.springframework.http.server.ServletServerHttpRequest;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 杩斿洖鍊煎鐞�
+ */
+@Slf4j
+@ControllerAdvice
+public class ControllerResAdvice implements ResponseBodyAdvice<Object> {
+
+ @Autowired
+ private ApiLogService apiLogService;
+
+ @Override
+ public boolean supports(MethodParameter methodParameter, Class<? extends HttpMessageConverter<?>> aClass) {
+ return true;
+ }
+
+ @Override
+ public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
+ if (serverHttpRequest instanceof ServletServerHttpRequest) {
+ HttpServletRequest request = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();
+ Object appAuth = request.getAttribute("appAuth");
+ if (appAuth != null) {
+ if (o instanceof R) {
+ String appkey = request.getHeader("appkey");
+ Object reqCache = request.getAttribute("cache");
+ if (!Cools.isEmpty(appkey)) {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.saveLog(
+ String.valueOf(appAuth),
+ request.getRequestURI(),
+ appkey,
+ IpTools.gainRealIp(request),
+ reqCache==null?"": JSON.toJSONString(reqCache),
+ JSON.toJSONString(o),
+ String.valueOf(((R) o).get("code")).equalsIgnoreCase("200")
+ );
+ }
+ }
+ }
+ }
+ return o;
+ }
+
+ public static String json(HttpServletRequest request) {
+ try {
+ BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), StandardCharsets.UTF_8));
+ StringBuilder sb = new StringBuilder();
+ String inputStr;
+ while ((inputStr = streamReader.readLine()) != null) {
+ sb.append(inputStr);
+ }
+ return sb.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "";
+ }
+ }
+
+}
diff --git a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/WebConfig.java b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/WebConfig.java
new file mode 100644
index 0000000..f11da11
--- /dev/null
+++ b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/config/WebConfig.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.openapi.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * Created by vincent on 2019-06-13
+ */
+@Configuration
+public class WebConfig implements WebMvcConfigurer {
+
+ @Autowired
+ private AdminInterceptor adminInterceptor;
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(adminInterceptor)
+ .addPathPatterns("/**")
+ ;
+ }
+
+}
diff --git a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/controller/ApiController.java b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/controller/ApiController.java
index 20815d3..944eed3 100644
--- a/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/controller/ApiController.java
+++ b/zy-asrs-openapi/src/main/java/com/zy/asrs/openapi/controller/ApiController.java
@@ -9,7 +9,7 @@
import com.zy.asrs.common.openapi.service.HostKeyService;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.entity.DocType;
-import com.zy.asrs.common.wms.service.DocTypeService;
+import com.zy.asrs.framework.annotations.AppAuth;
import com.zy.asrs.framework.common.BaseRes;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
@@ -30,11 +30,13 @@
@Autowired
private HostKeyService hostKeyService;
@Autowired
- private DocTypeService docTypeService;
- @Autowired
private ApiService apiService;
+ /**
+ * 鐢熸垚鍏ュ簱璁㈠崟
+ */
@PostMapping("/generateOrderPakIn")
+ @AppAuth(memo = "鐢熸垚鍏ュ簱璁㈠崟")
public synchronized R generateOrderPakIn(@RequestHeader(required = false) String appkey,
@RequestBody GenerateOrderPakInParam param) {
HostKey hostKey = auth(appkey, param, true);
@@ -55,14 +57,18 @@
return R.ok();
}
+ /**
+ * 鑾峰彇璁㈠崟绫诲瀷
+ */
@PostMapping("/getOrderType")
public synchronized R getOrderType(@RequestHeader(required = false) String appkey) {
auth(appkey, null, false);
- List<DocType> list = docTypeService.list();
+ List<DocType> list = apiService.getOrderType();
return R.ok().add(list);
}
private HostKey auth(String appkey, Object obj, boolean signCheck) {
+ request.setAttribute("cache", obj);
if (Cools.isEmpty(appkey)) {
throw new CoolException("璁よ瘉澶辫触锛岃纭appKey鏃犺锛�");
}
--
Gitblit v1.9.1