Administrator před 3 roky
rodič
revize
43e13d2814
21 změnil soubory, kde provedl 2444 přidání a 10 odebrání
  1. 8 8
      leiSP-framework/src/main/java/com/sooka/framework/shiro/service/SysLoginService.java
  2. 2 2
      leiSP-framework/src/main/java/com/sooka/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java
  3. 129 0
      mybusiness/src/main/java/com/sooka/system/controller/TULogController.java
  4. 129 0
      mybusiness/src/main/java/com/sooka/system/controller/TUSfzController.java
  5. 252 0
      mybusiness/src/main/java/com/sooka/system/domain/TULog.java
  6. 196 0
      mybusiness/src/main/java/com/sooka/system/domain/TUSfz.java
  7. 61 0
      mybusiness/src/main/java/com/sooka/system/mapper/TULogMapper.java
  8. 61 0
      mybusiness/src/main/java/com/sooka/system/mapper/TUSfzMapper.java
  9. 61 0
      mybusiness/src/main/java/com/sooka/system/service/ITULogService.java
  10. 61 0
      mybusiness/src/main/java/com/sooka/system/service/ITUSfzService.java
  11. 99 0
      mybusiness/src/main/java/com/sooka/system/service/impl/TULogServiceImpl.java
  12. 123 0
      mybusiness/src/main/java/com/sooka/system/service/impl/TUSfzServiceImpl.java
  13. 211 0
      mybusiness/src/main/java/com/util/HttpUtil.java
  14. 148 0
      mybusiness/src/main/resources/mapper/system/TULogMapper.xml
  15. 128 0
      mybusiness/src/main/resources/mapper/system/TUSfzMapper.xml
  16. 126 0
      mybusiness/src/main/resources/templates/system/log/add.html
  17. 121 0
      mybusiness/src/main/resources/templates/system/log/edit.html
  18. 207 0
      mybusiness/src/main/resources/templates/system/log/log.html
  19. 95 0
      mybusiness/src/main/resources/templates/system/sfz/add.html
  20. 90 0
      mybusiness/src/main/resources/templates/system/sfz/edit.html
  21. 136 0
      mybusiness/src/main/resources/templates/system/sfz/sfz.html

+ 8 - 8
leiSP-framework/src/main/java/com/sooka/framework/shiro/service/SysLoginService.java

@@ -23,7 +23,7 @@ import com.sooka.system.service.ISysUserService;
 
 /**
  * 登录校验方法
- * 
+ *
  * @author lei_wang
  */
 @Component
@@ -41,11 +41,11 @@ public class SysLoginService
     public SysUser login(String username, String password)
     {
         // 验证码校验
-        if (!StringUtils.isEmpty(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA)))
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
-            throw new CaptchaException();
-        }
+//        if (!StringUtils.isEmpty(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA)))
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+//            throw new CaptchaException();
+//        }
         // 用户名或密码为空 错误
         if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
         {
@@ -86,13 +86,13 @@ public class SysLoginService
             AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.not.exists")));
             throw new UserNotExistsException();
         }
-        
+
         if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
         {
             AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.delete")));
             throw new UserDeleteException();
         }
-        
+
         if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
         {
             AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRemark())));

+ 2 - 2
leiSP-framework/src/main/java/com/sooka/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java

@@ -12,7 +12,7 @@ import com.sooka.common.utils.StringUtils;
 
 /**
  * 验证码过滤器
- * 
+ *
  * @author lei_wang
  */
 public class CaptchaValidateFilter extends AccessControlFilter
@@ -20,7 +20,7 @@ public class CaptchaValidateFilter extends AccessControlFilter
     /**
      * 是否开启验证码
      */
-    private boolean captchaEnabled = true;
+    private boolean captchaEnabled = false;
 
     /**
      * 验证码类型

+ 129 - 0
mybusiness/src/main/java/com/sooka/system/controller/TULogController.java

@@ -0,0 +1,129 @@
+package com.sooka.system.controller;
+
+import java.util.List;
+
+import com.sooka.common.annotation.Log;
+import com.sooka.common.core.controller.BaseController;
+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 org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.sooka.system.domain.TULog;
+import com.sooka.system.service.ITULogService;
+
+
+/**
+ * 接口调用日志Controller
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+@Controller
+@RequestMapping("/system/log")
+public class TULogController extends BaseController
+{
+    private String prefix = "system/log";
+
+    @Autowired
+    private ITULogService tULogService;
+
+    @RequiresPermissions("system:log:view")
+    @GetMapping()
+    public String log()
+    {
+        return prefix + "/log";
+    }
+
+    /**
+     * 查询接口调用日志列表
+     */
+    @RequiresPermissions("system:log:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(TULog tULog)
+    {
+        startPage();
+        List<TULog> list = tULogService.selectTULogList(tULog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出接口调用日志列表
+     */
+    @RequiresPermissions("system:log:export")
+    @Log(title = "接口调用日志", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(TULog tULog)
+    {
+        List<TULog> list = tULogService.selectTULogList(tULog);
+        ExcelUtil<TULog> util = new ExcelUtil<TULog>(TULog.class);
+        return util.exportExcel(list, "log");
+    }
+
+    /**
+     * 新增接口调用日志
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存接口调用日志
+     */
+    @RequiresPermissions("system:log:add")
+    @Log(title = "接口调用日志", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(TULog tULog)
+    {
+        return toAjax(tULogService.insertTULog(tULog));
+    }
+
+    /**
+     * 修改接口调用日志
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") String id, ModelMap mmap)
+    {
+        TULog tULog = tULogService.selectTULogById(id);
+        mmap.put("tULog", tULog);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存接口调用日志
+     */
+    @RequiresPermissions("system:log:edit")
+    @Log(title = "接口调用日志", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(TULog tULog)
+    {
+        return toAjax(tULogService.updateTULog(tULog));
+    }
+
+    /**
+     * 删除接口调用日志
+     */
+    @RequiresPermissions("system:log:remove")
+    @Log(title = "接口调用日志", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(tULogService.deleteTULogByIds(ids));
+    }
+}

+ 129 - 0
mybusiness/src/main/java/com/sooka/system/controller/TUSfzController.java

@@ -0,0 +1,129 @@
+package com.sooka.system.controller;
+
+import java.util.List;
+
+import com.sooka.common.annotation.Log;
+import com.sooka.common.core.controller.BaseController;
+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 org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import com.sooka.system.domain.TUSfz;
+import com.sooka.system.service.ITUSfzService;
+
+
+/**
+ * 身份证Controller
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+@Controller
+@RequestMapping("/system/sfz")
+public class TUSfzController extends BaseController
+{
+    private String prefix = "system/sfz";
+
+    @Autowired
+    private ITUSfzService tUSfzService;
+
+    @RequiresPermissions("system:sfz:view")
+    @GetMapping()
+    public String sfz()
+    {
+        return prefix + "/sfz";
+    }
+
+    /**
+     * 查询身份证列表
+     */
+    @RequiresPermissions("system:sfz:list")
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(TUSfz tUSfz)
+    {
+        startPage();
+        List<TUSfz> list = tUSfzService.selectTUSfzList(tUSfz);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出身份证列表
+     */
+    @RequiresPermissions("system:sfz:export")
+    @Log(title = "身份证", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ResponseBody
+    public AjaxResult export(TUSfz tUSfz)
+    {
+        List<TUSfz> list = tUSfzService.selectTUSfzList(tUSfz);
+        ExcelUtil<TUSfz> util = new ExcelUtil<TUSfz>(TUSfz.class);
+        return util.exportExcel(list, "sfz");
+    }
+
+    /**
+     * 新增身份证
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存身份证
+     */
+    @RequiresPermissions("system:sfz:add")
+    @Log(title = "身份证", businessType = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(TUSfz tUSfz)
+    {
+        return toAjax(tUSfzService.insertTUSfz(tUSfz));
+    }
+
+    /**
+     * 修改身份证
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") String id, ModelMap mmap)
+    {
+        TUSfz tUSfz = tUSfzService.selectTUSfzById(id);
+        mmap.put("tUSfz", tUSfz);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存身份证
+     */
+    @RequiresPermissions("system:sfz:edit")
+    @Log(title = "身份证", businessType = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(TUSfz tUSfz)
+    {
+        return toAjax(tUSfzService.updateTUSfz(tUSfz));
+    }
+
+    /**
+     * 删除身份证
+     */
+    @RequiresPermissions("system:sfz:remove")
+    @Log(title = "身份证", businessType = BusinessType.DELETE)
+    @PostMapping( "/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        return toAjax(tUSfzService.deleteTUSfzByIds(ids));
+    }
+}

+ 252 - 0
mybusiness/src/main/java/com/sooka/system/domain/TULog.java

@@ -0,0 +1,252 @@
+package com.sooka.system.domain;
+
+import com.sooka.common.annotation.Excel;
+import com.sooka.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 接口调用日志对象 t_u_log
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+public class TULog extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private String id;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String status;
+
+    /** 删除时间 */
+    private String delFlag;
+
+    /** 登录人 */
+    @Excel(name = "登录人")
+    private Long loginUser;
+
+    /** 登录名 */
+    @Excel(name = "登录名")
+    private String loginName;
+
+    /** 调用接口id */
+    @Excel(name = "调用接口id")
+    private String interfaceinfoId;
+
+    /** 调用接口名 */
+    @Excel(name = "调用接口名")
+    private String interfaceinfoName;
+
+    /** ip地址 */
+    @Excel(name = "ip地址")
+    private String ipaddress;
+
+    /** 操作系统 */
+    @Excel(name = "操作系统")
+    private String os;
+
+    /** 平台接口类型 */
+    @Excel(name = "平台接口类型")
+    private String platformInterfacetype;
+
+    /** 访问浏览器 */
+    @Excel(name = "访问浏览器")
+    private String browser;
+
+    /** 参数条件 */
+    @Excel(name = "参数条件")
+    private String param;
+
+    /** 返回结果 */
+    @Excel(name = "返回结果")
+    private String results;
+
+    /** 操作数量 */
+    @Excel(name = "操作数量")
+    private Long operationQuantity;
+
+    /** 操作状态 */
+    @Excel(name = "操作状态")
+    private Long operationStatus;
+
+    /** 异常记录 */
+    @Excel(name = "异常记录")
+    private String exceptionLog;
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setLoginUser(Long loginUser)
+    {
+        this.loginUser = loginUser;
+    }
+
+    public Long getLoginUser()
+    {
+        return loginUser;
+    }
+    public void setLoginName(String loginName)
+    {
+        this.loginName = loginName;
+    }
+
+    public String getLoginName()
+    {
+        return loginName;
+    }
+    public void setInterfaceinfoId(String interfaceinfoId)
+    {
+        this.interfaceinfoId = interfaceinfoId;
+    }
+
+    public String getInterfaceinfoId()
+    {
+        return interfaceinfoId;
+    }
+    public void setInterfaceinfoName(String interfaceinfoName)
+    {
+        this.interfaceinfoName = interfaceinfoName;
+    }
+
+    public String getInterfaceinfoName()
+    {
+        return interfaceinfoName;
+    }
+    public void setIpaddress(String ipaddress)
+    {
+        this.ipaddress = ipaddress;
+    }
+
+    public String getIpaddress()
+    {
+        return ipaddress;
+    }
+    public void setOs(String os)
+    {
+        this.os = os;
+    }
+
+    public String getOs()
+    {
+        return os;
+    }
+    public void setPlatformInterfacetype(String platformInterfacetype)
+    {
+        this.platformInterfacetype = platformInterfacetype;
+    }
+
+    public String getPlatformInterfacetype()
+    {
+        return platformInterfacetype;
+    }
+    public void setBrowser(String browser)
+    {
+        this.browser = browser;
+    }
+
+    public String getBrowser()
+    {
+        return browser;
+    }
+    public void setParam(String params)
+    {
+        this.param = params;
+    }
+
+    public String getParam()
+    {
+        return param;
+    }
+    public void setResults(String results)
+    {
+        this.results = results;
+    }
+
+    public String getResults()
+    {
+        return results;
+    }
+    public void setOperationQuantity(Long operationQuantity)
+    {
+        this.operationQuantity = operationQuantity;
+    }
+
+    public Long getOperationQuantity()
+    {
+        return operationQuantity;
+    }
+    public void setOperationStatus(Long operationStatus)
+    {
+        this.operationStatus = operationStatus;
+    }
+
+    public Long getOperationStatus()
+    {
+        return operationStatus;
+    }
+    public void setExceptionLog(String exceptionLog)
+    {
+        this.exceptionLog = exceptionLog;
+    }
+
+    public String getExceptionLog()
+    {
+        return exceptionLog;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("status", getStatus())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("loginUser", getLoginUser())
+            .append("loginName", getLoginName())
+            .append("interfaceinfoId", getInterfaceinfoId())
+            .append("interfaceinfoName", getInterfaceinfoName())
+            .append("ipaddress", getIpaddress())
+            .append("os", getOs())
+            .append("platformInterfacetype", getPlatformInterfacetype())
+            .append("browser", getBrowser())
+            .append("param", getParam())
+            .append("results", getResults())
+            .append("operationQuantity", getOperationQuantity())
+            .append("operationStatus", getOperationStatus())
+            .append("exceptionLog", getExceptionLog())
+            .toString();
+    }
+}

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

@@ -0,0 +1,196 @@
+package com.sooka.system.domain;
+
+import com.sooka.common.annotation.Excel;
+import com.sooka.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 身份证对象 t_u_sfz
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+public class TUSfz extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private String id;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    private String status;
+
+    /** 删除时间 */
+    private String delFlag;
+
+    /** 发证机关 */
+    @Excel(name = "发证机关")
+    private String licenceIssue;
+
+    /** 姓名 */
+    @Excel(name = "姓名")
+    private String name;
+
+    /** 性别 */
+    @Excel(name = "性别")
+    private String gender;
+
+    /** 民族 */
+    @Excel(name = "民族")
+    private String nationality;
+
+    /** 出生日期 */
+    @Excel(name = "出生日期")
+    private String birthDate;
+
+    /** 公民身份号码 */
+    @Excel(name = "公民身份号码")
+    private String idcardNo;
+
+    /** 户籍地 */
+    @Excel(name = "户籍地")
+    private String addressPermanent;
+
+    /** 照片 */
+    @Excel(name = "照片")
+    private String photos;
+
+    /** 相片 */
+    @Excel(name = "相片")
+    private String photograph;
+
+    public void setId(String id)
+    {
+        this.id = id;
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+    public void setLicenceIssue(String licenceIssue)
+    {
+        this.licenceIssue = licenceIssue;
+    }
+
+    public String getLicenceIssue()
+    {
+        return licenceIssue;
+    }
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+    public void setGender(String gender)
+    {
+        this.gender = gender;
+    }
+
+    public String getGender()
+    {
+        return gender;
+    }
+    public void setNationality(String nationality)
+    {
+        this.nationality = nationality;
+    }
+
+    public String getNationality()
+    {
+        return nationality;
+    }
+    public void setBirthDate(String birthDate)
+    {
+        this.birthDate = birthDate;
+    }
+
+    public String getBirthDate()
+    {
+        return birthDate;
+    }
+    public void setIdcardNo(String idcardNo)
+    {
+        this.idcardNo = idcardNo;
+    }
+
+    public String getIdcardNo()
+    {
+        return idcardNo;
+    }
+    public void setAddressPermanent(String addressPermanent)
+    {
+        this.addressPermanent = addressPermanent;
+    }
+
+    public String getAddressPermanent()
+    {
+        return addressPermanent;
+    }
+    public void setPhotos(String photos)
+    {
+        this.photos = photos;
+    }
+
+    public String getPhotos()
+    {
+        return photos;
+    }
+    public void setPhotograph(String photograph)
+    {
+        this.photograph = photograph;
+    }
+
+    public String getPhotograph()
+    {
+        return photograph;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("status", getStatus())
+            .append("remark", getRemark())
+            .append("delFlag", getDelFlag())
+            .append("createBy", getCreateBy())
+            .append("createTime", getCreateTime())
+            .append("updateBy", getUpdateBy())
+            .append("updateTime", getUpdateTime())
+            .append("licenceIssue", getLicenceIssue())
+            .append("name", getName())
+            .append("gender", getGender())
+            .append("nationality", getNationality())
+            .append("birthDate", getBirthDate())
+            .append("idcardNo", getIdcardNo())
+            .append("addressPermanent", getAddressPermanent())
+            .append("photos", getPhotos())
+            .append("photograph", getPhotograph())
+            .toString();
+    }
+}

+ 61 - 0
mybusiness/src/main/java/com/sooka/system/mapper/TULogMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.system.mapper;
+
+import java.util.List;
+import com.sooka.system.domain.TULog;
+
+/**
+ * 接口调用日志Mapper接口
+ * 
+ * @author lei
+ * @date 2021-07-06
+ */
+public interface TULogMapper 
+{
+    /**
+     * 查询接口调用日志
+     * 
+     * @param id 接口调用日志ID
+     * @return 接口调用日志
+     */
+    public TULog selectTULogById(String id);
+
+    /**
+     * 查询接口调用日志列表
+     * 
+     * @param tULog 接口调用日志
+     * @return 接口调用日志集合
+     */
+    public List<TULog> selectTULogList(TULog tULog);
+
+    /**
+     * 新增接口调用日志
+     * 
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    public int insertTULog(TULog tULog);
+
+    /**
+     * 修改接口调用日志
+     * 
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    public int updateTULog(TULog tULog);
+
+    /**
+     * 删除接口调用日志
+     * 
+     * @param id 接口调用日志ID
+     * @return 结果
+     */
+    public int deleteTULogById(String id);
+
+    /**
+     * 批量删除接口调用日志
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTULogByIds(String[] ids);
+}

+ 61 - 0
mybusiness/src/main/java/com/sooka/system/mapper/TUSfzMapper.java

@@ -0,0 +1,61 @@
+package com.sooka.system.mapper;
+
+import java.util.List;
+import com.sooka.system.domain.TUSfz;
+
+/**
+ * 身份证Mapper接口
+ * 
+ * @author lei
+ * @date 2021-07-06
+ */
+public interface TUSfzMapper 
+{
+    /**
+     * 查询身份证
+     * 
+     * @param id 身份证ID
+     * @return 身份证
+     */
+    public TUSfz selectTUSfzById(String id);
+
+    /**
+     * 查询身份证列表
+     * 
+     * @param tUSfz 身份证
+     * @return 身份证集合
+     */
+    public List<TUSfz> selectTUSfzList(TUSfz tUSfz);
+
+    /**
+     * 新增身份证
+     * 
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    public int insertTUSfz(TUSfz tUSfz);
+
+    /**
+     * 修改身份证
+     * 
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    public int updateTUSfz(TUSfz tUSfz);
+
+    /**
+     * 删除身份证
+     * 
+     * @param id 身份证ID
+     * @return 结果
+     */
+    public int deleteTUSfzById(String id);
+
+    /**
+     * 批量删除身份证
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTUSfzByIds(String[] ids);
+}

+ 61 - 0
mybusiness/src/main/java/com/sooka/system/service/ITULogService.java

@@ -0,0 +1,61 @@
+package com.sooka.system.service;
+
+import java.util.List;
+import com.sooka.system.domain.TULog;
+
+/**
+ * 接口调用日志Service接口
+ * 
+ * @author lei
+ * @date 2021-07-06
+ */
+public interface ITULogService 
+{
+    /**
+     * 查询接口调用日志
+     * 
+     * @param id 接口调用日志ID
+     * @return 接口调用日志
+     */
+    public TULog selectTULogById(String id);
+
+    /**
+     * 查询接口调用日志列表
+     * 
+     * @param tULog 接口调用日志
+     * @return 接口调用日志集合
+     */
+    public List<TULog> selectTULogList(TULog tULog);
+
+    /**
+     * 新增接口调用日志
+     * 
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    public int insertTULog(TULog tULog);
+
+    /**
+     * 修改接口调用日志
+     * 
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    public int updateTULog(TULog tULog);
+
+    /**
+     * 批量删除接口调用日志
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTULogByIds(String ids);
+
+    /**
+     * 删除接口调用日志信息
+     * 
+     * @param id 接口调用日志ID
+     * @return 结果
+     */
+    public int deleteTULogById(String id);
+}

+ 61 - 0
mybusiness/src/main/java/com/sooka/system/service/ITUSfzService.java

@@ -0,0 +1,61 @@
+package com.sooka.system.service;
+
+import java.util.List;
+import com.sooka.system.domain.TUSfz;
+
+/**
+ * 身份证Service接口
+ * 
+ * @author lei
+ * @date 2021-07-06
+ */
+public interface ITUSfzService 
+{
+    /**
+     * 查询身份证
+     * 
+     * @param id 身份证ID
+     * @return 身份证
+     */
+    public TUSfz selectTUSfzById(String id);
+
+    /**
+     * 查询身份证列表
+     * 
+     * @param tUSfz 身份证
+     * @return 身份证集合
+     */
+    public List<TUSfz> selectTUSfzList(TUSfz tUSfz);
+
+    /**
+     * 新增身份证
+     * 
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    public int insertTUSfz(TUSfz tUSfz);
+
+    /**
+     * 修改身份证
+     * 
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    public int updateTUSfz(TUSfz tUSfz);
+
+    /**
+     * 批量删除身份证
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteTUSfzByIds(String ids);
+
+    /**
+     * 删除身份证信息
+     * 
+     * @param id 身份证ID
+     * @return 结果
+     */
+    public int deleteTUSfzById(String id);
+}

+ 99 - 0
mybusiness/src/main/java/com/sooka/system/service/impl/TULogServiceImpl.java

@@ -0,0 +1,99 @@
+package com.sooka.system.service.impl;
+
+import java.util.List;
+
+import com.sooka.common.core.text.Convert;
+import com.sooka.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.sooka.system.mapper.TULogMapper;
+import com.sooka.system.domain.TULog;
+import com.sooka.system.service.ITULogService;
+
+
+/**
+ * 接口调用日志Service业务层处理
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+@Service
+public class TULogServiceImpl implements ITULogService
+{
+    @Autowired
+    private TULogMapper tULogMapper;
+
+    /**
+     * 查询接口调用日志
+     *
+     * @param id 接口调用日志ID
+     * @return 接口调用日志
+     */
+    @Override
+    public TULog selectTULogById(String id)
+    {
+        return tULogMapper.selectTULogById(id);
+    }
+
+    /**
+     * 查询接口调用日志列表
+     *
+     * @param tULog 接口调用日志
+     * @return 接口调用日志
+     */
+    @Override
+    public List<TULog> selectTULogList(TULog tULog)
+    {
+        return tULogMapper.selectTULogList(tULog);
+    }
+
+    /**
+     * 新增接口调用日志
+     *
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    @Override
+    public int insertTULog(TULog tULog)
+    {
+        tULog.setCreateTime(DateUtils.getNowDate());
+        return tULogMapper.insertTULog(tULog);
+    }
+
+    /**
+     * 修改接口调用日志
+     *
+     * @param tULog 接口调用日志
+     * @return 结果
+     */
+    @Override
+    public int updateTULog(TULog tULog)
+    {
+        tULog.setUpdateTime(DateUtils.getNowDate());
+        return tULogMapper.updateTULog(tULog);
+    }
+
+    /**
+     * 删除接口调用日志对象
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTULogByIds(String ids)
+    {
+        return tULogMapper.deleteTULogByIds(Convert.toStrArray(ids));
+    }
+
+    /**
+     * 删除接口调用日志信息
+     *
+     * @param id 接口调用日志ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTULogById(String id)
+    {
+        return tULogMapper.deleteTULogById(id);
+    }
+}

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

@@ -0,0 +1,123 @@
+package com.sooka.system.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+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.util.HttpUtil;
+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;
+
+
+/**
+ * 身份证Service业务层处理
+ *
+ * @author lei
+ * @date 2021-07-06
+ */
+@Service
+public class TUSfzServiceImpl implements ITUSfzService {
+    @Autowired
+    private TUSfzMapper tUSfzMapper;
+
+    /**
+     * 查询身份证
+     *
+     * @param id 身份证ID
+     * @return 身份证
+     */
+    @Override
+    public TUSfz selectTUSfzById(String id) {
+        return tUSfzMapper.selectTUSfzById(id);
+    }
+
+    /**
+     * 查询身份证列表
+     *
+     * @param tUSfz 身份证
+     * @return 身份证
+     */
+    @Override
+    public List<TUSfz> selectTUSfzList(TUSfz tUSfz) {
+        Map map = new HashMap();
+        map.put("accessId", "1625205696412");
+        map.put("stringToSign", "4ab54dea9926f3386b56fd5fe51b35ae0fe1405a");
+        String r = HttpUtil.doGet("http://127.0.0.1:88/api/test/sfz", "", map);
+        JSONObject jsonpObject = JSONObject.parseObject(r);
+        JSONArray array = jsonpObject.getJSONObject("data").getJSONArray("data");
+        List ls = new ArrayList();
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject obj = array.getJSONObject(i);
+            TUSfz s = new TUSfz();
+            tUSfz.setLicenceIssue(obj.getString("licenceIssue"));
+            tUSfz.setName(obj.getString("name"));
+            tUSfz.setGender(obj.getString("gender"));
+            tUSfz.setNationality(obj.getString("nationality"));
+            tUSfz.setBirthDate(obj.getString("birthDate"));
+            tUSfz.setIdcardNo(obj.getString("idcardNo"));
+            tUSfz.setAddressPermanent(obj.getString("addressPermanent"));
+            tUSfz.setPhotos(obj.getString("photos"));
+            tUSfz.setPhotograph(obj.getString("photograph"));
+            ls.add(tUSfz);
+        }
+        return ls;
+
+//        return tUSfzMapper.selectTUSfzList(tUSfz);
+    }
+
+    /**
+     * 新增身份证
+     *
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    @Override
+    public int insertTUSfz(TUSfz tUSfz) {
+        tUSfz.setCreateTime(DateUtils.getNowDate());
+        return tUSfzMapper.insertTUSfz(tUSfz);
+    }
+
+    /**
+     * 修改身份证
+     *
+     * @param tUSfz 身份证
+     * @return 结果
+     */
+    @Override
+    public int updateTUSfz(TUSfz tUSfz) {
+        tUSfz.setUpdateTime(DateUtils.getNowDate());
+        return tUSfzMapper.updateTUSfz(tUSfz);
+    }
+
+    /**
+     * 删除身份证对象
+     *
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTUSfzByIds(String ids) {
+        return tUSfzMapper.deleteTUSfzByIds(Convert.toStrArray(ids));
+    }
+
+    /**
+     * 删除身份证信息
+     *
+     * @param id 身份证ID
+     * @return 结果
+     */
+    @Override
+    public int deleteTUSfzById(String id) {
+        return tUSfzMapper.deleteTUSfzById(id);
+    }
+}

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

@@ -0,0 +1,211 @@
+package com.util;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.util.*;
+
+import javax.servlet.http.HttpServletRequest;
+
+import static com.sun.org.apache.xml.internal.security.keys.keyresolver.KeyResolver.iterator;
+
+public class HttpUtil {
+
+	public static String doGet(String geturl, String params,Map headerparam) {
+		String realUrl = geturl + "?" + params;
+		System.out.println(realUrl);
+
+		try {
+			// 1.通过�? URL 上调�? openConnection 方法创建连接对象
+			URL url = new URL(realUrl);
+			URLConnection conn = url.openConnection();
+
+			// 2.处理设置参数和一般请求属�?
+			// 2.1设置参数
+			// 可以根据请求的需要设置参�?
+			conn.setUseCaches(false);
+			conn.setConnectTimeout(5000); // 请求超时时间
+
+			// 2.2请求属�??
+			// 设置通用的请求属�? 更多的头字段信息可以查阅HTTP协议
+			conn.setRequestProperty("accept", "*/*");
+			conn.setRequestProperty("connection", "Keep-Alive");
+
+			conn.setRequestProperty("contentType", "UTF-8");
+
+			if(headerparam != null){
+				Set<String> keys =headerparam.keySet();
+				Iterator<String> iterator = keys.iterator();
+				while(iterator.hasNext()){
+					String key =iterator.next().toString();
+					String value = headerparam.get(key).toString();
+					conn.setRequestProperty(key,value);
+				}
+			}
+
+
+
+			// 3.使用 connect 方法建立到远程对象的实际连接�?
+			conn.connect();
+
+			// 4.远程对象变为可用。远程对象的头字段和内容变为可访问�??
+			// 4.1获取响应的头字段
+			Map<String, List<String>> headers = conn.getHeaderFields();
+			System.out.println(headers); // 输出头字�?
+
+			// 4.2获取响应正文
+			BufferedReader reader = null;
+			StringBuffer resultBuffer = new StringBuffer();
+			String tempLine = null;
+
+			reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
+			while ((tempLine = reader.readLine()) != null) {
+				resultBuffer.append(tempLine);
+			}
+			// System.out.println(resultBuffer);
+			reader.close();
+			return resultBuffer.toString();
+		} catch (MalformedURLException e) {
+			// TODO 自动生成�? catch �?
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO 自动生成�? catch �?
+			e.printStackTrace();
+		} finally {
+
+		}
+		return null;
+
+	}
+
+	public static String doPost(String url, String param) {
+		PrintWriter out = null;
+		BufferedReader in = null;
+		String result = "";
+		try {
+			URL realUrl = new URL(url);
+			// 打开和URL之间的连�?
+			URLConnection conn = realUrl.openConnection();
+			// 设置通用的请求属�?
+			conn.setRequestProperty("accept", "*/*");
+			conn.setRequestProperty("connection", "Keep-Alive");
+			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
+			conn.setRequestProperty("contentType", "UTF-8");
+			// 发�?�POST请求必须设置如下两行
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 获取URLConnection对象对应的输出流
+			out = new PrintWriter(conn.getOutputStream());
+			// 发�?�请求参�?
+			out.print(param);
+			System.out.println(param + "##################################");
+			// flush输出流的缓冲
+			out.flush();
+			// 定义BufferedReader输入流来读取URL的响�?
+			in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
+			String line;
+			while ((line = in.readLine()) != null) {
+				result += "/n" + line;
+			}
+		} catch (Exception e) {
+			System.out.println("发�?�POST请求出现异常�?" + e);
+			e.printStackTrace();
+		}
+		// 使用finally块来关闭输出流�?�输入流
+		finally {
+			try {
+				if (out != null) {
+					out.close();
+				}
+				if (in != null) {
+					in.close();
+				}
+			} catch (IOException ex) {
+				ex.printStackTrace();
+			}
+		}
+		return result;
+	}
+
+	public static String getOsAndBrowserInfo(HttpServletRequest request) {
+		String browserDetails = request.getHeader("User-Agent");
+		String userAgent = browserDetails;
+		String user = userAgent.toLowerCase();
+
+		String os = "";
+		String browser = "";
+
+		// =================OS Info=======================
+		if (userAgent.toLowerCase().indexOf("windows") >= 0) {
+			os += "Windows";
+		}
+		if (userAgent.toLowerCase().indexOf("micromessenger") >= 0) {
+			os += "weixin";
+		}
+		if (userAgent.toLowerCase().indexOf("mac") >= 0) {
+			os += "Mac";
+		}
+		if (userAgent.toLowerCase().indexOf("x11") >= 0) {
+			os += "Unix";
+		}
+		if (userAgent.toLowerCase().indexOf("android") >= 0) {
+			os += "Android";
+		}
+		if (userAgent.toLowerCase().indexOf("iphone") >= 0) {
+			os += "IPhone";
+		}
+		{
+			os += "UnKnown, More-Info: " + userAgent;
+		}
+		// ===============Browser===========================
+		if (user.contains("edge")) {
+			browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
+		} else if (user.contains("msie")) {
+			String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
+			browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1];
+		} else if (user.contains("safari") && user.contains("version")) {
+			browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0] + "-"
+					+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+		} else if (user.contains("opr") || user.contains("opera")) {
+			if (user.contains("opera")) {
+				browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0] + "-"
+						+ (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+			} else if (user.contains("opr")) {
+				browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
+						.replace("OPR", "Opera");
+			}
+
+		} else if (user.contains("chrome")) {
+			browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
+		} else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1)
+				|| (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1)
+				|| (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) {
+			browser = "Netscape-?";
+
+		} else if (user.contains("firefox")) {
+			browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
+		} else if (user.contains("rv")) {
+			String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
+			browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1);
+		} else {
+			browser = "UnKnown, More-Info: " + userAgent;
+		}
+
+		return os + " --- " + browser;
+	}
+
+	public static void main(String[] args) {
+		Map map = new HashMap();
+		map.put("accessId","1625205696412");
+		map.put("stringToSign","4ab54dea9926f3386b56fd5fe51b35ae0fe1405a");
+
+		String r =doGet("http://127.0.0.1:88/api/test/sfz","",map);
+		System.out.println(r);
+	}
+
+}

+ 148 - 0
mybusiness/src/main/resources/mapper/system/TULogMapper.xml

@@ -0,0 +1,148 @@
+<?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.sooka.system.mapper.TULogMapper">
+
+    <resultMap type="TULog" id="TULogResult">
+        <result property="id"    column="id"    />
+        <result property="status"    column="status"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="loginUser"    column="login_user"    />
+        <result property="loginName"    column="login_name"    />
+        <result property="interfaceinfoId"    column="interfaceinfo_id"    />
+        <result property="interfaceinfoName"    column="interfaceinfo_name"    />
+        <result property="ipaddress"    column="ipaddress"    />
+        <result property="os"    column="os"    />
+        <result property="platformInterfacetype"    column="platform_interfacetype"    />
+        <result property="browser"    column="browser"    />
+        <result property="param"    column="param"    />
+        <result property="results"    column="results"    />
+        <result property="operationQuantity"    column="operation_quantity"    />
+        <result property="operationStatus"    column="operation_status"    />
+        <result property="exceptionLog"    column="exception_log"    />
+    </resultMap>
+
+    <sql id="selectTULogVo">
+        select id, status, remark, del_flag, create_by, create_time, update_by, update_time, login_user, login_name, interfaceinfo_id, interfaceinfo_name, ipaddress, os, platform_interfacetype, browser, param, results, operation_quantity, operation_status, exception_log from t_u_log
+    </sql>
+
+    <select id="selectTULogList" parameterType="TULog" resultMap="TULogResult">
+        <include refid="selectTULogVo"/>
+        <where>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="loginUser != null "> and login_user = #{loginUser}</if>
+            <if test="loginName != null  and loginName != ''"> and login_name like concat('%', #{loginName}, '%')</if>
+            <if test="interfaceinfoId != null  and interfaceinfoId != ''"> and interfaceinfo_id = #{interfaceinfoId}</if>
+            <if test="interfaceinfoName != null  and interfaceinfoName != ''"> and interfaceinfo_name like concat('%', #{interfaceinfoName}, '%')</if>
+            <if test="ipaddress != null  and ipaddress != ''"> and ipaddress = #{ipaddress}</if>
+            <if test="os != null  and os != ''"> and os = #{os}</if>
+            <if test="platformInterfacetype != null  and platformInterfacetype != ''"> and platform_interfacetype = #{platformInterfacetype}</if>
+            <if test="browser != null  and browser != ''"> and browser = #{browser}</if>
+            <if test="param != null  and param != ''"> and param = #{param}</if>
+            <if test="results != null  and results != ''"> and results = #{results}</if>
+            <if test="operationQuantity != null "> and operation_quantity = #{operationQuantity}</if>
+            <if test="operationStatus != null "> and operation_status = #{operationStatus}</if>
+            <if test="exceptionLog != null  and exceptionLog != ''"> and exception_log = #{exceptionLog}</if>
+        </where>
+    </select>
+
+    <select id="selectTULogById" parameterType="String" resultMap="TULogResult">
+        <include refid="selectTULogVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertTULog" parameterType="TULog">
+        insert into t_u_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="status != null">status,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="loginUser != null">login_user,</if>
+            <if test="loginName != null">login_name,</if>
+            <if test="interfaceinfoId != null">interfaceinfo_id,</if>
+            <if test="interfaceinfoName != null">interfaceinfo_name,</if>
+            <if test="ipaddress != null">ipaddress,</if>
+            <if test="os != null">os,</if>
+            <if test="platformInterfacetype != null">platform_interfacetype,</if>
+            <if test="browser != null">browser,</if>
+            <if test="param != null">param,</if>
+            <if test="results != null">results,</if>
+            <if test="operationQuantity != null">operation_quantity,</if>
+            <if test="operationStatus != null">operation_status,</if>
+            <if test="exceptionLog != null">exception_log,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="status != null">#{status},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="loginUser != null">#{loginUser},</if>
+            <if test="loginName != null">#{loginName},</if>
+            <if test="interfaceinfoId != null">#{interfaceinfoId},</if>
+            <if test="interfaceinfoName != null">#{interfaceinfoName},</if>
+            <if test="ipaddress != null">#{ipaddress},</if>
+            <if test="os != null">#{os},</if>
+            <if test="platformInterfacetype != null">#{platformInterfacetype},</if>
+            <if test="browser != null">#{browser},</if>
+            <if test="param != null">#{param},</if>
+            <if test="results != null">#{results},</if>
+            <if test="operationQuantity != null">#{operationQuantity},</if>
+            <if test="operationStatus != null">#{operationStatus},</if>
+            <if test="exceptionLog != null">#{exceptionLog},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTULog" parameterType="TULog">
+        update t_u_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="status != null">status = #{status},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="loginUser != null">login_user = #{loginUser},</if>
+            <if test="loginName != null">login_name = #{loginName},</if>
+            <if test="interfaceinfoId != null">interfaceinfo_id = #{interfaceinfoId},</if>
+            <if test="interfaceinfoName != null">interfaceinfo_name = #{interfaceinfoName},</if>
+            <if test="ipaddress != null">ipaddress = #{ipaddress},</if>
+            <if test="os != null">os = #{os},</if>
+            <if test="platformInterfacetype != null">platform_interfacetype = #{platformInterfacetype},</if>
+            <if test="browser != null">browser = #{browser},</if>
+            <if test="param != null">param = #{param},</if>
+            <if test="results != null">results = #{results},</if>
+            <if test="operationQuantity != null">operation_quantity = #{operationQuantity},</if>
+            <if test="operationStatus != null">operation_status = #{operationStatus},</if>
+            <if test="exceptionLog != null">exception_log = #{exceptionLog},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTULogById" parameterType="String">
+        delete from t_u_log where id = #{id}
+    </delete>
+
+    <delete id="deleteTULogByIds" parameterType="String">
+        delete from t_u_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>

+ 128 - 0
mybusiness/src/main/resources/mapper/system/TUSfzMapper.xml

@@ -0,0 +1,128 @@
+<?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.sooka.system.mapper.TUSfzMapper">
+    
+    <resultMap type="TUSfz" id="TUSfzResult">
+        <result property="id"    column="id"    />
+        <result property="status"    column="status"    />
+        <result property="remark"    column="remark"    />
+        <result property="delFlag"    column="del_flag"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+        <result property="licenceIssue"    column="licence_issue"    />
+        <result property="name"    column="name"    />
+        <result property="gender"    column="gender"    />
+        <result property="nationality"    column="nationality"    />
+        <result property="birthDate"    column="birth_date"    />
+        <result property="idcardNo"    column="idcard_no"    />
+        <result property="addressPermanent"    column="address_permanent"    />
+        <result property="photos"    column="photos"    />
+        <result property="photograph"    column="photograph"    />
+    </resultMap>
+
+    <sql id="selectTUSfzVo">
+        select id, status, remark, del_flag, create_by, create_time, update_by, update_time, licence_issue, name, gender, nationality, birth_date, idcard_no, address_permanent, photos, photograph from t_u_sfz
+    </sql>
+
+    <select id="selectTUSfzList" parameterType="TUSfz" resultMap="TUSfzResult">
+        <include refid="selectTUSfzVo"/>
+        <where>  
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="licenceIssue != null  and licenceIssue != ''"> and licence_issue = #{licenceIssue}</if>
+            <if test="name != null  and name != ''"> and name like concat('%', #{name}, '%')</if>
+            <if test="gender != null  and gender != ''"> and gender = #{gender}</if>
+            <if test="nationality != null  and nationality != ''"> and nationality = #{nationality}</if>
+            <if test="birthDate != null  and birthDate != ''"> and birth_date = #{birthDate}</if>
+            <if test="idcardNo != null  and idcardNo != ''"> and idcard_no = #{idcardNo}</if>
+            <if test="addressPermanent != null  and addressPermanent != ''"> and address_permanent = #{addressPermanent}</if>
+            <if test="photos != null  and photos != ''"> and photos = #{photos}</if>
+            <if test="photograph != null  and photograph != ''"> and photograph = #{photograph}</if>
+        </where>
+    </select>
+    
+    <select id="selectTUSfzById" parameterType="String" resultMap="TUSfzResult">
+        <include refid="selectTUSfzVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertTUSfz" parameterType="TUSfz">
+        insert into t_u_sfz
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="status != null">status,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+            <if test="licenceIssue != null">licence_issue,</if>
+            <if test="name != null">name,</if>
+            <if test="gender != null">gender,</if>
+            <if test="nationality != null">nationality,</if>
+            <if test="birthDate != null">birth_date,</if>
+            <if test="idcardNo != null">idcard_no,</if>
+            <if test="addressPermanent != null">address_permanent,</if>
+            <if test="photos != null">photos,</if>
+            <if test="photograph != null">photograph,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="status != null">#{status},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+            <if test="licenceIssue != null">#{licenceIssue},</if>
+            <if test="name != null">#{name},</if>
+            <if test="gender != null">#{gender},</if>
+            <if test="nationality != null">#{nationality},</if>
+            <if test="birthDate != null">#{birthDate},</if>
+            <if test="idcardNo != null">#{idcardNo},</if>
+            <if test="addressPermanent != null">#{addressPermanent},</if>
+            <if test="photos != null">#{photos},</if>
+            <if test="photograph != null">#{photograph},</if>
+         </trim>
+    </insert>
+
+    <update id="updateTUSfz" parameterType="TUSfz">
+        update t_u_sfz
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="status != null">status = #{status},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+            <if test="licenceIssue != null">licence_issue = #{licenceIssue},</if>
+            <if test="name != null">name = #{name},</if>
+            <if test="gender != null">gender = #{gender},</if>
+            <if test="nationality != null">nationality = #{nationality},</if>
+            <if test="birthDate != null">birth_date = #{birthDate},</if>
+            <if test="idcardNo != null">idcard_no = #{idcardNo},</if>
+            <if test="addressPermanent != null">address_permanent = #{addressPermanent},</if>
+            <if test="photos != null">photos = #{photos},</if>
+            <if test="photograph != null">photograph = #{photograph},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteTUSfzById" parameterType="String">
+        delete from t_u_sfz where id = #{id}
+    </delete>
+
+    <delete id="deleteTUSfzByIds" parameterType="String">
+        delete from t_u_sfz where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>

+ 126 - 0
mybusiness/src/main/resources/templates/system/log/add.html

@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增接口调用日志')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-log-add">
+            <div class="form-group">
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="status" value="">
+                        <label th:for="status" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">删除时间:</label>
+                <div class="col-sm-8">
+                    <input name="delFlag" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">登录人:</label>
+                <div class="col-sm-8">
+                    <input name="loginUser" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">登录名:</label>
+                <div class="col-sm-8">
+                    <input name="loginName" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">调用接口id:</label>
+                <div class="col-sm-8">
+                    <input name="interfaceinfoId" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">调用接口名:</label>
+                <div class="col-sm-8">
+                    <input name="interfaceinfoName" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">ip地址:</label>
+                <div class="col-sm-8">
+                    <input name="ipaddress" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作系统:</label>
+                <div class="col-sm-8">
+                    <input name="os" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">平台接口类型:</label>
+                <div class="col-sm-8">
+                    <select name="platformInterfacetype" class="form-control m-b">
+                        <option value="">所有</option>
+                    </select>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">访问浏览器:</label>
+                <div class="col-sm-8">
+                    <input name="browser" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">参数条件:</label>
+                <div class="col-sm-8">
+                    <input name="param" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">返回结果:</label>
+                <div class="col-sm-8">
+                    <input name="results" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作数量:</label>
+                <div class="col-sm-8">
+                    <input name="operationQuantity" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="operationStatus" value="">
+                        <label th:for="operationStatus" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">异常记录:</label>
+                <div class="col-sm-8">
+                    <input name="exceptionLog" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/log"
+        $("#form-log-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-log-add').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 121 - 0
mybusiness/src/main/resources/templates/system/log/edit.html

@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改接口调用日志')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-log-edit" th:object="${tULog}">
+            <input name="id" th:field="*{id}" type="hidden">
+            <div class="form-group">
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="status" value="">
+                        <label th:for="status" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">登录人:</label>
+                <div class="col-sm-8">
+                    <input name="loginUser" th:field="*{loginUser}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">登录名:</label>
+                <div class="col-sm-8">
+                    <input name="loginName" th:field="*{loginName}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">调用接口id:</label>
+                <div class="col-sm-8">
+                    <input name="interfaceinfoId" th:field="*{interfaceinfoId}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">调用接口名:</label>
+                <div class="col-sm-8">
+                    <input name="interfaceinfoName" th:field="*{interfaceinfoName}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">ip地址:</label>
+                <div class="col-sm-8">
+                    <input name="ipaddress" th:field="*{ipaddress}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作系统:</label>
+                <div class="col-sm-8">
+                    <input name="os" th:field="*{os}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">平台接口类型:</label>
+                <div class="col-sm-8">
+                    <select name="platformInterfacetype" class="form-control m-b">
+                        <option value="">所有</option>
+                    </select>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">访问浏览器:</label>
+                <div class="col-sm-8">
+                    <input name="browser" th:field="*{browser}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">参数条件:</label>
+                <div class="col-sm-8">
+                    <input name="param" th:field="*{param}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">返回结果:</label>
+                <div class="col-sm-8">
+                    <input name="results" th:field="*{results}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作数量:</label>
+                <div class="col-sm-8">
+                    <input name="operationQuantity" th:field="*{operationQuantity}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">操作状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="operationStatus" value="">
+                        <label th:for="operationStatus" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="col-sm-3 control-label">异常记录:</label>
+                <div class="col-sm-8">
+                    <input name="exceptionLog" th:field="*{exceptionLog}" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/log";
+        $("#form-log-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-log-edit').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 207 - 0
mybusiness/src/main/resources/templates/system/log/log.html

@@ -0,0 +1,207 @@
+<!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('接口调用日志列表')" />
+</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="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>
+    </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')}]];
+
+        $(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',
+                    visible: false
+                },
+                {
+                    field: 'status',
+                    title: '状态',
+                    visible: false
+                },
+                {
+                    field: 'remark',
+                    title: '注释',
+                    visible: false
+                },
+                {
+                    field: 'loginUser',
+                    title: '登录人'
+                },
+                {
+                    field: 'loginName',
+                    title: '登录名'
+                },
+                {
+                    field: 'interfaceinfoId',
+                    title: '调用接口id',
+                    visible: false
+                },
+                {
+                    field: 'interfaceinfoName',
+                    title: '调用接口名'
+                },
+                {
+                    field: 'ipaddress',
+                    title: 'ip地址'
+                },
+                {
+                    field: 'os',
+                    title: '操作系统'
+                },
+                {
+                    field: 'platformInterfacetype',
+                    title: '平台接口类型',
+                    formatter: function(value, item, index) {
+                        return $.table.selectDictLabel(platform_interfacetype_datas, item.platformInterfacetype);
+                    }
+                },
+                {
+                    field: 'browser',
+                    title: '访问浏览器'
+                },
+                {
+                    field: 'param',
+                    title: '参数条件',
+                    visible: false
+                },
+                {
+                    field: 'results',
+                    title: '返回结果',
+                    visible: false
+                },
+                {
+                    field: 'operationQuantity',
+                    title: '操作数量'
+                },
+                {
+                    field: 'operationStatus',
+                    title: '操作状态',
+                    visible: false
+                },
+                {
+                    field: 'exceptionLog',
+                    title: '异常记录',
+                    visible: false
+                },
+                // {
+                //     title: '操作',
+                //     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>');
+                //         return actions.join('');
+                //     }
+                // }
+                ]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>

+ 95 - 0
mybusiness/src/main/resources/templates/system/sfz/add.html

@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增身份证')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-sfz-add">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="status" value="">
+                        <label th:for="status" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">删除时间:</label>
+                <div class="col-sm-8">
+                    <input name="delFlag" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">发证机关:</label>
+                <div class="col-sm-8">
+                    <input name="licenceIssue" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">姓名:</label>
+                <div class="col-sm-8">
+                    <input name="name" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">性别:</label>
+                <div class="col-sm-8">
+                    <input name="gender" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">民族:</label>
+                <div class="col-sm-8">
+                    <input name="nationality" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">出生日期:</label>
+                <div class="col-sm-8">
+                    <input name="birthDate" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">公民身份号码:</label>
+                <div class="col-sm-8">
+                    <input name="idcardNo" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">户籍地:</label>
+                <div class="col-sm-8">
+                    <input name="addressPermanent" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">照片:</label>
+                <div class="col-sm-8">
+                    <input name="photos" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">相片:</label>
+                <div class="col-sm-8">
+                    <input name="photograph" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/sfz"
+        $("#form-sfz-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/add", $('#form-sfz-add').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 90 - 0
mybusiness/src/main/resources/templates/system/sfz/edit.html

@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改身份证')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-sfz-edit" th:object="${tUSfz}">
+            <input name="id" th:field="*{id}" type="hidden">
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">状态:</label>
+                <div class="col-sm-8">
+                    <div class="radio-box">
+                        <input type="radio" name="status" value="">
+                        <label th:for="status" th:text="未知"></label>
+                    </div>
+                    <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">发证机关:</label>
+                <div class="col-sm-8">
+                    <input name="licenceIssue" th:field="*{licenceIssue}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">姓名:</label>
+                <div class="col-sm-8">
+                    <input name="name" th:field="*{name}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">性别:</label>
+                <div class="col-sm-8">
+                    <input name="gender" th:field="*{gender}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">民族:</label>
+                <div class="col-sm-8">
+                    <input name="nationality" th:field="*{nationality}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">出生日期:</label>
+                <div class="col-sm-8">
+                    <input name="birthDate" th:field="*{birthDate}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">公民身份号码:</label>
+                <div class="col-sm-8">
+                    <input name="idcardNo" th:field="*{idcardNo}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">户籍地:</label>
+                <div class="col-sm-8">
+                    <input name="addressPermanent" th:field="*{addressPermanent}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">照片:</label>
+                <div class="col-sm-8">
+                    <input name="photos" th:field="*{photos}" class="form-control" type="text">
+                </div>
+            </div>
+            <div class="form-group">    
+                <label class="col-sm-3 control-label">相片:</label>
+                <div class="col-sm-8">
+                    <input name="photograph" th:field="*{photograph}" class="form-control" type="text">
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "system/sfz";
+        $("#form-sfz-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                $.operate.save(prefix + "/edit", $('#form-sfz-edit').serialize());
+            }
+        }
+    </script>
+</body>
+</html>

+ 136 - 0
mybusiness/src/main/resources/templates/system/sfz/sfz.html

@@ -0,0 +1,136 @@
+<!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('身份证列表')" />
+</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>
+                                <input type="text" name="name"/>
+                            </li>
+                            <li>
+                                <label>公民身份号码:</label>
+                                <input type="text" name="idcardNo"/>
+                            </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-success" onclick="$.operate.add()" shiro:hasPermission="system:sfz:add">-->
+                    <!--<i class="fa fa-plus"></i> 添加-->
+                <!--</a>-->
+                <!--<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="system:sfz:edit">-->
+                    <!--<i class="fa fa-edit"></i> 修改-->
+                <!--</a>-->
+                <!--<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="system:sfz:remove">-->
+                    <!--<i class="fa fa-remove"></i> 删除-->
+                <!--</a>-->
+                <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:sfz: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>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var editFlag = [[${@permission.hasPermi('system:sfz:edit')}]];
+        var removeFlag = [[${@permission.hasPermi('system:sfz:remove')}]];
+        var prefix = ctx + "system/sfz";
+
+        $(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',
+                    visible: false
+                },
+                {
+                    field: 'status',
+                    title: '状态',
+                    visible: false
+                },
+                {
+                    field: 'remark',
+                    title: '注释',
+                    visible: false
+                },
+                {
+                    field: 'licenceIssue',
+                    title: '发证机关'
+                },
+                {
+                    field: 'name',
+                    title: '姓名'
+                },
+                {
+                    field: 'gender',
+                    title: '性别'
+                },
+                {
+                    field: 'nationality',
+                    title: '民族'
+                },
+                {
+                    field: 'birthDate',
+                    title: '出生日期'
+                },
+                {
+                    field: 'idcardNo',
+                    title: '公民身份号码'
+                },
+                {
+                    field: 'addressPermanent',
+                    title: '户籍地'
+                },
+                {
+                    field: 'photos',
+                    title: '照片'
+                },
+                {
+                    field: 'photograph',
+                    title: '相片',
+                    formatter: function(value, row, index) {
+                        return  "<image src='data:image/jpg;base64,"+value+"'>"+"</image>";
+                    }
+                },
+                {
+                    title: '操作',
+                    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>');
+                        return actions.join('');
+                    }
+                }]
+            };
+            $.table.init(options);
+        });
+    </script>
+</body>
+</html>