Commit 500241c7 authored by hezhen's avatar hezhen

123

parent e3d84752
package com.xxfc.platform.summit.constant;
public class RedisKey {
/**
*验证码key前缀
*/
public static final String CONSTANT_CODE_PREFIX ="bm:info:";
}
package com.xxfc.platform.summit.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author Administrator
*/
@Data
@Table(name = "fc_activity_bm")
public class ActivityBm {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
@Column(name = "activity_id")
@ApiModelProperty("活动id")
private Integer activityId;
@Column(name = "name")
@ApiModelProperty("报名人姓名")
private String name;
@Column(name = "phone")
@ApiModelProperty("报名人电话")
private String phone;
@Column(name = "id_number")
@ApiModelProperty("身份证号")
private String idNumber;
@Column(name = "inviter")
@ApiModelProperty("邀请人")
private String inviter;
@Column(name = "crt_time")
@ApiModelProperty("创建时间")
private Long crtTime;
@Column(name = "upd_time")
@ApiModelProperty("创建时间")
private Long updTime;
@Column(name = "is_del")
@ApiModelProperty("是否删除:0-正常;1-删除")
private Integer isDel;
}
package com.xxfc.platform.summit.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* @author Administrator
*/
@Data
@Table(name = "ims_meepo_xianchang_user")
public class User {
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
@Column(name = "weid")
@ApiModelProperty("主公众号id")
private Integer weId;
@Column(name = "rid")
@ApiModelProperty("规则ID")
private Integer rId;
@Column(name = "openid")
@ApiModelProperty("微信openid")
private String openId;
@Column(name = "oauth_openid")
@ApiModelProperty("待定")
private String oauthOpenid;
@Column(name = "mobile")
@ApiModelProperty("电话")
private String mobile;
@Column(name = "nick_name")
@ApiModelProperty("昵称")
private String nickName;
@Column(name = "avatar")
@ApiModelProperty("头像")
private String avatar;
@Column(name = "sex")
@ApiModelProperty("性别")
private String sex;
@Column(name = "group")
@ApiModelProperty("分组")
private Integer group;
@Column(name = "status")
@ApiModelProperty("状态")
private Integer status;
@Column(name = "isblacklist")
@ApiModelProperty("待定")
private Integer isBlacklist;
@Column(name = "can_lottory")
@ApiModelProperty("待定")
private Integer canLottory;
@Column(name = "can_dt")
@ApiModelProperty("待定")
private Integer canDt;
@Column(name = "nd_id")
@ApiModelProperty("待定")
private Integer ndId;
@Column(name = "qd_status")
@ApiModelProperty("签到状态")
private Integer qdStatus;
@Column(name = "is_manager")
@ApiModelProperty("待定")
private Integer isManager;
@Column(name = "money")
@ApiModelProperty("分组")
private BigDecimal money;
@Column(name = "createtime")
@ApiModelProperty("创建时间")
private Integer createtime;
@Column(name = "lastjointime")
@ApiModelProperty("待定")
private Integer lastjointime;
@Column(name = "had_luru")
@ApiModelProperty("待定")
private Integer hadLuru;
}
......@@ -26,6 +26,7 @@ import javax.servlet.http.HttpSession;
public class WeixinController {
public static final String WECHAT_AUTOLOGIN_CALLBACKURL_KEY = "callback";
public static final String WECHAT_REDIS_KEY = "key";
@Autowired
WeixinService weixinService;
......@@ -39,14 +40,15 @@ public class WeixinController {
@RequestMapping(value ="/app/unauth/wxLogin",method = RequestMethod.GET)
@IgnoreUserToken
public String index(@RequestParam(value = "redirec_url")String redirec_url){
public String index(@RequestParam(value = "redirec_url")String redirec_url,
@RequestParam(value = "key")String key){
log.info("-----微信wxLogin---redirec_url=="+redirec_url);
if (StringUtils.isBlank(redirec_url)){
redirec_url="";
}
try {
String encrypt_curr_url = Base64.encode(redirec_url.getBytes("utf-8"));
redirec_url=url+"?" + WECHAT_AUTOLOGIN_CALLBACKURL_KEY+ "=" + encrypt_curr_url;
redirec_url=url+"?" + WECHAT_AUTOLOGIN_CALLBACKURL_KEY+ "=" + encrypt_curr_url+"&"+WECHAT_REDIS_KEY+"="+key;
String oauth_api=weixinService.getAuthorize(redirec_url);
return String.format("redirect:"+oauth_api);
}catch (Exception e){
......@@ -63,19 +65,20 @@ public class WeixinController {
* @return
*/
@GetMapping(value = "/app/unauth/userInfo")
public String getUserInformation(String code, String callback, HttpServletRequest request) {
public String getUserInformation(String code, String callback,String key, HttpServletRequest request) {
log.info("-----微信回调userInfo---code=="+code+"----redirec_url==="+callback);
if (StringUtils.isBlank(code)){
log.info("----code为空---");
return String.format("code为空");
}
String openid = null;
String access_token = null;
try {
JSONObject jsonData = weixinService.getAccessToken(code);
String openid = jsonData.getString("openid");
String access_token = jsonData.getString("access_token");
openid = jsonData.getString("openid");
access_token = jsonData.getString("access_token");
String refresh_token = jsonData.getString("refresh_token");
log.info("-----微信回调userInfo---openid=="+openid+"----access_token==="+access_token);
HttpSession session = request.getSession();
//验证access_token是否失效
JSONObject validateData = weixinService.getValidateData(access_token, openid);
if (!"0".equals(validateData.getString("errcode"))){
......@@ -83,21 +86,39 @@ public class WeixinController {
JSONObject refreshData= weixinService.getRefreshToken(refresh_token);
access_token = refreshData.getString("access_token");
}
}catch (Exception e){
e.printStackTrace();
log.info("网络异常===" + e.getMessage());
return String.format("网络异常");
}
try {
// 获取微信用户基本信息
JSONObject userinfo_json = weixinService.getUserInfo(access_token,openid);
if (userinfo_json == null || StringUtils.isNotBlank(userinfo_json.getString("errcode"))) {
log.info("调用微信用户基本信息接口失败");
return String.format("调用微信用户基本信息接口失败");
}
String headimgurl = userinfo_json.getString("headimgurl");
String unionid = userinfo_json.getString("unionid");
String nickName = userinfo_json.getString("nickname");
String sex = userinfo_json.getString("sex");
UserInfo userInfo=new UserInfo();
userInfo.setOpenId(openid);
log.info("UserInfo===" + JSONObject.toJSONString(userInfo));
String encode = Base64.encode(JSONObject.toJSONString(userInfo));
HttpSession session = request.getSession();
session.removeAttribute(frontSessionKey);
session.setAttribute(frontSessionKey, encode);
callback =new String(Base64.decode(callback), "utf-8");
log.info("callback===" + callback);
return String.format("redirect:"+callback);
}catch (Exception e){
e.printStackTrace();
log.info("网络异常===" + e.getMessage());
return String.format("网络异常");
} catch (Exception e) {
log.info("调用微信用户基本信息接口失败", e);
return String.format("调用微信用户基本信息接口失败:");
}
return String.format("redirect:"+callback);
}
}
package com.xxfc.platform.summit.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSON;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.UserAgentUtil;
import com.xxfc.platform.summit.constant.RedisKey;
import com.xxfc.platform.summit.service.WeixinService;
import com.xxfc.platform.summit.vo.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.alibaba.fastjson.JSONObject;
import java.io.PrintWriter;
import java.io.BufferedReader;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
* 微信登陆拦截器
......@@ -37,6 +37,9 @@ public class WeChatH5LoginInterceoptor extends HandlerInterceptorAdapter {
@Autowired
WeixinService weixinService;
@Autowired
private RedisTemplate userRedisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......@@ -47,20 +50,53 @@ public class WeChatH5LoginInterceoptor extends HandlerInterceptorAdapter {
log.info("address:" + request.getRequestURL().toString());
log.info("params:" + request.getQueryString());
boolean isWx = UserAgentUtil.isWexinBrowser(request);
if (isWx) {
String frontSessionValue1 = (String) session.getAttribute(frontSessionKey);
if (StringUtils.isNotBlank(frontSessionValue1)) {
return true;
}
String redisKey=redisBmInfo(request);
Map<String,Object> result=new HashMap<>();
JSONObject json = new JSONObject();
json.put("status",1001);
json.put("data","https://dev.dfangche.com/api/summit/auth/app/unauth/wxLogin?redirec_url=https://dev.dfangche.com/h5/appHtml/view/wxh5/index.html");
response.getWriter().write(json.toJSONString());
if (StringUtils.isNotBlank(redisKey)){
json.put("key",redisKey);
}
json.put("url","https://dev.dfangche.com/api/summit/auth/app/unauth/wxLogin?redirec_url=https://dev.dfangche.com/h5/appHtml/view/wxh5/index.html");
result.put("data",json);
result.put("status",1001);
response.getWriter().write(result.toString());
return false;
}
return true;
}
public String redisBmInfo(HttpServletRequest request)throws Exception{
request.setCharacterEncoding("UTF-8");
StringBuffer jb = new StringBuffer();
String line = null;
try
{
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
}
catch (Exception e)
{
e.printStackTrace();
}
String redisLockKey=null;
if (StringUtils.isNotBlank(jb)){
redisLockKey= RedisKey.CONSTANT_CODE_PREFIX + UUID.randomUUID();
Boolean suc = userRedisTemplate.opsForValue().setIfAbsent(redisLockKey, jb);
if (suc) {
userRedisTemplate.expire(redisLockKey, 5, TimeUnit.MINUTES);//5分钟内过期
}
}
return redisLockKey;
}
}
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