Commit 6a4acfae authored by qinhu's avatar qinhu

扫一扫优化

parent 361fb455
package cn.wise.sc.cement.business.controller; package cn.wise.sc.cement.business.controller;
import cn.hutool.core.util.StrUtil;
import cn.wise.sc.cement.business.model.BaseResponse; import cn.wise.sc.cement.business.model.BaseResponse;
import cn.wise.sc.cement.business.service.impl.WeiXinService; import cn.wise.sc.cement.business.service.impl.WeiXinService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Date; import java.util.Date;
...@@ -68,31 +71,31 @@ public class WeiXinController { ...@@ -68,31 +71,31 @@ public class WeiXinController {
@ApiOperation("获取jsapi_ticket") @ApiOperation("获取jsapi_ticket")
public BaseResponse<Map> getAccessToken() { public BaseResponse<Map> getAccessToken() {
String accessToken = weiXinService.getJsapiTicket(); String accessToken = weiXinService.getJsapiTicket();
Map<String, String> rts = new HashMap<>(4); Map<String, String> rts = new HashMap<>(5);
rts.put("jsapi_ticket", accessToken); rts.put("jsapi_ticket", accessToken);
rts.put("timestamp", (new Date()).getTime() / 1000 + ""); rts.put("timestamp", (new Date()).getTime() / 1000 + "");
rts.put("noncestr", "Wm3WZYTPz0wzccnW"); rts.put("noncestr", "Wm3WZYTPz0wzccnW");
rts.put("app_id","ww348f91b2573c1867"); rts.put("app_id", "ww348f91b2573c1867");
rts.put("jsApiList","['scanQRCode']");
return BaseResponse.okData(rts); return BaseResponse.okData(rts);
} }
@GetMapping("/signature") @GetMapping("/signature")
@ApiOperation("获取accessToken") @ApiOperation("获取accessToken")
public BaseResponse<String> signature(String param){ public BaseResponse<String> signature(String param) {
MessageDigest md; MessageDigest md;
String tmpStr = null; String tmpStr = null;
try { try {
md = MessageDigest.getInstance("SHA-1"); md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md.digest(param.getBytes()); byte[] digest = md.digest(param.getBytes());
tmpStr = byteToStr(digest); tmpStr = byteToStr(digest);
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
e.printStackTrace(); e.printStackTrace();
} }
return BaseResponse.okData(tmpStr); return BaseResponse.okData(StrUtil.swapCase(tmpStr));
} }
/** /**
* 将字节数组转换为十六进制字符串 * 将字节数组转换为十六进制字符串
* *
...@@ -114,7 +117,7 @@ public class WeiXinController { ...@@ -114,7 +117,7 @@ public class WeiXinController {
* @return * @return
*/ */
private static String byteToHexStr(byte mByte) { private static String byteToHexStr(byte mByte) {
char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char[] tempArr = new char[2]; char[] tempArr = new char[2];
tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
tempArr[1] = Digit[mByte & 0X0F]; tempArr[1] = Digit[mByte & 0X0F];
......
...@@ -25,30 +25,34 @@ import java.util.Map; ...@@ -25,30 +25,34 @@ import java.util.Map;
@Service @Service
public class WeiXinService { public class WeiXinService {
@Value("${weixin.corpid}") @Value("${weixin.corpid}")
private String corpid; private String corpid;
@Value("${weixin.corpsecret}") @Value("${weixin.corpsecret}")
private String corpsecret; private String corpsecret;
@Value("${weixin.corpsecretPC}") @Value("${weixin.corpsecretPC}")
private String corpsecretPC; private String corpsecretPC;
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@Autowired @Autowired
RedisUtil redisUtil; RedisUtil redisUtil;
/** final static String ACCESS_TOKEN = "ACCESS_TOKEN";
* 获取登录token final static String JSAPITICKET = "JSAPITICKET";
* @param code
* @param type PC管理端 APP小程序端 /**
* @return * 获取登录token
*/ *
public BaseResponse<String> getToken(String code,String type) { * @param code
if (StrUtil.isEmpty(code)) { * @param type PC管理端 APP小程序端
return BaseResponse.errorMsg("code为必填项!"); * @return
} */
System.out.println("==================code==================="); public BaseResponse<String> getToken(String code, String type) {
System.out.println(code); if (StrUtil.isEmpty(code)) {
try { return BaseResponse.errorMsg("code为必填项!");
}
System.out.println("==================code===================");
System.out.println(code);
try {
/*String accessToken = null; /*String accessToken = null;
if(type.equals("PC")){ if(type.equals("PC")){
accessToken = getAccessToken(); accessToken = getAccessToken();
...@@ -67,133 +71,114 @@ public class WeiXinService { ...@@ -67,133 +71,114 @@ public class WeiXinService {
System.out.println("==================UserId==================="); System.out.println("==================UserId===================");
System.out.println(UserId); System.out.println(UserId);
JSONObject userJson = getUser(accessToken, UserId);*/ JSONObject userJson = getUser(accessToken, UserId);*/
QueryWrapper<SysUser> wrapper = new QueryWrapper<>(); QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
// wrapper.eq("phone", userJson.get("mobile")); // wrapper.eq("phone", userJson.get("mobile"));
wrapper.eq("phone", code); //暂时用手机号代替code wrapper.eq("phone", code); //暂时用手机号代替code
SysUser sysUser = userService.getOne(wrapper); SysUser sysUser = userService.getOne(wrapper);
if(sysUser == null){ if (sysUser == null) {
return BaseResponse.errorMsg("非系统用户不允许登录!"); return BaseResponse.errorMsg("非系统用户不允许登录!");
} }
if(sysUser.getStatus()==0){ if (sysUser.getStatus() == 0) {
return BaseResponse.errorMsg("用户被禁用!"); return BaseResponse.errorMsg("用户被禁用!");
} }
if(sysUser.getIsDelete()==0){ if (sysUser.getIsDelete() == 0) {
return BaseResponse.errorMsg("用户被删除!"); return BaseResponse.errorMsg("用户被删除!");
} }
//生成token,存入redis //生成token,存入redis
String token = JwtUtil.createToken(sysUser.getId(), sysUser.getUsername(), String token = JwtUtil.createToken(sysUser.getId(), sysUser.getUsername(),
sysUser.getName(), sysUser.getPhone()); sysUser.getName(), sysUser.getPhone());
System.out.println(token); System.out.println(token);
redisUtil.setString(sysUser.getId().toString(),token,3600); redisUtil.setString(sysUser.getId().toString(), token, 3600);
return BaseResponse.okData(token); return BaseResponse.okData(token);
} catch (Exception e) { } catch (Exception e) {
return BaseResponse.errorMsg(e.getMessage()); return BaseResponse.errorMsg(e.getMessage());
} }
} }
//获取accessToken信息 //获取accessToken信息
public String getAccessToken() { public String getAccessToken() {
try { try {
String param = "corpid=%s&corpsecret=%s"; String param = "corpid=%s&corpsecret=%s";
param = String.format(param, corpid, corpsecret); param = String.format(param, corpid, corpsecret);
JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param); JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param);
String accessToken = jsonObject.getString("access_token"); String accessToken = jsonObject.getString("access_token");
System.out.println("==================accessToken==================="); System.out.println("==================accessToken===================");
System.out.println(accessToken); System.out.println(accessToken);
return accessToken; return accessToken;
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }
} }
//获取accessToken信息 //获取accessToken信息
public String getJsapiTicket() { public String getJsapiTicket() {
try { try {
String param = "corpid=%s&corpsecret=%s"; String accessToken;
param = String.format(param, corpid, corpsecret); String jsapiTicket;
JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param); if (!redisUtil.existsKey(ACCESS_TOKEN)) {
String accessToken = jsonObject.getString("access_token"); String param = "corpid=%s&corpsecret=%s";
System.out.println("==================accessToken==================="); param = String.format(param, corpid, corpsecret);
System.out.println(accessToken); JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param);
String param2 = "access_token=%s&type=jsapi"; accessToken = jsonObject.getString("access_token");
param2 = String.format(param2, accessToken); redisUtil.setString(ACCESS_TOKEN, accessToken, 7200);
JSONObject ticketJsonObject = WeixinInterfaceUtil.doGet(Global.ticket, param2); }
String rts = ticketJsonObject.getString("ticket"); accessToken = redisUtil.getString(ACCESS_TOKEN) + "";
System.out.println("==================accessToken===================");
return rts; System.out.println(accessToken);
} catch (Exception e) {
return null; if (!redisUtil.existsKey(JSAPITICKET)) {
} String param3 = "access_token=%s&type=agent_config";
} param3 = String.format(param3, accessToken);
JSONObject ticketJsonObject = WeixinInterfaceUtil.doGet(Global.userTicket, param3);
public String getPCAccessToken() { jsapiTicket = ticketJsonObject.getString("ticket");
try { redisUtil.setString(JSAPITICKET, jsapiTicket, 7200);
String param = "corpid=%s&corpsecret=%s"; }
param = String.format(param, corpid, corpsecretPC);
JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param); jsapiTicket = redisUtil.getString(JSAPITICKET) + "";
String accessToken = jsonObject.getString("access_token"); return jsapiTicket;
System.out.println("==================accessToken==================="); } catch (Exception e) {
System.out.println(accessToken); return null;
return accessToken; }
} catch (Exception e) { }
return null;
} public String getPCAccessToken() {
} try {
String param = "corpid=%s&corpsecret=%s";
param = String.format(param, corpid, corpsecretPC);
JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.ACCESSTOKENURL, param);
String accessToken = jsonObject.getString("access_token");
System.out.println("==================accessToken===================");
System.out.println(accessToken);
return accessToken;
} catch (Exception e) {
return null;
}
//获取用户信息 }
public JSONObject getUser(String accessToken, String userId) {
try {
String param = "access_token=%s&userid=%s"; //获取用户信息
param = String.format(param, accessToken, userId); public JSONObject getUser(String accessToken, String userId) {
JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.USERURL, param); try {
System.out.println("==================jsonObject==================="); String param = "access_token=%s&userid=%s";
System.out.println(jsonObject); param = String.format(param, accessToken, userId);
return jsonObject; JSONObject jsonObject = WeixinInterfaceUtil.doGet(Global.USERURL, param);
} catch (Exception e) { System.out.println("==================jsonObject===================");
return null; System.out.println(jsonObject);
} return jsonObject;
} } catch (Exception e) {
return null;
/** }
* 当前登录用户 }
* @return
*/ /**
public BaseResponse<LoginUser> getLoginUser() { * 当前登录用户
LoginUser loginUser = userService.getLoginUser(); *
return BaseResponse.okData(loginUser); * @return
} */
public BaseResponse<LoginUser> getLoginUser() {
LoginUser loginUser = userService.getLoginUser();
return BaseResponse.okData(loginUser);
}
} }
...@@ -32,6 +32,7 @@ public interface Global { ...@@ -32,6 +32,7 @@ public interface Global {
public static final String ticket = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket"; public static final String ticket = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket";
public static final String userTicket = "https://qyapi.weixin.qq.com/cgi-bin/ticket/get";
} }
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