Commit d46f3c50 by 黄森林

微信公众号个人中心

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