zhoutg 5 yıl önce
ebeveyn
işleme
437186d93c

+ 50 - 0
diagbotman-service/src/main/java/com/diagbot/entity/IpEntity.java

@@ -0,0 +1,50 @@
+package com.diagbot.entity;
+
+import lombok.Data;
+
+/**
+ * @description: ip基础类
+ * @author: zhoutg
+ * @time: 2020/3/25 9:39
+ */
+@Data
+public class IpEntity {
+
+    /**
+     * 国家
+     */
+    private String country;
+
+    /**
+     * 区域
+     */
+    private String area;
+
+    /**
+     * 省份
+     */
+    private String province;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 运营商
+     */
+    private String operator;
+
+    public IpEntity() {
+    }
+
+    public IpEntity(String country, String area, String province, String city, String operator) {
+        this.country = country;
+        this.area = area;
+        this.province = province;
+        this.city = city;
+        this.operator = operator;
+    }
+
+
+}

+ 95 - 0
diagbotman-service/src/main/java/com/diagbot/entity/OptInfo.java

@@ -0,0 +1,95 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 产品操作记录表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+@TableName("diag_opt_info")
+@Data
+public class OptInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 访问者的IP
+     */
+    private String ip;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 联系人
+     */
+    private String linkman;
+
+    /**
+     * 国家
+     */
+    private String country;
+
+    /**
+     * 省份
+     */
+    private String province;
+
+    /**
+     * 城市
+     */
+    private String city;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 38 - 0
diagbotman-service/src/main/java/com/diagbot/facade/OptInfoFacade.java

@@ -0,0 +1,38 @@
+package com.diagbot.facade;
+
+import com.diagbot.entity.IpEntity;
+import com.diagbot.entity.OptInfo;
+import com.diagbot.service.impl.OptInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.HttpUtils;
+import com.diagbot.util.IPUtil;
+import com.diagbot.vo.OptInfoVO;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2018/10/12 15:31
+ */
+@Component
+public class OptInfoFacade extends OptInfoServiceImpl {
+
+    public Boolean saveFac(OptInfoVO optInfoVO) {
+        String ip = HttpUtils.getIpAddress();
+        IpEntity ipEntity = IPUtil.getCityInfoWithEntity(ip);
+        // 赋值
+        OptInfo optInfo = new OptInfo();
+        BeanUtil.copyProperties(optInfoVO, optInfo);
+        optInfo.setIp(ip);
+        optInfo.setCountry(ipEntity.getCountry());
+        optInfo.setProvince(ipEntity.getProvince());
+        optInfo.setCity(ipEntity.getCity());
+        Date date = DateUtil.now();
+        optInfo.setGmtCreate(date);
+        optInfo.setGmtModified(date);
+        return this.save(optInfo);
+    }
+}

+ 16 - 0
diagbotman-service/src/main/java/com/diagbot/mapper/OptInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.OptInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 产品操作记录表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+public interface OptInfoMapper extends BaseMapper<OptInfo> {
+
+}

+ 16 - 0
diagbotman-service/src/main/java/com/diagbot/service/OptInfoService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.OptInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 产品操作记录表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+public interface OptInfoService extends IService<OptInfo> {
+
+}

+ 20 - 0
diagbotman-service/src/main/java/com/diagbot/service/impl/OptInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.OptInfo;
+import com.diagbot.mapper.OptInfoMapper;
+import com.diagbot.service.OptInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 产品操作记录表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+@Service
+public class OptInfoServiceImpl extends ServiceImpl<OptInfoMapper, OptInfo> implements OptInfoService {
+
+}

+ 16 - 0
diagbotman-service/src/main/java/com/diagbot/util/IPUtil.java

@@ -1,5 +1,6 @@
 package com.diagbot.util;
 
+import com.diagbot.entity.IpEntity;
 import org.lionsoul.ip2region.DataBlock;
 import org.lionsoul.ip2region.DbConfig;
 import org.lionsoul.ip2region.DbSearcher;
@@ -65,6 +66,21 @@ public class IPUtil {
     }
 
 
+    /**
+     * 返回ip实体类
+     *
+     * @param ip
+     * @return ip实体类
+     */
+    public static IpEntity getCityInfoWithEntity(String ip) {
+        String ipStr = getCityInfo(ip);
+        String[] arr = ipStr.split("\\|");
+        if (arr != null && arr.length == 5) {
+            return new IpEntity(arr[0], arr[1], arr[2], arr[3], arr[4]);
+        }
+        return new IpEntity();
+    }
+
     public static void main(String[] args) throws Exception {
         System.err.println(getCityInfo("220.248.12.158"));
         System.err.println(getCityInfo("223.93.170.82"));

+ 40 - 0
diagbotman-service/src/main/java/com/diagbot/vo/OptInfoVO.java

@@ -0,0 +1,40 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 产品操作记录表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+@Data
+public class OptInfoVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 用户id
+     */
+    private String creator;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 联系人
+     */
+    private String linkman;
+
+}

+ 38 - 0
diagbotman-service/src/main/java/com/diagbot/web/OptInfoController.java

@@ -0,0 +1,38 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.OptInfoFacade;
+import com.diagbot.vo.OptInfoVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 产品操作记录表 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-25
+ */
+@RestController
+@RequestMapping("/optInfo")
+@Api(value = "产品操作记录API", tags = { "产品操作记录API" })
+public class OptInfoController {
+
+    @Autowired
+    OptInfoFacade optInfoFacade;
+
+    @ApiOperation(value = "保存记录[by:zhoutg]", notes = "")
+    @PostMapping("/save")
+    @SysLogger("save")
+    public RespDTO<Boolean> save(@RequestBody OptInfoVO optInfoVO) {
+        return RespDTO.onSuc(optInfoFacade.saveFac(optInfoVO));
+    }
+}

+ 22 - 0
diagbotman-service/src/main/resources/mapper/OptInfoMapper.xml

@@ -0,0 +1,22 @@
+<?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.diagbot.mapper.OptInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.OptInfo">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="ip" property="ip" />
+        <result column="product_id" property="productId" />
+        <result column="user_id" property="userId" />
+        <result column="country" property="country" />
+        <result column="province" property="province" />
+        <result column="city" property="city" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 19 - 0
docs/031.20200325记录产品操作记录/init_diagbotman.sql

@@ -0,0 +1,19 @@
+use `sys-diagbotman`;
+DROP TABLE IF EXISTS `diag_opt_info`;
+CREATE TABLE `diag_opt_info` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `ip` varchar(100) NOT NULL DEFAULT '' COMMENT '访问者的IP',
+  `product_id` bigint(20) NOT NULL COMMENT '产品id',
+  `username` varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
+  `linkman` varchar(255) NOT NULL DEFAULT '' COMMENT '联系人',
+  `country` varchar(50) NOT NULL DEFAULT '' COMMENT '国家',
+  `province` varchar(50) NOT NULL DEFAULT '' COMMENT '省份',
+  `city` varchar(50) NOT NULL DEFAULT '' COMMENT '城市',
+  `remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='产品操作记录表';