Commit d46f3c50 by 黄森林

微信公众号个人中心

parent 90f74bdc
package com.winsun.item.modular.system.controller; package com.winsun.item.modular.system.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
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;
...@@ -83,16 +84,10 @@ public class LoginPwdController extends BaseController { ...@@ -83,16 +84,10 @@ public class LoginPwdController extends BaseController {
LoginPwdController.schoolMapper=schoolMapper; LoginPwdController.schoolMapper=schoolMapper;
} }
/** @RequestMapping(value = "/defaultLogin")
* 微信登录 public ResponseData<Map<String, Object>> defaultLogin(String code) throws Exception {
*
* @param code
* @return
*/
@RequestMapping(value = "/weixinLogin")
public ResponseData<Map<String, Object>> weixinLogin(String code) {
if (StringUtils.isBlank(code)) { if (StringUtils.isBlank(code)) {
return ResponseData.error("微信授权失效,请重新授权!"); return ResponseData.error("微信默认授权失效,请退出重新进入授权!");
} }
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"; String url = "https://api.weixin.qq.com/sns/oauth2/access_token?";
url += "appid="; url += "appid=";
...@@ -105,14 +100,18 @@ public class LoginPwdController extends BaseController { ...@@ -105,14 +100,18 @@ public class LoginPwdController extends BaseController {
jsonObject = HttpHelper.sendGet(url); jsonObject = HttpHelper.sendGet(url);
} catch (Exception e) { } catch (Exception e) {
log.error("微信登录获取用户信息失败"+ e.getMessage(),e); log.error("微信登录获取用户信息失败"+ e.getMessage(),e);
return ResponseData.error("微信默认授权失效,请退出重新进入授权!");
} }
if (StringUtils.isBlank(jsonObject)) { if (StringUtils.isBlank(jsonObject)) {
return ResponseData.error("微信授权失效,请重新授权!"); return ResponseData.error("微信默认授权失效,请退出重新进入授权!");
} }
if(!jsonObject.contains("openid")){ if(!jsonObject.contains("openid")){
return ResponseData.error("微信授权失效,请重新授权!"); return ResponseData.error("微信默认授权失效,请退出重新进入授权!");
} }
/*jsonObject = HttpHelper.doGet(url);*/
Map<String, Object> hashMap = new HashMap<>();
log.info(jsonObject); log.info(jsonObject);
/* 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<>();
...@@ -120,6 +119,38 @@ public class LoginPwdController extends BaseController { ...@@ -120,6 +119,38 @@ public class LoginPwdController extends BaseController {
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);
return ResponseData.error(hashMap,"当前微信未绑定账号,请先登录绑定账号!");
}
HhrUser hhrUser = hhrUsers.get(0);
SysUser sysUser = sysUserMapper.selectById(hhrUser.getId());
if (StringUtils.isBlank(sysUser.getAccount())) {
hashMap.put("info",jsonObject);
return ResponseData.error(hashMap,"当前账号异常!");
}
hashMap.put("username", sysUser.getAccount());
hashMap.put("openId", openId);
return ResponseData.success(hashMap);
}
/**
* 微信登录
*
* @param openid
* @return
*/
@RequestMapping(value = "/weixinLogin")
public ResponseData<Map<String, Object>> weixinLogin(String openid) {
if (StringUtils.isBlank(openid)) {
return ResponseData.error("微信授权失效,请重新授权!");
}
Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.eq("open_id", openid);
log.info("openId:"+openid);
List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper);
if (hhrUsers.size() == 0) {
return ResponseData.error("当前微信未绑定账号,请先绑定账号!"); return ResponseData.error("当前微信未绑定账号,请先绑定账号!");
} }
HhrUser hhrUser = hhrUsers.get(0); HhrUser hhrUser = hhrUsers.get(0);
...@@ -129,22 +160,22 @@ public class LoginPwdController extends BaseController { ...@@ -129,22 +160,22 @@ public class LoginPwdController extends BaseController {
} }
Map<String, Object> hashMap = new HashMap<>(); Map<String, Object> hashMap = new HashMap<>();
hashMap.put("username", sysUser.getAccount()); hashMap.put("username", sysUser.getAccount());
hashMap.put("openId", openId); hashMap.put("openId", openid);
return ResponseData.success(hashMap); return ResponseData.success(hashMap);
} }
/** /**
* 微信解绑 * 微信解绑
* *
* @param code * @param openid
* @param username * @param username
* @param verificationCode * @param verificationCode
* @return * @return
*/ */
@RequestMapping(value = "/weixinUnbundling") @RequestMapping(value = "/weixinUnbundling")
public ResponseData<String> weixinUnbundling(String code, String username, String verificationCode) { public ResponseData<String> weixinUnbundling(String openid, String username, String verificationCode) {
if (StringUtils.isBlank(code) || StringUtils.isBlank(username) || StringUtils.isBlank(verificationCode)) { if (StringUtils.isBlank(openid) || StringUtils.isBlank(username) || StringUtils.isBlank(verificationCode)) {
return ResponseData.error("解绑失败!"); return ResponseData.error("解绑失败,微信授权失效或账号验证码为空!");
} }
String str = stringRedisTemplate.opsForValue().get(username + GETPHONECODE); String str = stringRedisTemplate.opsForValue().get(username + GETPHONECODE);
if (StringUtils.isBlank(str)) { if (StringUtils.isBlank(str)) {
...@@ -159,32 +190,11 @@ public class LoginPwdController extends BaseController { ...@@ -159,32 +190,11 @@ public class LoginPwdController extends BaseController {
if (users.size() == 0) { if (users.size() == 0) {
return ResponseData.error("当前账号不存在!"); return ResponseData.error("当前账号不存在!");
} }
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"; log.info("openId:"+openid);
url += "appid=";
url += APPID;
url += "&secret=";
url += APPSECRET;
url += "&code=" + code + "&grant_type=authorization_code";
String jsonObject = null;
try {
jsonObject = HttpHelper.sendGet(url);
} catch (Exception e) {
log.error("微信登录获取用户信息失败"+ e.getMessage(),e);
}
if (StringUtils.isBlank(jsonObject)) {
return ResponseData.error("微信授权失效,请重新授权!");
}
if(!jsonObject.contains("openid")){
return ResponseData.error("微信授权失效,请重新授权!");
}
log.info(jsonObject);
Map<String,Object> map = JSON.parseObject(jsonObject, Map.class);
String openId = map.get("openid").toString();
log.info("openId:"+openId);
SysUser sysUser = users.get(0); SysUser sysUser = users.get(0);
Wrapper<HhrUser> wrapper = new EntityWrapper<>(); Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.eq("id", sysUser.getId()); wrapper.eq("id", sysUser.getId());
wrapper.eq("open_id", openId); wrapper.eq("open_id", openid);
List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper); List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper);
if (hhrUsers.size() == 0) { if (hhrUsers.size() == 0) {
return ResponseData.error("当前微信和当前账号不匹配!"); return ResponseData.error("当前微信和当前账号不匹配!");
...@@ -201,14 +211,14 @@ public class LoginPwdController extends BaseController { ...@@ -201,14 +211,14 @@ public class LoginPwdController extends BaseController {
/** /**
* 绑定微信 * 绑定微信
* *
* @param code * @param accessToken
* @param username * @param username
* @return * @return
*/ */
@RequestMapping("bindingAccount") @RequestMapping("bindingAccount")
public ResponseData<String> bindingAccount(String code, String username, String verificationCode) { public ResponseData<String> bindingAccount(String openid,String accessToken, String username, String verificationCode) {
if (StringUtils.isBlank(code) || 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("绑定失败,授权失效或账号验证码为空!");
} }
String str = stringRedisTemplate.opsForValue().get(username + GETPHONECODE); String str = stringRedisTemplate.opsForValue().get(username + GETPHONECODE);
if (StringUtils.isBlank(str)) { if (StringUtils.isBlank(str)) {
...@@ -223,30 +233,8 @@ public class LoginPwdController extends BaseController { ...@@ -223,30 +233,8 @@ public class LoginPwdController extends BaseController {
if (users.size() == 0) { if (users.size() == 0) {
return ResponseData.error("当前账号有误!"); return ResponseData.error("当前账号有误!");
} }
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"; log.info("openId:"+openid);
url += "appid="; String url1 = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openid+"&lang=zh_CN";
url += APPID;
url += "&secret=";
url += APPSECRET;
url += "&code=" + code + "&grant_type=authorization_code";
String jsonObject = null;
try {
jsonObject = HttpHelper.sendGet(url);
} catch (Exception e) {
log.error("微信登录获取用户信息失败"+ e.getMessage(),e);
}
if (StringUtils.isBlank(jsonObject)) {
return ResponseData.error("微信授权失效,请重新授权!");
}
if(!jsonObject.contains("openid")){
return ResponseData.error("微信授权失效,请重新授权!");
}
log.info(jsonObject);
Map<String,Object> map = JSON.parseObject(jsonObject, Map.class);
String openId = map.get("openid").toString();
log.info("openId:"+openId);
String accessToken = map.get("access_token").toString();
String url1 = "https://api.weixin.qq.com/sns/userinfo?access_token="+accessToken+"&openid="+openId+"&lang=zh_CN";
String jsonObject1 = null; String jsonObject1 = null;
try { try {
jsonObject1 = HttpHelper.sendGet(url1); jsonObject1 = HttpHelper.sendGet(url1);
...@@ -267,12 +255,12 @@ public class LoginPwdController extends BaseController { ...@@ -267,12 +255,12 @@ 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); 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 ResponseData.success(openid);
} }
return ResponseData.error("绑定失败!"); return ResponseData.error("绑定失败!");
} }
......
...@@ -15,6 +15,7 @@ import com.winsun.mapper.SysUserMapper; ...@@ -15,6 +15,7 @@ import com.winsun.mapper.SysUserMapper;
import com.winsun.smsUtils.SendSmsAndMail; import com.winsun.smsUtils.SendSmsAndMail;
import com.winsun.utils.IDCardUtil; import com.winsun.utils.IDCardUtil;
import com.winsun.utils.MyBatisPlusUpdateUtils; import com.winsun.utils.MyBatisPlusUpdateUtils;
import com.winsun.utils.PicturesUtil;
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;
...@@ -53,6 +54,8 @@ public class PersonalCenterController extends BaseController { ...@@ -53,6 +54,8 @@ public class PersonalCenterController extends BaseController {
private String EDITPWD = "EditPwd"; private String EDITPWD = "EditPwd";
private static String PATHTYPE="idCard";
@Autowired @Autowired
public PersonalCenterController(SysUserMapper sysUserMapper, HhrUserMapper hhrUserMapper, AppMapper appMapper, public PersonalCenterController(SysUserMapper sysUserMapper, HhrUserMapper hhrUserMapper, AppMapper appMapper,
StringRedisTemplate stringRedisTemplate, SchoolMapper schoolMapper) { StringRedisTemplate stringRedisTemplate, SchoolMapper schoolMapper) {
...@@ -63,6 +66,74 @@ public class PersonalCenterController extends BaseController { ...@@ -63,6 +66,74 @@ public class PersonalCenterController extends BaseController {
PersonalCenterController.schoolMapper = schoolMapper; PersonalCenterController.schoolMapper = schoolMapper;
} }
@Permission(menuname = "登录后微信解绑", value = "WXUnbundling", method = RequestMethod.POST)
public ResponseData<String> WXUnbundling(String partner, String openid) {
ShiroUser user = getShiroUser();
if (!partner.equals(String.valueOf(user.getId()))) {
return ResponseData.error("当前登录账户异常!");
}
if (StringUtils.isBlank(openid)) {
return ResponseData.error("解绑失败,当前登录无权解绑,请退出登录,在登录页面解绑!");
}
HhrUser hhrUser = hhrUserMapper.selectById(partner);
if(!hhrUser.getOpenId().equals(openid)){
return ResponseData.error("解绑失败,当前登录无权解绑,请退出登录,在登录页面解绑!");
}
Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.eq("id", user.getId());
wrapper.eq("open_id", openid);
Map<String, Object> dataMapping = new HashMap<>();
dataMapping.put("open_id", null);
Integer integer = hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if(integer == 1){
return ResponseData.success("解绑成功!");
}
return ResponseData.error("解绑失败,请退出登录,在登录页面解绑!");
}
@Permission(menuname = "上传当前登录用户证件照", value = "uploadCard", method = RequestMethod.POST)
public ResponseData<String> uploadCard(String partner, String idCard, String stuCard) {
ShiroUser user = getShiroUser();
if (!partner.equals(String.valueOf(user.getId()))) {
return ResponseData.error("当前登录账户异常!");
}
Wrapper<SysUser> wrapper = new EntityWrapper<>();
wrapper.eq("id", user.getId());
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("updateTime", new Date());
sysUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMap), wrapper);
Wrapper<HhrUser> wrapper1 = new EntityWrapper<>();
wrapper1.eq("id", user.getId());
Map<String, Object> dataMap1 = new HashMap<>();
dataMap1.put("idcard_img_url", PicturesUtil.uploadPictures(idCard, String.valueOf(user.getId()),PATHTYPE));
dataMap1.put("student_img_url", PicturesUtil.uploadPictures(stuCard, String.valueOf(user.getId()),PATHTYPE));
Integer integer1 = hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMap1), wrapper1);
if(integer1==1){
return ResponseData.success("上传成功!");
}
return ResponseData.error("上传失败!");
}
@Permission(menuname = "查询当前登录用户证件照", value = "selectPicture", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> selectPicture(String partner) {
ShiroUser user = getShiroUser();
if (!partner.equals(String.valueOf(user.getId()))) {
return ResponseData.error("当前登录账户操作异常!");
}
HhrUser hhrUser = hhrUserMapper.selectById(user.getId());
if (hhrUser == null) {
return ResponseData.error("当前登录账户信息异常!");
}
Map<String, Object> hashMap = new HashMap<>();
if (StringUtils.isNotBlank(hhrUser.getStudentImgUrl())) {
hashMap.put("stuCard", hhrUser.getStudentImgUrl());
}
if (StringUtils.isNotBlank(hhrUser.getIdcardImgUrl())) {
hashMap.put("idCard", hhrUser.getIdcardImgUrl());
}
return ResponseData.success(hashMap);
}
@Permission(menuname = "修改用户信息", value = "editPartnerInfo", method = RequestMethod.POST) @Permission(menuname = "修改用户信息", value = "editPartnerInfo", method = RequestMethod.POST)
public ResponseData<String> editPartnerInfo(String partner, String userName, String sex, String grade, public ResponseData<String> editPartnerInfo(String partner, String userName, String sex, String grade,
String position, String idCard, String substName, String school) { String position, String idCard, String substName, String school) {
...@@ -75,7 +146,7 @@ public class PersonalCenterController extends BaseController { ...@@ -75,7 +146,7 @@ public class PersonalCenterController extends BaseController {
if (!partner.equals(String.valueOf(user.getId()))) { if (!partner.equals(String.valueOf(user.getId()))) {
return ResponseData.error("当前登录账户和修改账号冲突!"); return ResponseData.error("当前登录账户和修改账号冲突!");
} }
if(!IDCardUtil.IDCardValidate(idCard)){ if (!IDCardUtil.IDCardValidate(idCard)) {
return ResponseData.error("身份证号码有误!"); return ResponseData.error("身份证号码有误!");
} }
Wrapper<SysUser> wrapper = new EntityWrapper<>(); Wrapper<SysUser> wrapper = new EntityWrapper<>();
...@@ -94,12 +165,12 @@ public class PersonalCenterController extends BaseController { ...@@ -94,12 +165,12 @@ public class PersonalCenterController extends BaseController {
dataMap1.put("id_card", idCard); dataMap1.put("id_card", idCard);
integer += hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMap1), wrapper1); integer += hhrUserMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMap1), wrapper1);
String sch = schoolMapper.selectSchoolIdByUserId(String.valueOf(user.getId())); String sch = schoolMapper.selectSchoolIdByUserId(String.valueOf(user.getId()));
if(StringUtils.isBlank(sch)){ if (StringUtils.isBlank(sch)) {
integer += schoolMapper.insertUserSchool(String.valueOf(user.getId()), school); integer += schoolMapper.insertUserSchool(String.valueOf(user.getId()), school);
}else { } else {
integer += schoolMapper.updateUserSchool(String.valueOf(user.getId()), school); integer += schoolMapper.updateUserSchool(String.valueOf(user.getId()), school);
} }
if(integer != 3){ if (integer != 3) {
return ResponseData.error("修改异常,请重新修改!"); return ResponseData.error("修改异常,请重新修改!");
} }
return ResponseData.success("修改成功!"); return ResponseData.success("修改成功!");
......
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