Commit e24d0747 authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

parents ec0dcaed c32d0a4b
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.auth; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.auth;
import com.github.wxiaoqi.security.api.vo.config.HeaderConfig; import com.github.wxiaoqi.security.api.vo.config.HeaderConfig;
import com.github.wxiaoqi.security.auth.feign.IUserService;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
......
...@@ -12,7 +12,7 @@ public class ClientConfiguration { ...@@ -12,7 +12,7 @@ public class ClientConfiguration {
private String clientId; private String clientId;
@Value("${client.secret}") @Value("${client.secret}")
private String clientSecret; private String clientSecret;
@Value("${client.token-header}") @Value("${client.token-header:Authorization}")
private String clientTokenHeader; private String clientTokenHeader;
public String getClientTokenHeader() { public String getClientTokenHeader() {
......
...@@ -5,6 +5,9 @@ import com.github.wxiaoqi.security.auth.service.AuthService; ...@@ -5,6 +5,9 @@ import com.github.wxiaoqi.security.auth.service.AuthService;
import com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationRequest; import com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationRequest;
import com.github.wxiaoqi.security.common.constant.RequestTypeConstants; import com.github.wxiaoqi.security.common.constant.RequestTypeConstants;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.ClientUtil;
import com.github.wxiaoqi.security.common.util.EntityUtils;
import com.github.wxiaoqi.security.common.util.IpUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -12,6 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -12,6 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -135,6 +141,7 @@ public class AuthController { ...@@ -135,6 +141,7 @@ public class AuthController {
@RequestParam(value="password",defaultValue="")String password, @RequestParam(value="password",defaultValue="")String password,
@RequestParam(value="type",defaultValue="1")Integer type)throws Exception{ @RequestParam(value="type",defaultValue="1")Integer type)throws Exception{
log.info(username+"----require login..."); log.info(username+"----require login...");
JSONObject data=appAuthService.tlogin(username,password,mobilecode,type); JSONObject data=appAuthService.tlogin(username,password,mobilecode,type);
if(data!=null&&data.getInteger("status")== ResultCode.SUCCESS_CODE){ if(data!=null&&data.getInteger("status")== ResultCode.SUCCESS_CODE){
JSONObject result=data.getJSONObject("data"); JSONObject result=data.getJSONObject("data");
......
...@@ -2,11 +2,15 @@ package com.github.wxiaoqi.security.auth.interceptor; ...@@ -2,11 +2,15 @@ package com.github.wxiaoqi.security.auth.interceptor;
import com.github.wxiaoqi.security.auth.configuration.ClientConfiguration; import com.github.wxiaoqi.security.auth.configuration.ClientConfiguration;
import com.github.wxiaoqi.security.auth.service.AuthClientService; import com.github.wxiaoqi.security.auth.service.AuthClientService;
import com.github.wxiaoqi.security.common.util.ClientUtil;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import feign.RequestTemplate; import feign.RequestTemplate;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/** /**
* Created by ace on 2017/9/12. * Created by ace on 2017/9/12.
...@@ -21,7 +25,9 @@ public class ClientTokenInterceptor implements RequestInterceptor { ...@@ -21,7 +25,9 @@ public class ClientTokenInterceptor implements RequestInterceptor {
@Override @Override
public void apply(RequestTemplate requestTemplate) { public void apply(RequestTemplate requestTemplate) {
try { try {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
requestTemplate.header(clientConfiguration.getClientTokenHeader(), authClientService.apply(clientConfiguration.getClientId(), clientConfiguration.getClientSecret())); requestTemplate.header(clientConfiguration.getClientTokenHeader(), authClientService.apply(clientConfiguration.getClientId(), clientConfiguration.getClientSecret()));
requestTemplate.header("userHost", ClientUtil.getClientIp(requestAttributes.getRequest()));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
......
package com.github.wxiaoqi.security.common.util;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
import javax.servlet.http.HttpServletRequest;
public class IpUtil {
/**
* 获取服务器本地的ip地址
*
* @return
*/
public static String getLocalIp() {
InetAddress ip = null;
String localIp = "127.0.0.2";
try {
Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
while (netInterfaces.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) netInterfaces
.nextElement();
ip = (InetAddress) ni.getInetAddresses().nextElement();
if (!ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {
localIp = ip.getHostAddress();
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return localIp;
}
/**
* 获取客户机的ip地址
*
* @return
*/
public static String getClientIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("http_client_ip");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
// 如果是多级代理,那么取第一个ip为客户ip
if (ip != null && ip.indexOf(",") != -1) {
ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
}
return ip;
}
public static long transIP2Int(String ip) {
String[] temp = ip.split("\\.");
int[] ipInt = new int[temp.length];
for (int i = 0; i < temp.length; i++) {
ipInt[i] = new Integer(temp[i]).intValue();
}
long ipNum = (long) ipInt[0] * 256 * 256 * 256 + ipInt[1] * 256 * 256
+ ipInt[2] * 256 + ipInt[3];
return ipNum;
}
}
...@@ -32,5 +32,26 @@ public class AppUserDetail { ...@@ -32,5 +32,26 @@ public class AppUserDetail {
private Long updatetime; private Long updatetime;
private Integer isdel; private Integer isdel;
private Integer channel; private Integer channel;
/**
* 省份编号
*/
@Column(name = "province_code")
private Integer provinceCode;
/**
* 市编号
*/
@Column(name = "city_code")
private Integer cityCode;
/**
* 创建ip
*/
@Column(name = "crt_host")
private String crtHost;
/**
* 更新ip
*/
@Column(name = "upd_host")
private String updHost;
} }
...@@ -35,39 +35,15 @@ public class AppUserLogin { ...@@ -35,39 +35,15 @@ public class AppUserLogin {
private String idNumber; private String idNumber;
@Column(name = "certification_status") @Column(name = "certification_status")
private Integer certificationStatus; private Integer certificationStatus;
/**
* 创建ip
*/
@Column(name = "crt_host")
private String crtHost;
/**
* 更新ip
*/
@Column(name = "upd_host")
private String updHost;
/** /**
* 最后登录ip * 最后登录ip
*/ */
@Column(name = "last_host") @Column(name = "last_host")
private String lastHost; private String lastHost;
/** /**
* 最后登录时间 * 最后登录时间
*/ */
@Column(name = "last_time") @Column(name = "last_time")
private Long lastTime; private Long lastTime;
/**
* 省份编号
*/
@Column(name = "province_code")
private Integer provinceCode;
/**
* 市编号
*/
@Column(name = "city_code")
private Integer cityCode;
} }
...@@ -4,12 +4,15 @@ import com.ace.cache.annotation.Cache; ...@@ -4,12 +4,15 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper;
import com.github.wxiaoqi.security.admin.rpc.service.AppPermissionService;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant;
import java.util.List; import java.util.List;
/** /**
...@@ -64,6 +67,8 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -64,6 +67,8 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
try { try {
BeanUtils.copyProperties(entity,userVo); BeanUtils.copyProperties(entity,userVo);
if(entity!=null){ if(entity!=null){
entity.setUpdHost(AppPermissionService.getIp());
entity.setUpdatetime(Instant.now().toEpochMilli());
super.updateSelectiveById(entity); super.updateSelectiveById(entity);
} }
} catch (Exception e) { } catch (Exception e) {
......
...@@ -148,6 +148,7 @@ public class AppUserRest { ...@@ -148,6 +148,7 @@ public class AppUserRest {
@RequestParam(value="password",defaultValue="")String password, @RequestParam(value="password",defaultValue="")String password,
@RequestParam(value="type",defaultValue="1")Integer type @RequestParam(value="type",defaultValue="1")Integer type
){ ){
return appPermissionService.login(username,password,mobilecode,type); return appPermissionService.login(username,password,mobilecode,type);
} }
......
...@@ -15,7 +15,6 @@ import com.github.wxiaoqi.security.api.vo.user.AppUserInfo; ...@@ -15,7 +15,6 @@ import com.github.wxiaoqi.security.api.vo.user.AppUserInfo;
import com.github.wxiaoqi.security.common.msg.BaseResponse; import com.github.wxiaoqi.security.common.msg.BaseResponse;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.EmojiFilter; import com.github.wxiaoqi.security.common.util.EmojiFilter;
import com.github.wxiaoqi.security.common.util.EntityUtils;
import com.github.wxiaoqi.security.common.util.VerificationUtils; import com.github.wxiaoqi.security.common.util.VerificationUtils;
import com.github.wxiaoqi.security.common.util.process.ResultCode; import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.util.process.SystemConfig; import com.github.wxiaoqi.security.common.util.process.SystemConfig;
...@@ -33,7 +32,12 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; ...@@ -33,7 +32,12 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -136,8 +140,9 @@ public class AppPermissionService { ...@@ -136,8 +140,9 @@ public class AppPermissionService {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
if (type == 0) { if (type == 0) {
AppUserLogin rsUserLogin = appUserLoginBiz.checkeUserLogin(phone); AppUserLogin rsUserLogin = appUserLoginBiz.checkeUserLogin(phone);
if (rsUserLogin != null) if (rsUserLogin != null) {
return JsonResultUtil.createFailedResult(ResultCode.EXIST_CODE, "用户已存在"); return JsonResultUtil.createFailedResult(ResultCode.EXIST_CODE, "用户已存在");
}
} else if (type == 1) { } else if (type == 1) {
AppUserLogin rsUserLogin = appUserLoginBiz.checkeUserLogin(phone); AppUserLogin rsUserLogin = appUserLoginBiz.checkeUserLogin(phone);
...@@ -164,8 +169,9 @@ public class AppPermissionService { ...@@ -164,8 +169,9 @@ public class AppPermissionService {
} }
log.info("调用短信发送接口返回值为:{}", mobilecode); log.info("调用短信发送接口返回值为:{}", mobilecode);
// 判断返回值是否为空,并且是否可以转换成JSONObject // 判断返回值是否为空,并且是否可以转换成JSONObject
if (StringUtils.isBlank(mobilecode)) if (StringUtils.isBlank(mobilecode)) {
return JsonResultUtil.createDefaultFail(); return JsonResultUtil.createDefaultFail();
}
try { try {
result.put("mobilecode", mobilecode); result.put("mobilecode", mobilecode);
String redisLockKey = RedisKey.CONSTANT_CODE_PREFIX + phone + mobilecode; String redisLockKey = RedisKey.CONSTANT_CODE_PREFIX + phone + mobilecode;
...@@ -211,9 +217,6 @@ public class AppPermissionService { ...@@ -211,9 +217,6 @@ public class AppPermissionService {
try { try {
Long now = System.currentTimeMillis() / 1000; Long now = System.currentTimeMillis() / 1000;
AppUserLogin appUserLogin = new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
//主要是ip地址
EntityUtils.setCreatAndUpdatInfo(appUserLogin);
setCreateIPInfo(appUserLogin);
appUserLogin.setUsername(username); appUserLogin.setUsername(username);
appUserLogin.setPassword(password); appUserLogin.setPassword(password);
...@@ -243,6 +246,8 @@ public class AppPermissionService { ...@@ -243,6 +246,8 @@ public class AppPermissionService {
rsUserDetail.setCreatetime(now); rsUserDetail.setCreatetime(now);
rsUserDetail.setUpdatetime(now); rsUserDetail.setUpdatetime(now);
rsUserDetail.setIsdel(0); rsUserDetail.setIsdel(0);
rsUserDetail.setCrtHost(getIp());
setCreateIPInfo(rsUserDetail);
appUserDetailBiz.insertSelective(rsUserDetail); appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid); log.error("注册:新增用户详情: " + userid);
//自动登录获取优惠卷 //自动登录获取优惠卷
...@@ -305,15 +310,19 @@ public class AppPermissionService { ...@@ -305,15 +310,19 @@ public class AppPermissionService {
data.put("userId", userid); data.put("userId", userid);
data.put("imUserId", userVo.getImUserid()); data.put("imUserId", userVo.getImUserid());
//更新登录时间 和 ip //更新登录时间 和 ip
AppUserLogin userLoign= new AppUserLogin(); String clientIp = getIp();
EntityUtils.setCreateInfo(userLoign); appUserLoginBiz.updateLoginInfo(userid,clientIp);
appUserLoginBiz.updateLoginInfo(userid,userLoign.getCrtHost());
} }
return data; return data;
} }
public static String getIp() {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
return requestAttributes.getRequest().getHeader("userHost");
}
/** /**
* 微信绑定/注册 * 微信绑定/注册
* *
...@@ -386,6 +395,8 @@ public class AppPermissionService { ...@@ -386,6 +395,8 @@ public class AppPermissionService {
userDetail.setCreatetime(now); userDetail.setCreatetime(now);
userDetail.setUpdatetime(now); userDetail.setUpdatetime(now);
userDetail.setIsdel(0); userDetail.setIsdel(0);
userDetail.setCrtHost(getIp());
setCreateIPInfo(userDetail);
appUserDetailBiz.insertSelective(userDetail); appUserDetailBiz.insertSelective(userDetail);
} /*else { } /*else {
userDetail.setId(userVo.getId()); userDetail.setId(userVo.getId());
...@@ -726,9 +737,6 @@ public class AppPermissionService { ...@@ -726,9 +737,6 @@ public class AppPermissionService {
try { try {
Long now = System.currentTimeMillis() / 1000; Long now = System.currentTimeMillis() / 1000;
AppUserLogin appUserLogin = new AppUserLogin(); AppUserLogin appUserLogin = new AppUserLogin();
//主要是ip地址
EntityUtils.setCreatAndUpdatInfo(appUserLogin);
setCreateIPInfo(appUserLogin);
appUserLogin.setUsername(username); appUserLogin.setUsername(username);
appUserLogin.setPassword(password); appUserLogin.setPassword(password);
appUserLogin.setIsdel(0); appUserLogin.setIsdel(0);
...@@ -748,6 +756,8 @@ public class AppPermissionService { ...@@ -748,6 +756,8 @@ public class AppPermissionService {
rsUserDetail.setIsdel(0); rsUserDetail.setIsdel(0);
//设置来源 //设置来源
rsUserDetail.setChannel(UserSourceEnum.APPLET.getCode()); rsUserDetail.setChannel(UserSourceEnum.APPLET.getCode());
rsUserDetail.setCrtHost(getIp());
setCreateIPInfo(rsUserDetail);
appUserDetailBiz.insertSelective(rsUserDetail); appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid); log.error("注册:新增用户详情: " + userid);
//上线绑定 //上线绑定
...@@ -817,11 +827,13 @@ public class AppPermissionService { ...@@ -817,11 +827,13 @@ public class AppPermissionService {
/** /**
* ip地址 信息解析 * ip地址 信息解析
* @param appUserLogin * @param appUserDetail
*/ */
public void setCreateIPInfo(AppUserLogin appUserLogin){ public void setCreateIPInfo(AppUserDetail appUserDetail){
String crtHost = appUserLogin.getCrtHost();
String crtHost = appUserDetail.getCrtHost();
String ipAddress = restTemplate.getForObject(String.format("%s%s", IPAddress.BASE_IP_PARSING_URL, crtHost), String.class); String ipAddress = restTemplate.getForObject(String.format("%s%s", IPAddress.BASE_IP_PARSING_URL, crtHost), String.class);
log.info("----setCreateIPInfo--crtHost========"+crtHost);
String data = JSONObject.parseObject(ipAddress).getString(IPAddress.BASE_DATA); String data = JSONObject.parseObject(ipAddress).getString(IPAddress.BASE_DATA);
JSONObject ipJsonObject = JSONObject.parseObject(data); JSONObject ipJsonObject = JSONObject.parseObject(data);
// Integer provinceCode = ipJsonObject.getInteger(IPAddress.PROVINCE_CODE); // Integer provinceCode = ipJsonObject.getInteger(IPAddress.PROVINCE_CODE);
...@@ -831,8 +843,8 @@ public class AppPermissionService { ...@@ -831,8 +843,8 @@ public class AppPermissionService {
String cityName = ipJsonObject.getString(IPAddress.CITY_NAME); String cityName = ipJsonObject.getString(IPAddress.CITY_NAME);
RegionDTO regionDTO = regionFeign.getRegionByCityName(cityName); RegionDTO regionDTO = regionFeign.getRegionByCityName(cityName);
if (null!=regionDTO){ if (null!=regionDTO){
appUserLogin.setProvinceCode(Integer.valueOf(String.valueOf(regionDTO.getParentId()))); appUserDetail.setProvinceCode(Integer.valueOf(String.valueOf(regionDTO.getParentId())));
appUserLogin.setCityCode(Integer.valueOf(String.valueOf(regionDTO.getId()))); appUserDetail.setCityCode(Integer.valueOf(String.valueOf(regionDTO.getId())));
} }
} }
......
...@@ -18,7 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -18,7 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.task.TaskExecutor; import org.springframework.core.task.TaskExecutor;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
......
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