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