| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- package com.template.controller;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.template.annotation.PassToken;
- import com.template.api.AppletLoginControllerAPI;
- import com.template.common.utils.AesUtils;
- import com.template.common.utils.HttpsClient;
- import com.template.common.utils.JWTUtil;
- import com.template.model.pojo.Admin;
- import com.template.model.pojo.AdminMenu;
- import com.template.model.pojo.PermissionSetting;
- import com.template.model.pojo.Users;
- import com.template.model.result.CommonResult;
- import com.template.services.AdminMenuService;
- import com.template.services.AdminService;
- import com.template.services.PermissionSettingService;
- import com.template.services.UsersService;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.HttpEntity;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.MediaType;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.client.RestTemplate;
- import java.io.UnsupportedEncodingException;
- import java.net.URLEncoder;
- import java.util.HashMap;
- import java.util.Map;
- @Slf4j
- @Controller
- public class AppletLoginController implements AppletLoginControllerAPI {
- @Autowired
- UsersService usersService;
- @Autowired
- AdminService adminService;
- @Autowired
- AdminMenuService adminMenuService;
- @Autowired
- PermissionSettingService permissionSettingService;
- @Override
- @PassToken
- public String weixiaoAuth(String wxcode, String state) throws UnsupportedEncodingException {
- // 先获取wxcode
- log.info("wxcode参数=======>>>>wxcode: "+wxcode);
- log.info("state参数=======>>>>state: "+state);
- String tokenUrl = "https://open.wecard.qq.com/connect/oauth2/token";
- Map<String, String> tokenParams = new HashMap<>();
- tokenParams.put("wxcode", wxcode);
- tokenParams.put("app_key", "4FD5599032819781");
- tokenParams.put("app_secret", "0174DFB98063A612526C6B69F941E14A");
- tokenParams.put("grant_type", "authorization_code");
- tokenParams.put("redirect_uri", state); // 该地址需要与发起授权地址保持一直
- try {
- // wecode换取token
- RestTemplate client = new RestTemplate();
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_JSON);
- HttpEntity<Map<String, String>> request = new HttpEntity<>(tokenParams, headers);
- //ResponseEntity<String> tokenResponse = client.postForEntity(tokenUrl, tokenParams, String.class);(需要加头部)
- ResponseEntity<String> tokenResponse = client.postForEntity(tokenUrl, request, String.class);
- ObjectMapper mapper = new ObjectMapper();
- Map<String, Object> jsonMap = mapper.readValue(tokenResponse.getBody(), new TypeReference<Map<String, Object>>() {
- });
- String accessToken = (String) jsonMap.get("access_token");
- log.info("access_token参数=======>>>>accessToken: "+accessToken);
- // token换取用户信息
- String userInfoUrl = "https://open.wecard.qq.com/connect/oauth/get-user-info";
- Map<String, String> userInfoParam = new HashMap<>();
- userInfoParam.put("access_token", accessToken);
- log.info("请求地址=======>>>>userInfoUrl: "+userInfoUrl);
- log.info("请求参数=======>>>>userInfoParam: "+userInfoParam);
- // ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, userInfoParam, String.class);(需要加头部)
- HttpEntity<Map<String, String>> request2 = new HttpEntity<>(userInfoParam, headers);
- ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, request2, String.class);
- log.info("请求返回值=======>>>>userInfoUrl: "+userInfoResponse);
- Map<String, Object> userInfoMap = mapper.readValue(userInfoResponse.getBody(), new TypeReference<Map<String, Object>>() {
- });
- //
- // 身份证
- String idCard = userInfoMap.get("id_card").toString();
- System.out.println("idCard = " + idCard);
- // 用户姓名
- String name = userInfoMap.get("name").toString();
- String encodeName = URLEncoder.encode(name,"utf-8");
- System.out.println("encodeName = " + encodeName);
- // 身份职称
- String identityTitle = userInfoMap.get("identity_type").toString();
- // 用户电子卡号/学工号
- String cardNumber = userInfoMap.get("card_number").toString();
- System.out.println("cardNumber = " + cardNumber);
- // 手机号
- String telephone = userInfoMap.get("telephone").toString();
- String headImage = userInfoMap.get("head_image").toString();
- // 判断账号是否以添加,
- LambdaQueryWrapper<Users> wrapperU=new LambdaQueryWrapper<>();
- wrapperU.eq(Users::getCardNumber,cardNumber);
- Users users = usersService.getOne(wrapperU);
- String token = JWTUtil.getUsersToken(cardNumber);
- String adminId="";
- String adminMenuId="";
- String adminMenuName="";
- String usersId="";
- String manager="0";
- if (ObjectUtils.isNotEmpty(users)) {
- usersId = String.valueOf(users.getId());
- // 通过用户id找到管理端用户id和角色id
- LambdaQueryWrapper<Admin> wrapperA=new LambdaQueryWrapper<>();
- wrapperA.eq(Admin::getUsersId,usersId);
- Admin admin = adminService.getOne(wrapperA);
- // 通过用户找到管理端用户和管理端角色,有则返回,没有则不返回
- if (ObjectUtils.isNotEmpty(admin)) {
- adminId = String.valueOf(admin.getId());
- adminMenuId = admin.getAdminMenuId();
- AdminMenu adminMenu = adminMenuService.getById(adminMenuId);
- if (ObjectUtils.isNotEmpty(adminMenu)) {
- adminMenuName = adminMenu.getName();
- }
- // 判断是否是管理员
- PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId);
- if (ObjectUtils.isNotEmpty(permissionSetting)) {
- // 判断该用户是否拥有权限
- // 判断该用户是否拥有权限
- String processManagement = permissionSetting.getProcessManagement();
- if (processManagement.equals("0")) {
- manager="1";
- }else if (processManagement.contains("3")&&processManagement.contains("4")&&processManagement.contains("5")){
- manager="1";
- }
- }
- }
- users.setDepartment(identityTitle);
- users.setUserName(name);
- users.setIdCard(idCard);
- users.setCardNumber(cardNumber);
- users.setPhone(telephone);
- users.setHeadImage(headImage);
- usersService.updateById(users);
- }else {
- Users users1 = new Users();
- users1.setDepartment(identityTitle);
- users1.setUserName(name);
- users1.setIdCard(idCard);
- users1.setCardNumber(cardNumber);
- users1.setPhone(telephone);
- users1.setHeadImage(headImage);
- usersService.save(users1);
- usersId=String.valueOf(users1.getId());
- }
- String user_head = AesUtils.encrypt(adminId);
- // System.out.println("重定向路径=" + "redirect:"+ "https://chtech.ncjti.edu.cn/hotel/h5/#/?token="+token+"&adminId="+adminId+"&adminMenuId="+adminMenuId+"&adminMenuName="+adminMenuName+"&usersId="+usersId+"&user_head="+user_head);
- return "redirect:"+ "https://chtech.ncjti.edu.cn/hotel/h5/#/?token="+token+"&adminId="+adminId+"&adminMenuId="+adminMenuId+"&adminMenuName="+adminMenuName+"&usersId="+usersId+"&user_head="+user_head+"&name="+encodeName+"&telephone="+telephone+"&department="+identityTitle+"&manager="+manager;
- // return "redirect:"+ "http://192.168.161.33:8000/hotel/h5/?token="+token+"&adminId="+adminId+"&adminMenuId="+adminMenuId+"&adminMenuName="+adminMenuName+"&usersId="+usersId+"&user_head="+user_head+"&name="+encodeName+"&telephone="+telephone+"&department="+identityTitle+"&manager="+manager;
- } catch (Exception e) {
- e.printStackTrace();
- return "redirect:" + "https://chtech.ncjti.edu.cn/hotel/h5/#/error/?errorMsg=" + URLEncoder.encode("获取用户信息失败", "utf-8");
- // return "redirect:" + "http://192.168.161.33:8000/hotel/h5/#/error/?errorMsg=" + URLEncoder.encode("获取用户信息失败", "utf-8");
- }
- }
- @Override
- public CommonResult getOpenid(String code) throws Exception {
- String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + "wxd87cbe1db0437303" + "&secret=" + "18e17f97e674e1c03fc255f12d12ca4d" + "&code=" + code + "&grant_type=authorization_code";
- String s = HttpsClient.httpsRequestReturnString(url, "GET", "");
- JSONObject jsonObject = JSONObject.parseObject(s);
- return CommonResult.ok(jsonObject);
- // System.out.println("jsonObject = " + jsonObject);
- // if (!jsonObject.containsKey("openid")) {
- // return CommonResult.fail("code有误");
- // }
- // String openid = jsonObject.getString("openid");
- // System.out.println("openid = " + openid);
- // return CommonResult.ok(jsonObject);
- }
- }
|