Commit 56cb2880 by zhangxiaoyan

add user log thread

parent fe4b325f
...@@ -2,6 +2,7 @@ package common.controller; ...@@ -2,6 +2,7 @@ package common.controller;
import common.model.AppInfo; import common.model.AppInfo;
import common.service.AppService; import common.service.AppService;
import dic.OperateObjectTypeEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
...@@ -11,6 +12,9 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -11,6 +12,9 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import util.ResultModel; import util.ResultModel;
import util.StringUtil; import util.StringUtil;
import util.UserLogThread;
import javax.servlet.http.HttpServletRequest;
/** /**
* Created by zxy on 2017/12/27. * Created by zxy on 2017/12/27.
...@@ -31,7 +35,6 @@ public class AppController ...@@ -31,7 +35,6 @@ public class AppController
app.setFirstCate(firstCate); app.setFirstCate(firstCate);
app.setSecondCate(secondCate); app.setSecondCate(secondCate);
app.setReyun(reyun); app.setReyun(reyun);
return ResultModel.OK(appService.findAppList(app, pageNum, pageSize)); return ResultModel.OK(appService.findAppList(app, pageNum, pageSize));
} }
......
package common.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
/**
* Created by zxy on 2017/12/27.
*/
@Entity
public class UserLog
{
private Long id;
private Date operateTime;
private String operaAccount;
private String accountName;
private String ip;
private String operateObjectType;
private String operateObject;
private String operateType;
private String location;
@Id
@GeneratedValue
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public Date getOperateTime()
{
return operateTime;
}
public void setOperateTime(Date operateTime)
{
this.operateTime = operateTime;
}
public String getOperaAccount()
{
return operaAccount;
}
public void setOperaAccount(String operaAccount)
{
this.operaAccount = operaAccount;
}
public String getAccountName()
{
return accountName;
}
public void setAccountName(String accountName)
{
this.accountName = accountName;
}
public String getIp()
{
return ip;
}
public void setIp(String ip)
{
this.ip = ip;
}
public String getOperateObjectType()
{
return operateObjectType;
}
public void setOperateObjectType(String operateObjectType)
{
this.operateObjectType = operateObjectType;
}
public String getOperateObject()
{
return operateObject;
}
public void setOperateObject(String operateObject)
{
this.operateObject = operateObject;
}
public String getOperateType()
{
return operateType;
}
public void setOperateType(String operateType)
{
this.operateType = operateType;
}
public String getLocation()
{
return location;
}
public void setLocation(String location)
{
this.location = location;
}
@Override
public String toString()
{
return "UserLog{" +
"id=" + id +
", operateTime=" + operateTime +
", operaAccount='" + operaAccount + '\'' +
", accountName='" + accountName + '\'' +
", ip='" + ip + '\'' +
", operateObjectType='" + operateObjectType + '\'' +
", operateObject='" + operateObject + '\'' +
", operateType='" + operateType + '\'' +
'}';
}
}
package common.repository;
import common.model.UserLog;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* Created by zxy on 2017/12/27.
*/
public interface UserLogRepository extends JpaRepository<UserLog, Long>
{
}
package dic;
/**
* Created by zxy on 17/12/27.
* desc:操作对象类型
*/
public enum OperateObjectTypeEnum
{
CUSTOMER("customer","客户"),
INNERUSER("inner_user","系统账号");
private String key;
private String value;
OperateObjectTypeEnum(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
package util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.Charset;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
class IP
{
public static boolean enableFileWatch = false;
private static int offset;
private static int[] index = new int[256];
private static ByteBuffer dataBuffer;
private static ByteBuffer indexBuffer;
private static Long lastModifyTime = 0L;
private static File ipFile;
private static ReentrantLock lock = new ReentrantLock();
public static void load(String filename) {
ipFile = new File(filename);
load();
if (enableFileWatch) {
watch();
}
}
public static void load(String filename, boolean strict) throws Exception {
ipFile = new File(filename);
if (strict) {
int contentLength = Long.valueOf(ipFile.length()).intValue();
if (contentLength < 512 * 1024) {
throw new Exception("ip data file error.");
}
}
load();
if (enableFileWatch) {
watch();
}
}
public static String[] find(String ip) {
int ip_prefix_value = new Integer(ip.substring(0, ip.indexOf(".")));
long ip2long_value = ip2long(ip);
int start = index[ip_prefix_value];
int max_comp_len = offset - 1028;
long index_offset = -1;
int index_length = -1;
byte b = 0;
for (start = start * 8 + 1024; start < max_comp_len; start += 8) {
if (int2long(indexBuffer.getInt(start)) >= ip2long_value) {
index_offset = bytesToLong(b, indexBuffer.get(start + 6), indexBuffer.get(start + 5), indexBuffer.get(start + 4));
index_length = 0xFF & indexBuffer.get(start + 7);
break;
}
}
byte[] areaBytes;
lock.lock();
try {
dataBuffer.position(offset + (int) index_offset - 1024);
areaBytes = new byte[index_length];
dataBuffer.get(areaBytes, 0, index_length);
} finally {
lock.unlock();
}
return new String(areaBytes, Charset.forName("UTF-8")).split("\t", -1);
}
private static void watch() {
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
long time = ipFile.lastModified();
if (time > lastModifyTime) {
lastModifyTime = time;
load();
}
}
}, 1000L, 5000L, TimeUnit.MILLISECONDS);
}
private static void load() {
lastModifyTime = ipFile.lastModified();
FileInputStream fin = null;
lock.lock();
try {
dataBuffer = ByteBuffer.allocate(Long.valueOf(ipFile.length()).intValue());
fin = new FileInputStream(ipFile);
int readBytesLength;
byte[] chunk = new byte[4096];
while (fin.available() > 0) {
readBytesLength = fin.read(chunk);
dataBuffer.put(chunk, 0, readBytesLength);
}
dataBuffer.position(0);
int indexLength = dataBuffer.getInt();
byte[] indexBytes = new byte[indexLength];
dataBuffer.get(indexBytes, 0, indexLength - 4);
indexBuffer = ByteBuffer.wrap(indexBytes);
indexBuffer.order(ByteOrder.LITTLE_ENDIAN);
offset = indexLength;
int loop = 0;
while (loop++ < 256) {
index[loop - 1] = indexBuffer.getInt();
}
indexBuffer.order(ByteOrder.BIG_ENDIAN);
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (fin != null) {
fin.close();
}
} catch (IOException e) {
e.printStackTrace();
}
lock.unlock();
}
}
private static long bytesToLong(byte a, byte b, byte c, byte d) {
return int2long((((a & 0xff) << 24) | ((b & 0xff) << 16) | ((c & 0xff) << 8) | (d & 0xff)));
}
private static int str2Ip(String ip) {
String[] ss = ip.split("\\.");
int a, b, c, d;
a = Integer.parseInt(ss[0]);
b = Integer.parseInt(ss[1]);
c = Integer.parseInt(ss[2]);
d = Integer.parseInt(ss[3]);
return (a << 24) | (b << 16) | (c << 8) | d;
}
private static long ip2long(String ip) {
return int2long(str2Ip(ip));
}
private static long int2long(int i) {
long l = i & 0x7fffffffL;
if (i < 0) {
l |= 0x080000000L;
}
return l;
}
}
package util;
import com.google.common.base.Strings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
/**
* Created by nolan on 16/9/22.
* description: IP相关服务类,支持ip地址的获取、地理位置转换.
*/
public class IPAddrUtil
{
protected static Logger logger = LoggerFactory.getLogger(IPAddrUtil.class);
static {
IP.load(IPAddrUtil.class.getClassLoader().getResource("17monipdb.dat").getFile());
}
/**
* 获取IP地址
*
* @param httpServletRequest 请求实体
* @return
*/
public static String getIpAddr(HttpServletRequest httpServletRequest)
{
final String header = httpServletRequest.getHeader("x-forwarded-for");
if (Strings.isNullOrEmpty(header)) {
return "";
}
String[] ipStr = header.split(",");
String ip = ipStr[ipStr.length - 1].replace(" ", "");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getRemoteAddr();
}
return ip;
}
/**
* 获取IP地址
*
* @param httpServletRequest 请求实体
* @return
*/
public static String getIpAddrNew(HttpServletRequest httpServletRequest) {
if (httpServletRequest.getHeader("x-forwarded-for") == null) {
return httpServletRequest.getRemoteAddr();
}
String[] ipStr = httpServletRequest.getHeader("x-forwarded-for").split(",");
String ip=ipStr[ipStr.length-1].replace(" ","");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = httpServletRequest.getRemoteAddr();
}
return ip;
}
/**
* 根据ip地址转换成对应省份
*
* @param ipAddr ip地址
* @return
*/
public static String getLocationFromIpAddr(String ipAddr) {
if (ipAddr == null || ipAddr.isEmpty()) {
return "unknown";
}
try {
String[] tmp = IP.find(ipAddr);
return String.format("%s", tmp[1]);
} catch (Exception e) {
logger.error("fail to parse ip:" + ipAddr);
return "unknown";
}
}
/**
* 根据ip地址转换成对应地理位置
*
* @param ipAddr ip地址
* @return
*/
public static String getAllLocationFromIpAddr(String ipAddr) {
if (ipAddr == null || ipAddr.isEmpty()) {
return "unknown-unknown-unknown";
}
try {
String[] tmp = IP.find(ipAddr);
return String.format("%s-%s-%s", tmp[0],tmp[1],tmp[2]);
} catch (Exception e) {
logger.error("fail to parse ip:" + ipAddr);
return "unknown-unknown-unknown";
}
}
}
package util;
import common.context.AppUtils;
import common.model.UserLog;
import common.repository.UserLogRepository;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
/**
* Created by zxy on 2017/12/15.
*/
public class UserLogThread
extends Thread
{
protected Logger logger = LoggerFactory.getLogger(UserLogThread.class);
private UserLogRepository userLogRepository = AppUtils.getApplicationContext().getBean(UserLogRepository.class);
private String operaAccount;
private String accountName;
private String operateObjectType;
private String operateObject;
private String operateType;
private HttpServletRequest request;
/**
* 传入内容为对象
* UserLogThread userlog = new UserLogThread("zxy@reyun.com", "zxy", OperateObjectTypeEnum.CUSTOMER.getKey(), "app", "查看app", request);
* userlog.start();
*/
public UserLogThread(String operaAccount, String accountName, String operateObjectType, String operateObject, String operateType, HttpServletRequest request)
{
this.operaAccount = operaAccount;
this.accountName = accountName;
this.operateObjectType = operateObjectType;
this.operateObject = operateObject;
this.operateType = operateType;
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(new Date());
audit.setOperateType(this.operateType);
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();
}
}
}
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<task:scheduled-tasks> <task:scheduled-tasks>
<!--//定时同步短链数据(每5分钟执行一次)--> <!--//定时同步短链数据(每5分钟执行一次)-->
<task:scheduled ref="tkioAccountTask" method="task" cron="0 32 19 * * ?"/> <task:scheduled ref="tkioAccountTask" method="task" cron="0 26 10 * * ?"/>
</task:scheduled-tasks> </task:scheduled-tasks>
<bean id="SyncAppDataTask" class="tkio.task.SyncAppDataTask"></bean> <bean id="SyncAppDataTask" class="tkio.task.SyncAppDataTask"></bean>
...@@ -22,6 +22,6 @@ ...@@ -22,6 +22,6 @@
<task:scheduled-tasks> <task:scheduled-tasks>
<!--//定时同步短链数据(每5分钟执行一次)--> <!--//定时同步短链数据(每5分钟执行一次)-->
<task:scheduled ref="SyncAppDataTask" method="syncAppData" cron="0 03 15 * * ?"/> <task:scheduled ref="SyncAppDataTask" method="syncAppData" cron="0 0 08 * * ?"/>
</task:scheduled-tasks> </task:scheduled-tasks>
</beans> </beans>
...@@ -22,8 +22,25 @@ ...@@ -22,8 +22,25 @@
<context:component-scan base-package="track" /> <context:component-scan base-package="track" />
<context:component-scan base-package="common" /> <context:component-scan base-package="common" />
<context:component-scan base-package="dmp" /> <context:component-scan base-package="dmp" />
<context:component-scan base-package="security" />
<context:property-placeholder location="classpath:persistence.properties"/> <context:property-placeholder location="classpath:persistence.properties"/>
<context:property-placeholder location="classpath:redis.properties" />
<!--Redis配置-->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300" />
<property name="maxTotal" value="600" />
<property name="maxWaitMillis" value="1000"></property>
<property name="testOnBorrow" value="true" />
</bean>
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:hostName="192.168.2.57" p:port="6379" p:poolConfig-ref="poolConfig"/>
<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<!--//Redis配置 -->
<bean id="parentDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <bean id="parentDataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="${dataSource.driverClassName}"/> <property name="driverClassName" value="${dataSource.driverClassName}"/>
......
# Redis common settings
redis.key.validtime=120
redis.ip.requesttimes=5
redis.ip.unknown.requesttimes=5
redis.maxIdle=300
redis.testOnBorrow=true
# token
redis.surl.host=192.168.2.57
redis.surl.port=6379
# event
redis.event.host=192.168.2.57
redis.event.port=6379
redis.event.database=0
common\model\BackVisit.class
security\TokenManager.class
tkio\controller\TkioAccountController.class
tkio\model\UserLog.class
dmp\model\TagCrawlerAppsWandoujia.class
util\ValidateUtil.class
tkio\repository\CampaignRepository.class
util\HttpClientUtil.class
common\model\Auth.class
tkio\repository\AccountRepository.class
common\model\Menu.class
exception\GlobalExceptionAdvice.class
tkio\model\Campaign.class
security\RedisTokenManager.class
tkio\model\Account.class
security\AbstractTokenManager.class
common\model\UserLog.class
security\exception\MethodNotSupportException.class
tkio\repository\SalesManLeaderRepository.class
tkio\model\RoleAuth.class
common\service\impl\AppServiceImpl$1.class
common\controller\UserController.class
exception\TipException.class
common\context\AppUtils.class
util\RedisUtilNew.class
tkio\task\SyncAppDataTask.class
common\model\User.class
tkio\repository\IsNotifiedRepository.class
tkio\service\impl\TkioAccountServiceImpl.class
util\DateUtil.class
common\model\AppCategory.class
tkio\repository\ChannelRepository.class
security\RedisLoginStatusManager.class
dic\RoleTypeEnum.class
common\repository\AppInfoRepository.class
tkio\model\Channel.class
common\service\impl\MenuServiceImpl.class
common\repository\UserLogRepository.class
common\model\Account4Web.class
util\IPAddrUtil.class
common\model\Reminder.class
common\repository\AuthRepository.class
common\controller\MenuController.class
util\MailUtils.class
exception\TransferCurrentAccountException.class
common\repository\Account4WebRepository.class
common\repository\MenuRepository.class
common\model\City.class
common\service\impl\AppServiceImpl.class
common\repository\ReminderRepository.class
util\StringUtil.class
security\interceptor\AuthorizationInterceptor.class security\interceptor\AuthorizationInterceptor.class
security\annotation\CurrentAccount.class security\annotation\CurrentAccount.class
tkio\model\UserLog.class
common\model\AppInfo.class common\model\AppInfo.class
common\service\impl\UserServiceImpl.class common\service\impl\UserServiceImpl.class
util\IP.class
exception\NotFoundException.class exception\NotFoundException.class
tkio\model\RoleAuthDetail.class tkio\model\RoleAuthDetail.class
util\CharacterUtils.class util\CharacterUtils.class
tkio\repository\PackageTypeRepository.class tkio\repository\PackageTypeRepository.class
util\Constant.class util\Constant.class
dmp\model\TagCrawlerAppsWandoujia.class common\repository\BackVisitRepository.class
util\ValidateUtil.class
util\HttpClientUtil.class
common\repository\RoleTypeRepository.class common\repository\RoleTypeRepository.class
common\model\Auth.class
tkio\repository\AccountRepository.class
tkio\service\AccountFlowRestrictService.class tkio\service\AccountFlowRestrictService.class
util\UserLogThread.class
tkio\model\DataAuth.class tkio\model\DataAuth.class
common\model\Menu.class common\model\KeyValue.class
exception\GlobalExceptionAdvice.class
tkio\model\Account.class
common\repository\UserRepository.class common\repository\UserRepository.class
util\ResultModel.class util\ResultModel.class
dic\RoleEnum.class dic\RoleEnum.class
util\CipherUtil.class util\CipherUtil.class
tkio\model\App.class tkio\model\App.class
security\resolvers\LoginUserMethodArgumentsResolver.class security\resolvers\LoginUserMethodArgumentsResolver.class
tkio\repository\SalesManLeaderRepository.class tkio\service\TkioAccountService.class
tkio\model\RoleAuth.class
common\service\impl\AppServiceImpl$1.class
common\controller\UserController.class
exception\TipException.class
common\context\AppUtils.class
tkio\task\SyncAppDataTask.class
common\model\RoleType.class common\model\RoleType.class
common\model\User.class
tkio\task\AccountTask.class tkio\task\AccountTask.class
security\annotation\Authorization.class security\annotation\Authorization.class
tkio\repository\IsNotifiedRepository.class util\IP$1.class
util\DateUtil.class
common\repository\CodeRepository.class common\repository\CodeRepository.class
tkio\model\SalesManLeader.class tkio\model\SalesManLeader.class
common\controller\AppController.class common\controller\AppController.class
common\model\AppCategory.class
common\service\MenuService.class common\service\MenuService.class
common\repository\AppCategoryRepository.class common\repository\AppCategoryRepository.class
tkio\repository\AppRepository.class tkio\repository\AppRepository.class
dic\RoleTypeEnum.class
common\repository\AppInfoRepository.class
dmp\repository\TagCrawlerAppsWandoujiaRepository.class dmp\repository\TagCrawlerAppsWandoujiaRepository.class
common\service\impl\MenuServiceImpl.class security\RedisLoginStatusManagerImpl.class
tkio\model\AccountRestrict4Web.class tkio\model\AccountRestrict4Web.class
common\model\Account4Web.class dic\OperateObjectTypeEnum.class
common\service\UserService.class common\service\UserService.class
common\repository\AuthRepository.class
common\service\AppService.class common\service\AppService.class
common\controller\MenuController.class
tkio\service\impl\AccountFlowRestrictServiceImpl.class tkio\service\impl\AccountFlowRestrictServiceImpl.class
common\repository\CityRepository.class common\repository\CityRepository.class
common\model\Code.class common\model\Code.class
util\MailUtils.class
exception\TransferCurrentAccountException.class
common\repository\Account4WebRepository.class
common\repository\MenuRepository.class
common\model\City.class
common\service\impl\AppServiceImpl.class
common\controller\LoginController.class common\controller\LoginController.class
common\repository\PaymentRepository.class
tkio\model\PackageType.class tkio\model\PackageType.class
common\model\Payment.class
common\model\Email.class common\model\Email.class
security\cors\CorsFilter.class
util\ResultStatus.class util\ResultStatus.class
util\StringUtil.class
tkio\model\IsNotified.class tkio\model\IsNotified.class
tkio\model\Auth.class tkio\model\Auth.class
E:\IDEA_workspace\manager\src\main\java\tkio\repository\SalesManLeaderRepository.java E:\IDEA_workspace\manager\src\main\java\tkio\repository\SalesManLeaderRepository.java
E:\IDEA_workspace\manager\src\main\java\tkio\service\TkioAccountService.java
E:\IDEA_workspace\manager\src\main\java\security\interceptor\AuthorizationInterceptor.java E:\IDEA_workspace\manager\src\main\java\security\interceptor\AuthorizationInterceptor.java
E:\IDEA_workspace\manager\src\main\java\common\repository\CodeRepository.java E:\IDEA_workspace\manager\src\main\java\common\repository\CodeRepository.java
E:\IDEA_workspace\manager\src\main\java\util\CipherUtil.java
E:\IDEA_workspace\manager\src\main\java\util\Constant.java E:\IDEA_workspace\manager\src\main\java\util\Constant.java
E:\IDEA_workspace\manager\src\main\java\common\controller\UserController.java E:\IDEA_workspace\manager\src\main\java\common\controller\UserController.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\Account.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\RoleAuth.java
E:\IDEA_workspace\manager\src\main\java\util\ResultStatus.java E:\IDEA_workspace\manager\src\main\java\util\ResultStatus.java
E:\IDEA_workspace\manager\src\main\java\common\service\MenuService.java E:\IDEA_workspace\manager\src\main\java\security\RedisLoginStatusManagerImpl.java
E:\IDEA_workspace\manager\src\main\java\util\StringUtil.java
E:\IDEA_workspace\manager\src\main\java\tkio\service\AccountFlowRestrictService.java E:\IDEA_workspace\manager\src\main\java\tkio\service\AccountFlowRestrictService.java
E:\IDEA_workspace\manager\src\main\java\common\service\impl\UserServiceImpl.java E:\IDEA_workspace\manager\src\main\java\common\service\impl\UserServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\security\RedisTokenManager.java
E:\IDEA_workspace\manager\src\main\java\common\repository\UserRepository.java E:\IDEA_workspace\manager\src\main\java\common\repository\UserRepository.java
E:\IDEA_workspace\manager\src\main\java\common\model\Email.java E:\IDEA_workspace\manager\src\main\java\common\model\Email.java
E:\IDEA_workspace\manager\src\main\java\tkio\task\AccountTask.java E:\IDEA_workspace\manager\src\main\java\tkio\task\AccountTask.java
E:\IDEA_workspace\manager\src\main\java\util\DateUtil.java E:\IDEA_workspace\manager\src\main\java\tkio\model\Campaign.java
E:\IDEA_workspace\manager\src\main\java\common\controller\AppController.java
E:\IDEA_workspace\manager\src\main\java\common\service\AppService.java E:\IDEA_workspace\manager\src\main\java\common\service\AppService.java
E:\IDEA_workspace\manager\src\main\java\util\ValidateUtil.java E:\IDEA_workspace\manager\src\main\java\util\ValidateUtil.java
E:\IDEA_workspace\manager\src\main\java\common\model\Auth.java
E:\IDEA_workspace\manager\src\main\java\security\resolvers\LoginUserMethodArgumentsResolver.java
E:\IDEA_workspace\manager\src\main\java\common\model\Menu.java
E:\IDEA_workspace\manager\src\main\java\common\repository\RoleTypeRepository.java
E:\IDEA_workspace\manager\src\main\java\common\repository\MenuRepository.java
E:\IDEA_workspace\manager\src\main\java\common\repository\AppInfoRepository.java
E:\IDEA_workspace\manager\src\main\java\common\service\impl\MenuServiceImpl.java E:\IDEA_workspace\manager\src\main\java\common\service\impl\MenuServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\common\service\UserService.java
E:\IDEA_workspace\manager\src\main\java\common\controller\LoginController.java E:\IDEA_workspace\manager\src\main\java\common\controller\LoginController.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\AccountRestrict4Web.java
E:\IDEA_workspace\manager\src\main\java\common\model\AppCategory.java E:\IDEA_workspace\manager\src\main\java\common\model\AppCategory.java
E:\IDEA_workspace\manager\src\main\java\common\repository\BackVisitRepository.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\RoleAuthDetail.java E:\IDEA_workspace\manager\src\main\java\tkio\model\RoleAuthDetail.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\SalesManLeader.java E:\IDEA_workspace\manager\src\main\java\tkio\model\SalesManLeader.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\AccountRepository.java
E:\IDEA_workspace\manager\src\main\java\common\context\AppUtils.java
E:\IDEA_workspace\manager\src\main\java\common\controller\MenuController.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\PackageType.java E:\IDEA_workspace\manager\src\main\java\tkio\model\PackageType.java
E:\IDEA_workspace\manager\src\main\java\exception\NotFoundException.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\DataAuth.java
E:\IDEA_workspace\manager\src\main\java\tkio\task\SyncAppDataTask.java E:\IDEA_workspace\manager\src\main\java\tkio\task\SyncAppDataTask.java
E:\IDEA_workspace\manager\src\main\java\security\exception\MethodNotSupportException.java
E:\IDEA_workspace\manager\src\main\java\util\IPAddrUtil.java
E:\IDEA_workspace\manager\src\main\java\util\HttpClientUtil.java E:\IDEA_workspace\manager\src\main\java\util\HttpClientUtil.java
E:\IDEA_workspace\manager\src\main\java\util\UserLogThread.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\Auth.java E:\IDEA_workspace\manager\src\main\java\tkio\model\Auth.java
E:\IDEA_workspace\manager\src\main\java\util\CharacterUtils.java
E:\IDEA_workspace\manager\src\main\java\dmp\model\TagCrawlerAppsWandoujia.java E:\IDEA_workspace\manager\src\main\java\dmp\model\TagCrawlerAppsWandoujia.java
E:\IDEA_workspace\manager\src\main\java\common\model\Code.java E:\IDEA_workspace\manager\src\main\java\common\model\Code.java
E:\IDEA_workspace\manager\src\main\java\common\model\City.java
E:\IDEA_workspace\manager\src\main\java\exception\GlobalExceptionAdvice.java E:\IDEA_workspace\manager\src\main\java\exception\GlobalExceptionAdvice.java
E:\IDEA_workspace\manager\src\main\java\security\annotation\CurrentAccount.java E:\IDEA_workspace\manager\src\main\java\security\annotation\CurrentAccount.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\UserLog.java E:\IDEA_workspace\manager\src\main\java\tkio\model\UserLog.java
E:\IDEA_workspace\manager\src\main\java\common\model\User.java E:\IDEA_workspace\manager\src\main\java\common\model\User.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\App.java
E:\IDEA_workspace\manager\src\main\java\common\repository\AppCategoryRepository.java
E:\IDEA_workspace\manager\src\main\java\dmp\repository\TagCrawlerAppsWandoujiaRepository.java
E:\IDEA_workspace\manager\src\main\java\common\model\RoleType.java E:\IDEA_workspace\manager\src\main\java\common\model\RoleType.java
E:\IDEA_workspace\manager\src\main\java\exception\TipException.java E:\IDEA_workspace\manager\src\main\java\exception\TipException.java
E:\IDEA_workspace\manager\src\main\java\util\ResultModel.java E:\IDEA_workspace\manager\src\main\java\util\ResultModel.java
E:\IDEA_workspace\manager\src\main\java\dic\RoleEnum.java E:\IDEA_workspace\manager\src\main\java\dic\RoleEnum.java
E:\IDEA_workspace\manager\src\main\java\common\model\Account4Web.java E:\IDEA_workspace\manager\src\main\java\common\model\Account4Web.java
E:\IDEA_workspace\manager\src\main\java\common\repository\CityRepository.java E:\IDEA_workspace\manager\src\main\java\common\repository\CityRepository.java
E:\IDEA_workspace\manager\src\main\java\dic\RoleTypeEnum.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\AppRepository.java E:\IDEA_workspace\manager\src\main\java\tkio\repository\AppRepository.java
E:\IDEA_workspace\manager\src\main\java\tkio\service\impl\AccountFlowRestrictServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\util\MailUtils.java E:\IDEA_workspace\manager\src\main\java\util\MailUtils.java
E:\IDEA_workspace\manager\src\main\java\common\service\impl\AppServiceImpl.java E:\IDEA_workspace\manager\src\main\java\common\model\Reminder.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\IsNotifiedRepository.java E:\IDEA_workspace\manager\src\main\java\tkio\repository\IsNotifiedRepository.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\PackageTypeRepository.java E:\IDEA_workspace\manager\src\main\java\tkio\repository\PackageTypeRepository.java
E:\IDEA_workspace\manager\src\main\java\common\model\AppInfo.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\IsNotified.java E:\IDEA_workspace\manager\src\main\java\tkio\model\IsNotified.java
E:\IDEA_workspace\manager\src\main\java\exception\TransferCurrentAccountException.java
E:\IDEA_workspace\manager\src\main\java\common\repository\AuthRepository.java E:\IDEA_workspace\manager\src\main\java\common\repository\AuthRepository.java
E:\IDEA_workspace\manager\src\main\java\common\repository\PaymentRepository.java
E:\IDEA_workspace\manager\src\main\java\common\model\UserLog.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\CampaignRepository.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\ChannelRepository.java
E:\IDEA_workspace\manager\src\main\java\util\CipherUtil.java
E:\IDEA_workspace\manager\src\main\java\security\TokenManager.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\Account.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\RoleAuth.java
E:\IDEA_workspace\manager\src\main\java\common\service\MenuService.java
E:\IDEA_workspace\manager\src\main\java\util\StringUtil.java
E:\IDEA_workspace\manager\src\main\java\security\cors\CorsFilter.java
E:\IDEA_workspace\manager\src\main\java\util\DateUtil.java
E:\IDEA_workspace\manager\src\main\java\common\controller\AppController.java
E:\IDEA_workspace\manager\src\main\java\common\model\Auth.java
E:\IDEA_workspace\manager\src\main\java\common\repository\UserLogRepository.java
E:\IDEA_workspace\manager\src\main\java\security\resolvers\LoginUserMethodArgumentsResolver.java
E:\IDEA_workspace\manager\src\main\java\common\model\Menu.java
E:\IDEA_workspace\manager\src\main\java\common\repository\RoleTypeRepository.java
E:\IDEA_workspace\manager\src\main\java\common\model\Payment.java
E:\IDEA_workspace\manager\src\main\java\common\repository\MenuRepository.java
E:\IDEA_workspace\manager\src\main\java\common\repository\AppInfoRepository.java
E:\IDEA_workspace\manager\src\main\java\common\service\UserService.java
E:\IDEA_workspace\manager\src\main\java\tkio\service\impl\TkioAccountServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\AccountRestrict4Web.java
E:\IDEA_workspace\manager\src\main\java\tkio\repository\AccountRepository.java
E:\IDEA_workspace\manager\src\main\java\util\IP.java
E:\IDEA_workspace\manager\src\main\java\common\context\AppUtils.java
E:\IDEA_workspace\manager\src\main\java\common\controller\MenuController.java
E:\IDEA_workspace\manager\src\main\java\tkio\controller\TkioAccountController.java
E:\IDEA_workspace\manager\src\main\java\common\repository\ReminderRepository.java
E:\IDEA_workspace\manager\src\main\java\exception\NotFoundException.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\DataAuth.java
E:\IDEA_workspace\manager\src\main\java\security\RedisLoginStatusManager.java
E:\IDEA_workspace\manager\src\main\java\util\CharacterUtils.java
E:\IDEA_workspace\manager\src\main\java\common\model\City.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\Channel.java
E:\IDEA_workspace\manager\src\main\java\common\model\KeyValue.java
E:\IDEA_workspace\manager\src\main\java\tkio\model\App.java
E:\IDEA_workspace\manager\src\main\java\common\repository\AppCategoryRepository.java
E:\IDEA_workspace\manager\src\main\java\dmp\repository\TagCrawlerAppsWandoujiaRepository.java
E:\IDEA_workspace\manager\src\main\java\dic\OperateObjectTypeEnum.java
E:\IDEA_workspace\manager\src\main\java\dic\RoleTypeEnum.java
E:\IDEA_workspace\manager\src\main\java\tkio\service\impl\AccountFlowRestrictServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\common\model\BackVisit.java
E:\IDEA_workspace\manager\src\main\java\common\service\impl\AppServiceImpl.java
E:\IDEA_workspace\manager\src\main\java\util\RedisUtilNew.java
E:\IDEA_workspace\manager\src\main\java\common\model\AppInfo.java
E:\IDEA_workspace\manager\src\main\java\exception\TransferCurrentAccountException.java
E:\IDEA_workspace\manager\src\main\java\security\AbstractTokenManager.java
E:\IDEA_workspace\manager\src\main\java\common\repository\Account4WebRepository.java E:\IDEA_workspace\manager\src\main\java\common\repository\Account4WebRepository.java
E:\IDEA_workspace\manager\src\main\java\security\annotation\Authorization.java E:\IDEA_workspace\manager\src\main\java\security\annotation\Authorization.java
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment