Commit 8abd77cb by 罗承锋

修改微信登录方法

parent a28cb087
...@@ -45,8 +45,8 @@ public class GetPhoneCodeController extends BaseController { ...@@ -45,8 +45,8 @@ public class GetPhoneCodeController extends BaseController {
//登录验证码标识 //登录验证码标识
private static String CODE="getPhoneCode"; private static String CODE="getPhoneCode";
//5分钟内有效 //30分钟内有效
private static long CODETIME=1000 * 60*5; private static long CODETIME=1000 * 60*30;
//短信验证码错误key //短信验证码错误key
private static String ERRCODENAME="ERRCODENAME"; private static String ERRCODENAME="ERRCODENAME";
......
...@@ -5,15 +5,20 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,15 +5,20 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.winsun.auth.core.base.controller.BaseController; import com.winsun.auth.core.base.controller.BaseController;
import com.winsun.auth.core.base.tips.ErrorTip;
import com.winsun.auth.core.common.model.ResponseData; import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.auth.core.support.HttpKit;
import com.winsun.auth.core.util.DateUtil; import com.winsun.auth.core.util.DateUtil;
import com.winsun.auth.model.user.User; import com.winsun.auth.model.user.User;
import com.winsun.bean.HhrUser; import com.winsun.bean.HhrUser;
import com.winsun.bean.School; import com.winsun.bean.School;
import com.winsun.bean.SysUser; import com.winsun.bean.SysUser;
import com.winsun.item.core.shiro.ShiroKit; import com.winsun.item.core.shiro.ShiroKit;
import com.winsun.item.core.util.AccLoginUtil;
import com.winsun.item.core.util.IPUtils;
import com.winsun.item.core.util.ResponseEntity; import com.winsun.item.core.util.ResponseEntity;
import com.winsun.item.modular.system.service.IUserService; import com.winsun.item.modular.system.service.IUserService;
import com.winsun.item.modular.system.service.impl.AccServiceImpl;
import com.winsun.item.util.LoginUtils; import com.winsun.item.util.LoginUtils;
import com.winsun.mapper.HhrUserMapper; import com.winsun.mapper.HhrUserMapper;
import com.winsun.mapper.SchoolMapper; import com.winsun.mapper.SchoolMapper;
...@@ -23,10 +28,14 @@ import com.winsun.utils.*; ...@@ -23,10 +28,14 @@ import com.winsun.utils.*;
import lombok.extern.slf4j.Slf4j; 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.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
...@@ -59,12 +68,15 @@ public class LoginPwdController extends BaseController { ...@@ -59,12 +68,15 @@ public class LoginPwdController extends BaseController {
private static String ERRCODENAME = "ForgeERRCODENAME"; private static String ERRCODENAME = "ForgeERRCODENAME";
private static long CODETIME = 1000 * 60 * 5; private static long CODETIME = 1000 * 60 * 30;
private static int ERRACCOUNT = 10; private static int ERRACCOUNT = 10;
private static String APPID = "wxfc18f5186b729d15"; @Value("${weixin.appid}")
private static String APPSECRET = "122278f3fb555468848ff040620505ad"; private String APPID = "";
@Value("${weixin.appsecret}")
private String APPSECRET = "";
//登录验证码标识 //登录验证码标识
private static String GETPHONECODE = "getPhoneCode"; private static String GETPHONECODE = "getPhoneCode";
...@@ -107,32 +119,31 @@ public class LoginPwdController extends BaseController { ...@@ -107,32 +119,31 @@ public class LoginPwdController extends BaseController {
/*jsonObject = HttpHelper.doGet(url);*/ /*jsonObject = HttpHelper.doGet(url);*/
Map<String, Object> hashMap = new HashMap<>(); Map<String, Object> hashMap = new HashMap<>();
log.info(jsonObject); log.info(jsonObject);
hashMap.put("info",JSONObject.parseObject(jsonObject));
/* Map<String,Object> map = JSON.toJavaObject(jsonObject,Map.class);*/ /* Map<String,Object> map = JSON.toJavaObject(jsonObject,Map.class);*/
Map<String,Object> map = JSON.parseObject(jsonObject, Map.class); Map<String,Object> map = JSON.parseObject(jsonObject, Map.class);
String openId = map.get("openid").toString(); String openId = map.get("openid").toString();
Wrapper<HhrUser> wrapper = new EntityWrapper<>(); Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.eq("open_id", openId); wrapper.eq("open_id", openId);
log.info("openId:"+openId); log.info("openId:"+openId);
List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper); List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper);
if (hhrUsers.size() == 0) { if (hhrUsers.size() == 0) {
hashMap.put("info",JSONObject.parseObject(jsonObject));
return ResponseData.error(hashMap,"当前微信未绑定账号,请先登录绑定账号!"); return ResponseData.error(hashMap,"当前微信未绑定账号,请先登录绑定账号!");
} }
HhrUser hhrUser = hhrUsers.get(0); HhrUser hhrUser = hhrUsers.get(0);
SysUser sysUser = sysUserMapper.selectById(hhrUser.getId()); SysUser sysUser = sysUserMapper.selectById(hhrUser.getId());
if (StringUtils.isBlank(sysUser.getAccount())) { if (StringUtils.isBlank(sysUser.getAccount())) {
hashMap.put("info",JSONObject.parseObject(jsonObject));
return ResponseData.error(hashMap,"当前账号异常!"); return ResponseData.error(hashMap,"当前账号异常!");
} }
hashMap.put("username", sysUser.getAccount()); // 信息正确,调用登录
hashMap.put("openId", openId); return this.loginvalid(hashMap, sysUser.getAccount(), openId);
return ResponseData.success(hashMap);
} }
/** /**
* 微信登录 * 微信登录-- 前端未调用
* *
* @param openid * @param openid
* @return * @return
...@@ -161,6 +172,50 @@ public class LoginPwdController extends BaseController { ...@@ -161,6 +172,50 @@ public class LoginPwdController extends BaseController {
} }
/** /**
* 重写微信openId登录方法
* @param username 用户名
* @param openId 用户openId
* @return
*/
private ResponseData<Map<String, Object>> loginvalid(Map<String, Object> hashMap, String username, String openId) {
try{
// 关闭错误登录校验
stringRedisTemplate.opsForValue().set("SYS_LOGIN_ERROR" + username, "1");
String password = null;
ResponseData<String> canLogin = LoginUtils.canLogin(username);
if(!canLogin.isSuccess()) {
log.info("统一账号或子统一账号错误登录次数较多,不允许登录;请稍后再试!");
return ResponseData.error(hashMap, "登录失败,由于账号被锁定,请联系管理员或稍后重试!");
}
ResponseData<String> checkUserName = LoginUtils.checkUserName(username);
if(!checkUserName.isSuccess()) {
return ResponseData.error(hashMap, canLogin.getMsg());
}
// 获取数据库中的账号密码,准备比对
User user = userService.getByAccount(username);
if (null == user) {
log.info("统一账号或子统一账号在系统中找不到或被冻结!");
return ResponseData.error(hashMap, "统一账号或子统一账号在系统中找不到或被冻结!");
}
// 所有信息正确
Object object = AccLoginUtil.normalLogin(username, user.getPassword(), openId);
if(object instanceof ErrorTip) {
return ResponseData.error(hashMap, "授权登录错误");
}
Map<String, Object> map = (Map<String, Object>)object;
log.info("login result :{}", JSON.toJSONString(object));
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("sessionId", map.get("sessionId"));
resultMap.put("id", map.get("id"));
return ResponseData.success(resultMap);
}catch(Exception e) {
log.error(e.getMessage());
return ResponseData.error(hashMap, "内部异常");
}
}
/**
* 微信解绑 * 微信解绑
* *
* @param openid * @param openid
...@@ -212,8 +267,10 @@ public class LoginPwdController extends BaseController { ...@@ -212,8 +267,10 @@ public class LoginPwdController extends BaseController {
* @return * @return
*/ */
@RequestMapping("bindingAccount") @RequestMapping("bindingAccount")
public ResponseData<String> bindingAccount(String openid,String accessToken, String username, String verificationCode) { public ResponseData<Map<String, Object>> bindingAccount(String openid,String accessToken,
log.info(accessToken+":"+openid+":"+":"+username+":"+verificationCode); String username, String verificationCode,
@RequestParam(value = "remember", defaultValue = "false") boolean remember) {
log.info(accessToken+":"+openid+":"+":"+username+":"+verificationCode + ":" + remember);
if (StringUtils.isBlank(accessToken) || StringUtils.isBlank(openid) || StringUtils.isBlank(username) || StringUtils.isBlank(verificationCode)) { if (StringUtils.isBlank(accessToken) || StringUtils.isBlank(openid) || StringUtils.isBlank(username) || StringUtils.isBlank(verificationCode)) {
return ResponseData.error("绑定失败,授权失效或账号验证码为空!"); return ResponseData.error("绑定失败,授权失效或账号验证码为空!");
} }
...@@ -252,12 +309,16 @@ public class LoginPwdController extends BaseController { ...@@ -252,12 +309,16 @@ public class LoginPwdController extends BaseController {
Wrapper wrapper = new EntityWrapper<>(); Wrapper wrapper = new EntityWrapper<>();
wrapper.eq("id", sysUser.getId()); wrapper.eq("id", sysUser.getId());
Map<String, Object> dataMapping = new HashMap<>(); Map<String, Object> dataMapping = new HashMap<>();
dataMapping.put("open_id", openid); // 不绑定微信则不保存openId
if (remember) {
dataMapping.put("open_id", openid);
}
dataMapping.put("wx_head_img_url",headimgurl); dataMapping.put("wx_head_img_url",headimgurl);
dataMapping.put("wx_nick_name",nickname); dataMapping.put("wx_nick_name",nickname);
Integer integer = hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper); Integer integer = hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if (integer == 1) { if (integer == 1) {
return ResponseData.success(openid); return this.loginvalid(null, sysUser.getAccount(), openid);
} }
return ResponseData.error("绑定失败!"); return ResponseData.error("绑定失败!");
} }
......
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