Administrator před 3 roky
rodič
revize
e822c73005

+ 3 - 1
leiSP-admin/src/main/java/com/sooka/web/controller/system/SysLoginController.java

@@ -17,7 +17,7 @@ import com.sooka.common.utils.StringUtils;
 
 /**
  * 登录验证
- * 
+ *
  * @author lei_wang
  */
 @Controller
@@ -43,6 +43,8 @@ public class SysLoginController extends BaseController
         Subject subject = SecurityUtils.getSubject();
         try
         {
+            String loginname = token.getUsername();
+            getSession().setAttribute("loginusername",loginname);
             subject.login(token);
             return success();
         }

+ 7 - 1
leiSP-common/pom.xml

@@ -95,6 +95,12 @@
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.4</version>
+        </dependency>
+
     </dependencies>
 
-</project>
+</project>

+ 2 - 0
mybusiness/pom.xml

@@ -33,6 +33,8 @@
 			<artifactId>leisp-admin</artifactId>
 		</dependency>
 
+
+
 	</dependencies>
 
 </project>

+ 22 - 19
mybusiness/src/main/java/com/sooka/system/controller/TUSfzController.java

@@ -8,8 +8,10 @@ import com.sooka.common.core.domain.AjaxResult;
 import com.sooka.common.core.page.TableDataInfo;
 import com.sooka.common.enums.BusinessType;
 import com.sooka.common.utils.poi.ExcelUtil;
+import com.util.HttpUtil;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpRequest;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -21,6 +23,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import com.sooka.system.domain.TUSfz;
 import com.sooka.system.service.ITUSfzService;
 
+import javax.servlet.http.HttpServletRequest;
+
 
 /**
  * 身份证Controller
@@ -30,8 +34,7 @@ import com.sooka.system.service.ITUSfzService;
  */
 @Controller
 @RequestMapping("/system/sfz")
-public class TUSfzController extends BaseController
-{
+public class TUSfzController extends BaseController {
     private String prefix = "system/sfz";
 
     @Autowired
@@ -39,8 +42,7 @@ public class TUSfzController extends BaseController
 
     @RequiresPermissions("system:sfz:view")
     @GetMapping()
-    public String sfz()
-    {
+    public String sfz() {
         return prefix + "/sfz";
     }
 
@@ -50,9 +52,16 @@ public class TUSfzController extends BaseController
     @RequiresPermissions("system:sfz:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(TUSfz tUSfz)
-    {
+    public TableDataInfo list(TUSfz tUSfz, HttpServletRequest request) {
         startPage();
+
+        String osAndBrowser[] = HttpUtil.getOsAndBrowserInfo(request).split("---");
+        String os = osAndBrowser[0];
+        String browser = osAndBrowser[1];
+        String ipaddress = HttpUtil.getIPAddress(request);
+        tUSfz.setBrowser(browser);
+        tUSfz.setOs(os);
+        tUSfz.setIpaddress(ipaddress);
         List<TUSfz> list = tUSfzService.selectTUSfzList(tUSfz);
         return getDataTable(list);
     }
@@ -64,8 +73,7 @@ public class TUSfzController extends BaseController
     @Log(title = "身份证", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(TUSfz tUSfz)
-    {
+    public AjaxResult export(TUSfz tUSfz) {
         List<TUSfz> list = tUSfzService.selectTUSfzList(tUSfz);
         ExcelUtil<TUSfz> util = new ExcelUtil<TUSfz>(TUSfz.class);
         return util.exportExcel(list, "sfz");
@@ -75,8 +83,7 @@ public class TUSfzController extends BaseController
      * 新增身份证
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -87,8 +94,7 @@ public class TUSfzController extends BaseController
     @Log(title = "身份证", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(TUSfz tUSfz)
-    {
+    public AjaxResult addSave(TUSfz tUSfz) {
         return toAjax(tUSfzService.insertTUSfz(tUSfz));
     }
 
@@ -96,8 +102,7 @@ public class TUSfzController extends BaseController
      * 修改身份证
      */
     @GetMapping("/edit/{id}")
-    public String edit(@PathVariable("id") String id, ModelMap mmap)
-    {
+    public String edit(@PathVariable("id") String id, ModelMap mmap) {
         TUSfz tUSfz = tUSfzService.selectTUSfzById(id);
         mmap.put("tUSfz", tUSfz);
         return prefix + "/edit";
@@ -110,8 +115,7 @@ public class TUSfzController extends BaseController
     @Log(title = "身份证", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(TUSfz tUSfz)
-    {
+    public AjaxResult editSave(TUSfz tUSfz) {
         return toAjax(tUSfzService.updateTUSfz(tUSfz));
     }
 
@@ -120,10 +124,9 @@ public class TUSfzController extends BaseController
      */
     @RequiresPermissions("system:sfz:remove")
     @Log(title = "身份证", businessType = BusinessType.DELETE)
-    @PostMapping( "/remove")
+    @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         return toAjax(tUSfzService.deleteTUSfzByIds(ids));
     }
 }

+ 16 - 0
mybusiness/src/main/java/com/sooka/system/domain/BaseBusinessEntity.java

@@ -0,0 +1,16 @@
+package com.sooka.system.domain;
+
+import com.sooka.common.core.domain.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class BaseBusinessEntity extends BaseEntity {
+
+    private String browser;
+    private String ipaddress;
+    private String os;
+
+
+}

+ 1 - 1
mybusiness/src/main/java/com/sooka/system/domain/TUSfz.java

@@ -12,7 +12,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
  * @author lei
  * @date 2021-07-06
  */
-public class TUSfz extends BaseEntity
+public class TUSfz extends BaseBusinessEntity
 {
     private static final long serialVersionUID = 1L;
 

+ 31 - 0
mybusiness/src/main/java/com/sooka/system/service/impl/TUSfzServiceImpl.java

@@ -11,13 +11,20 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONPObject;
 import com.sooka.common.core.text.Convert;
 import com.sooka.common.utils.DateUtils;
+import com.sooka.common.utils.uuid.UUID;
+import com.sooka.system.domain.SysUser;
+import com.sooka.system.domain.TULog;
+import com.sooka.system.mapper.TULogMapper;
 import com.util.HttpUtil;
+import com.util.UserInfoUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.sooka.system.mapper.TUSfzMapper;
 import com.sooka.system.domain.TUSfz;
 import com.sooka.system.service.ITUSfzService;
 
+import javax.annotation.Resource;
+
 
 /**
  * 身份证Service业务层处理
@@ -30,6 +37,12 @@ public class TUSfzServiceImpl implements ITUSfzService {
     @Autowired
     private TUSfzMapper tUSfzMapper;
 
+    @Resource
+    private TULogMapper tuLogMapper;
+
+    @Resource
+    private UserInfoUtil userInfoUtil;
+
     /**
      * 查询身份证
      *
@@ -70,6 +83,24 @@ public class TUSfzServiceImpl implements ITUSfzService {
             tUSfz.setPhotograph(obj.getString("photograph"));
             ls.add(tUSfz);
         }
+        //添加操作日志
+        SysUser sysUser = userInfoUtil.getLoginUserInfo();
+        //
+        TULog tuLog = new TULog();
+        tuLog.setId(UUID.fastUUID().toString());
+        tuLog.setBrowser(tUSfz.getBrowser());
+        tuLog.setInterfaceinfoId("1294c112-d5d9-48e2-a794-f1e8453e6516");
+        tuLog.setInterfaceinfoName("吉林省-人口基础信息-数据查询接口");
+        tuLog.setIpaddress(tUSfz.getIpaddress());
+        tuLog.setLoginUser(sysUser.getUserId());
+        tuLog.setLoginName(sysUser.getUserName());
+        tuLog.setOperationQuantity(new Long(ls.size()));
+        tuLog.setOs(tUSfz.getOs());
+        tuLog.setBrowser(tUSfz.getBrowser());
+        //共享接口
+        tuLog.setPlatformInterfacetype("platform_interfacetype_1");
+        tuLogMapper.insertTULog(tuLog);
+
         return ls;
 
 //        return tUSfzMapper.selectTUSfzList(tUSfz);

+ 38 - 0
mybusiness/src/main/java/com/util/HttpUtil.java

@@ -199,6 +199,44 @@ public class HttpUtil {
 		return os + " --- " + browser;
 	}
 
+	public static String getIPAddress(HttpServletRequest request) {
+		String ip = null;
+
+		//X-Forwarded-For:Squid 服务代理
+		String ipAddresses = request.getHeader("X-Forwarded-For");
+
+		if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+			//Proxy-Client-IP:apache 服务代理
+			ipAddresses = request.getHeader("Proxy-Client-IP");
+		}
+
+		if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+			//WL-Proxy-Client-IP:weblogic 服务代理
+			ipAddresses = request.getHeader("WL-Proxy-Client-IP");
+		}
+
+		if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+			//HTTP_CLIENT_IP:有些代理服务器
+			ipAddresses = request.getHeader("HTTP_CLIENT_IP");
+		}
+
+		if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+			//X-Real-IP:nginx服务代理
+			ipAddresses = request.getHeader("X-Real-IP");
+		}
+
+		//有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP
+		if (ipAddresses != null && ipAddresses.length() != 0) {
+			ip = ipAddresses.split(",")[0];
+		}
+
+		//还是不能获取到,最后再通过request.getRemoteAddr();获取
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
+			ip = request.getRemoteAddr();
+		}
+		return ip;
+	}
+
 	public static void main(String[] args) {
 		Map map = new HashMap();
 		map.put("accessId","1625205696412");

+ 31 - 0
mybusiness/src/main/java/com/util/UserInfoUtil.java

@@ -0,0 +1,31 @@
+package com.util;
+
+import com.sooka.common.core.controller.BaseController;
+import com.sooka.system.domain.SysUser;
+import com.sooka.system.service.ISysUserService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+
+/**
+ *  用户信息工具
+ */
+@Component
+public class UserInfoUtil extends BaseController {
+
+    @Resource
+    ISysUserService iSysUserService;
+
+    /**
+     * 获取PC端需要的登陆用户信息
+     */
+
+    public  SysUser getLoginUserInfo(){
+        String username = getSession().getAttribute("loginusername").toString();
+        SysUser user =  iSysUserService.selectUserByLoginName(username);
+        return user;
+
+
+    }
+}

+ 119 - 111
mybusiness/src/main/resources/templates/system/log/log.html

@@ -1,118 +1,122 @@
 <!DOCTYPE html>
 <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head>
-    <th:block th:include="include :: header('接口调用日志列表')" />
+    <th:block th:include="include :: header('接口调用日志列表')"/>
 </head>
 <body class="gray-bg">
-     <div class="container-div">
-        <div class="row">
-            <div class="col-sm-12 search-collapse">
-                <form id="formId">
-                    <div class="select-list">
-                        <ul>
-                            <!--<li>-->
-                                <!--<label>状态:</label>-->
-                                <!--<select name="status">-->
-                                    <!--<option value="">所有</option>-->
-                                    <!--<option value="-1">代码生成请选择字典属性</option>-->
-                                <!--</select>-->
-                            <!--</li>-->
-                            <li>
-                                <label>登录人:</label>
-                                <input type="text" name="loginUser"/>
-                            </li>
-                            <li>
-                                <label>登录名:</label>
-                                <input type="text" name="loginName"/>
-                            </li>
-                            <!--<li>-->
-                                <!--<label>调用接口id:</label>-->
-                                <!--<input type="text" name="interfaceinfoId"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>调用接口名:</label>-->
-                                <!--<input type="text" name="interfaceinfoName"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>ip地址:</label>-->
-                                <!--<input type="text" name="ipaddress"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>操作系统:</label>-->
-                                <!--<input type="text" name="os"/>-->
-                            <!--</li>-->
-                            <li>
-                                <label>平台接口类型:</label>
-                                <select name="platformInterfacetype" th:with="type=${@dict.getType('platform_interfacetype')}">
-                                    <option value="">所有</option>
-                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
-                                </select>
-                            </li>
-                            <!--<li>-->
-                                <!--<label>访问浏览器:</label>-->
-                                <!--<input type="text" name="browser"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>参数条件:</label>-->
-                                <!--<input type="text" name="param"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>返回结果:</label>-->
-                                <!--<input type="text" name="results"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>操作数量:</label>-->
-                                <!--<input type="text" name="operationQuantity"/>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>操作状态:</label>-->
-                                <!--<select name="operationStatus">-->
-                                    <!--<option value="">所有</option>-->
-                                    <!--<option value="-1">代码生成请选择字典属性</option>-->
-                                <!--</select>-->
-                            <!--</li>-->
-                            <!--<li>-->
-                                <!--<label>异常记录:</label>-->
-                                <!--<input type="text" name="exceptionLog"/>-->
-                            <!--</li>-->
-                            <li>
-                                <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
-                                <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
-                            </li>
-                        </ul>
-                    </div>
-                </form>
-            </div>
+<div class="container-div">
+    <div class="row">
+        <div class="col-sm-12 search-collapse">
+            <form id="formId">
+                <div class="select-list">
+                    <ul>
+                        <!--<li>-->
+                        <!--<label>状态:</label>-->
+                        <!--<select name="status">-->
+                        <!--<option value="">所有</option>-->
+                        <!--<option value="-1">代码生成请选择字典属性</option>-->
+                        <!--</select>-->
+                        <!--</li>-->
+                        <li>
+                            <label>登录人:</label>
+                            <input type="text" name="loginUser"/>
+                        </li>
+                        <li>
+                            <label>登录名:</label>
+                            <input type="text" name="loginName"/>
+                        </li>
+                        <!--<li>-->
+                        <!--<label>调用接口id:</label>-->
+                        <!--<input type="text" name="interfaceinfoId"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>调用接口名:</label>-->
+                        <!--<input type="text" name="interfaceinfoName"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>ip地址:</label>-->
+                        <!--<input type="text" name="ipaddress"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>操作系统:</label>-->
+                        <!--<input type="text" name="os"/>-->
+                        <!--</li>-->
+                        <li>
+                            <label>平台接口类型:</label>
+                            <select name="platformInterfacetype"
+                                    th:with="type=${@dict.getType('platform_interfacetype')}">
+                                <option value="">所有</option>
+                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}"
+                                        th:value="${dict.dictValue}"></option>
+                            </select>
+                        </li>
+                        <!--<li>-->
+                        <!--<label>访问浏览器:</label>-->
+                        <!--<input type="text" name="browser"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>参数条件:</label>-->
+                        <!--<input type="text" name="param"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>返回结果:</label>-->
+                        <!--<input type="text" name="results"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>操作数量:</label>-->
+                        <!--<input type="text" name="operationQuantity"/>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>操作状态:</label>-->
+                        <!--<select name="operationStatus">-->
+                        <!--<option value="">所有</option>-->
+                        <!--<option value="-1">代码生成请选择字典属性</option>-->
+                        <!--</select>-->
+                        <!--</li>-->
+                        <!--<li>-->
+                        <!--<label>异常记录:</label>-->
+                        <!--<input type="text" name="exceptionLog"/>-->
+                        <!--</li>-->
+                        <li>
+                            <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
+                                    class="fa fa-search"></i>&nbsp;搜索</a>
+                            <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i
+                                    class="fa fa-refresh"></i>&nbsp;重置</a>
+                        </li>
+                    </ul>
+                </div>
+            </form>
+        </div>
 
-            <div class="btn-group-sm" id="toolbar" role="group">
-                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:log:export">
-                    <i class="fa fa-download"></i> 导出
-                </a>
-            </div>
-            <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table"></table>
-            </div>
+        <div class="btn-group-sm" id="toolbar" role="group">
+            <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:log:export">
+                <i class="fa fa-download"></i> 导出
+            </a>
+        </div>
+        <div class="col-sm-12 select-table table-striped">
+            <table id="bootstrap-table"></table>
         </div>
     </div>
-    <th:block th:include="include :: footer" />
-    <script th:inline="javascript">
-        var editFlag = [[${@permission.hasPermi('system:log:edit')}]];
-        var removeFlag = [[${@permission.hasPermi('system:log:remove')}]];
-        var prefix = ctx + "system/log";
+</div>
+<th:block th:include="include :: footer"/>
+<script th:inline="javascript">
+    var editFlag = [[${@permission.hasPermi('system:log:edit')}]];
+    var removeFlag = [[${@permission.hasPermi('system:log:remove')}]];
+    var prefix = ctx + "system/log";
 
-        var platform_interfacetype_datas = [[${@dict.getType('platform_interfacetype')}]];
+    var platform_interfacetype_datas = [[${@dict.getType('platform_interfacetype')}]];
 
-        $(function() {
-            var options = {
-                url: prefix + "/list",
-                createUrl: prefix + "/add",
-                updateUrl: prefix + "/edit/{id}",
-                removeUrl: prefix + "/remove",
-                exportUrl: prefix + "/export",
-                modalName: "接口调用日志",
-                columns: [{
-                    checkbox: true
-                },
+    $(function () {
+        var options = {
+            url: prefix + "/list",
+            createUrl: prefix + "/add",
+            updateUrl: prefix + "/edit/{id}",
+            removeUrl: prefix + "/remove",
+            exportUrl: prefix + "/export",
+            modalName: "接口调用日志",
+            columns: [{
+                checkbox: true
+            },
                 {
                     field: 'id',
                     title: '主键ID',
@@ -137,6 +141,10 @@
                     title: '登录名'
                 },
                 {
+                    field: 'createTime',
+                    title: '调用时间'
+                },
+                {
                     field: 'interfaceinfoId',
                     title: '调用接口id',
                     visible: false
@@ -156,7 +164,7 @@
                 {
                     field: 'platformInterfacetype',
                     title: '平台接口类型',
-                    formatter: function(value, item, index) {
+                    formatter: function (value, item, index) {
                         return $.table.selectDictLabel(platform_interfacetype_datas, item.platformInterfacetype);
                     }
                 },
@@ -198,10 +206,10 @@
                 //         return actions.join('');
                 //     }
                 // }
-                ]
-            };
-            $.table.init(options);
-        });
-    </script>
+            ]
+        };
+        $.table.init(options);
+    });
+</script>
 </body>
 </html>

+ 11 - 2
mybusiness/src/main/resources/templates/system/sfz/sfz.html

@@ -123,14 +123,23 @@
                     align: 'center',
                     formatter: function(value, row, index) {
                         var actions = [];
-                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
-                        actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
+                        actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="detail(\'' + row + '\')"><i class="fa fa-edit"></i>详情</a> ');
                         return actions.join('');
                     }
                 }]
             };
             $.table.init(options);
         });
+
+
+        function detail(row) {
+            console.log(row)
+            var url = prefix + (id.length==0?"/addParamsbusiness/":"/add/") +row.id;
+            console.log(url)
+            $.modal.open("身份证详情", url);
+        }
+
+
     </script>
 </body>
 </html>