NewUserLogThread.java 3.32 KB
Newer Older
manxiaoqiang committed
1 2 3
package util;

import common.context.AppUtils;
manxiaoqiang committed
4
import common.model.User;
manxiaoqiang committed
5 6
import common.model.UserLog;
import common.repository.UserLogRepository;
manxiaoqiang committed
7
import common.repository.UserRepository;
manxiaoqiang committed
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
 * Created by zxy on 2017/12/15.
 */
public class NewUserLogThread
        extends Thread
{
    protected Logger logger = LoggerFactory.getLogger(NewUserLogThread.class);

    private UserLogRepository userLogRepository = AppUtils.getApplicationContext().getBean(UserLogRepository.class);
manxiaoqiang committed
23 24

    private UserRepository userRepository = AppUtils.getApplicationContext().getBean(UserRepository.class);
manxiaoqiang committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
    //操作用户
    private String operaAccount;
    //操作用户名
    private String accountName;
    //操作对象的类型:OperateObjectTypeEnum
    private String operateObjectType;
    //客户管理和系统账号管理是操作对象的账号,以后再加别的模块再定
    private String operateObject;
    //操作类型:“创建账号”“编辑账号”“录入缴费信息”“录入回访信息”“处理过期提醒”等等,如果都定下来有哪些,可以做一个字典
    private String operateType;
    //操作前的对象数据
    private String oldObject;
    //操作后的对象数据
    private String newObject;
    //为了获取ip及解析地点
    private HttpServletRequest request;

    /**
     * 传入内容为对象
     * UserLogThread userlog = new UserLogThread("zxy@reyun.com", "zxy", OperateObjectTypeEnum.CUSTOMER.getKey(), "app", "查看app", request);
     * userlog.start();
     */
    public NewUserLogThread(String operaAccount, String accountName, String operateObjectType, String operateObject, String operateType, String oldObject, String newObject, HttpServletRequest request) {
        this.operaAccount = operaAccount;
        this.accountName = accountName;
        this.operateObjectType = operateObjectType;
        this.operateObject = operateObject;
        this.operateType = operateType;
        this.oldObject = oldObject;
        this.newObject = newObject;
        this.request = request;
    }


    @Override
    public void run()
    {
        try
        {
            UserLog audit = new UserLog();
            audit.setOperaAccount(this.operaAccount);
            audit.setAccountName(this.accountName);
            audit.setOperateObjectType(this.operateObjectType);
            audit.setOperateObject(this.operateObject);
            audit.setOperateTime(DateUtil.format(new Date(), DateUtil.C_TIME_PATTON_DEFAULT));
            audit.setOperateType(this.operateType);
            audit.setOldObject(this.oldObject);
            audit.setNewObject(this.newObject);
manxiaoqiang committed
73 74
            User user = userRepository.findByEmail(this.operaAccount);
            audit.setRole(user.getRole());
manxiaoqiang committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91

            if (this.request != null) {
                String ipAddr = IPAddrUtil.getIpAddrNew(request);
                audit.setIp(ipAddr);
                if(ValidateUtil.isValid(ipAddr)){
                    String locationFromIpAddr = IPAddrUtil.getLocationFromIpAddr(ipAddr);
                    audit.setLocation(locationFromIpAddr);
                }
            }


            userLogRepository.save(audit);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}