diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java index f0be98fb..b568dd98 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/interceptor/SmartAuthenticationInterceptor.java @@ -91,42 +91,50 @@ public class SmartAuthenticationInterceptor extends HandlerInterceptorAdapter { return false; } - //根据token获取登录用户 - RequestTokenBO requestToken = loginTokenService.getEmployeeTokenInfo(xAccessToken); - if (null == requestToken &&!request.getServletPath().startsWith("/royalcanin")) { - this.outputResult(response, LoginResponseCodeConst.LOGIN_ERROR); - return false; - } - - //判断接口权限 - String methodName = ((HandlerMethod) handler).getMethod().getName(); - String className = ((HandlerMethod) handler).getBeanType().getName(); - List list = SmartStringUtil.splitConvertToList(className, "\\."); - String controllerName = list.get(list.size() - 1); - Method m = ((HandlerMethod) handler).getMethod(); - Class cls = ((HandlerMethod) handler).getBeanType(); - boolean isClzAnnotation = cls.isAnnotationPresent(NoValidPrivilege.class); - boolean isMethodAnnotation = m.isAnnotationPresent(NoValidPrivilege.class); - NoValidPrivilege noValidPrivilege = null; - if (isClzAnnotation) { - noValidPrivilege = cls.getAnnotation(NoValidPrivilege.class); - } else if (isMethodAnnotation) { - noValidPrivilege = m.getAnnotation(NoValidPrivilege.class); - } - //不需验证权限 - if (noValidPrivilege != null) { - SmartRequestTokenUtil.setUser(request, requestToken); - return true; - } - //需要验证权限 if(!request.getServletPath().startsWith("/royalcanin")) { - Boolean privilegeValidPass = privilegeEmployeeService.checkEmployeeHavePrivilege(requestToken, controllerName, methodName); - if (!privilegeValidPass) { - this.outputResult(response, LoginResponseCodeConst.NOT_HAVE_PRIVILEGES); + //根据token获取登录用户 + RequestTokenBO requestToken = loginTokenService.getEmployeeTokenInfo(xAccessToken); + if (null == requestToken) { + this.outputResult(response, LoginResponseCodeConst.LOGIN_ERROR); + return false; + } + //判断接口权限 + String methodName = ((HandlerMethod) handler).getMethod().getName(); + String className = ((HandlerMethod) handler).getBeanType().getName(); + List list = SmartStringUtil.splitConvertToList(className, "\\."); + String controllerName = list.get(list.size() - 1); + Method m = ((HandlerMethod) handler).getMethod(); + Class cls = ((HandlerMethod) handler).getBeanType(); + boolean isClzAnnotation = cls.isAnnotationPresent(NoValidPrivilege.class); + boolean isMethodAnnotation = m.isAnnotationPresent(NoValidPrivilege.class); + NoValidPrivilege noValidPrivilege = null; + if (isClzAnnotation) { + noValidPrivilege = cls.getAnnotation(NoValidPrivilege.class); + } else if (isMethodAnnotation) { + noValidPrivilege = m.getAnnotation(NoValidPrivilege.class); + } + //不需验证权限 + if (noValidPrivilege != null) { + SmartRequestTokenUtil.setUser(request, requestToken); + return true; + } + //需要验证权限 + if(!request.getServletPath().startsWith("/royalcanin")) { + Boolean privilegeValidPass = privilegeEmployeeService.checkEmployeeHavePrivilege(requestToken, controllerName, methodName); + if (!privilegeValidPass) { + this.outputResult(response, LoginResponseCodeConst.NOT_HAVE_PRIVILEGES); + return false; + } + } + SmartRequestTokenUtil.setUser(request, requestToken); + }else { + //根据token获取登录用户 + String requestToken = loginTokenService.getRoyalcaninTokenInfo(xAccessToken); + if (requestToken == null){ + this.outputResult(response, LoginResponseCodeConst.LOGIN_ERROR); return false; } } - SmartRequestTokenUtil.setUser(request, requestToken); return true; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java index 56ec269a..bfeb7e43 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/login/LoginTokenService.java @@ -1,5 +1,6 @@ package net.lab1024.smartadmin.module.system.login; +import com.alibaba.fastjson.JSONObject; import net.lab1024.smartadmin.common.constant.JudgeEnum; import net.lab1024.smartadmin.module.system.employee.EmployeeService; import net.lab1024.smartadmin.module.system.employee.constant.EmployeeStatusEnum; @@ -10,6 +11,10 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; +import net.lab1024.smartadmin.module.system.royalcanin.MemberService; +import net.lab1024.smartadmin.module.system.royalcanin.member.MemberGetEntity; +import net.lab1024.smartadmin.util.MapRemoveNullUtil; +import net.lab1024.smartadmin.util.SmartHttpUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -33,6 +38,8 @@ import java.util.UUID; @Service public class LoginTokenService { + private String url = "http://miniapp-test.royalcanin.com.cn:7080/crm/member/"; + /** * 过期时间一天 */ @@ -49,6 +56,10 @@ public class LoginTokenService { private EmployeeService employeeService; + @Autowired + private MemberService memberService; + + /** * 功能描述: 生成JWT TOKEN * @@ -115,4 +126,26 @@ public class LoginTokenService { return new RequestTokenBO(employeeBO); } + + public String getRoyalcaninTokenInfo(String token) { + + MemberGetEntity memberGetEntity =new MemberGetEntity(); + String sb = ""; + try { + Claims claims = Jwts.parser().setSigningKey(jwtKey).parseClaimsJws(token).getBody(); + String userId = claims.get(CLAIM_ID_KEY).toString(); + memberGetEntity.setChannelId(15); + memberGetEntity.setId(Integer.parseInt(userId)); + sb = SmartHttpUtil.sendPostForm(url+"get", MapRemoveNullUtil.setConditionMap(memberGetEntity),null); + } catch (Exception e) { + log.error("getEmployeeTokenInfo error:{}", e); + return null; + } + JSONObject jsonObject = JSONObject.parseObject(sb); + JSONObject json = JSONObject.parseObject(jsonObject.getString("data")); + if(!jsonObject.getString("code").equals("0")) { + return null; + } + return json.getString("id"); + } } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java index 196903c9..eb2b03ab 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/royalcanin/MemberService.java @@ -49,7 +49,7 @@ public class MemberService { MapRemoveNullUtil.removeNullEntry(paramMap); String sb = SmartHttpUtil.sendPostForm(url+"get",paramMap,null); JSONObject jsonObject = JSONObject.parseObject(sb); - if(!jsonObject.getString("code").equals("-1")){ + if(jsonObject.getString("code").equals("0")){ JSONObject json = JSONObject.parseObject(jsonObject.getString("data")); String id = json.getString("id"); jsonObject.put("xaccessToken",generateToken(id)); diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayController.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayController.java index a24d08f0..0d024323 100644 --- a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayController.java +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/WxpayController.java @@ -6,11 +6,17 @@ import lombok.extern.slf4j.Slf4j; import net.lab1024.smartadmin.common.anno.OperateLog; import net.lab1024.smartadmin.constant.SwaggerTagConst; import net.lab1024.smartadmin.module.system.qrcode.QRCodeUtil; +import net.lab1024.smartadmin.module.system.wxpay.wxPay.WxPayEntity; +import net.lab1024.smartadmin.util.MapRemoveNullUtil; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.net.Inet4Address; +import java.net.InetAddress; import java.util.HashMap; import java.util.Map; @@ -24,7 +30,6 @@ public class WxpayController { @GetMapping("royalcanin/qrCode") public void getQRCode(String codeContent, HttpServletResponse response) { - System.out.println("codeContent=" + codeContent); try { /* * 调用工具类生成二维码并输出到输出流中 @@ -38,38 +43,29 @@ public class WxpayController { } - @GetMapping("royalcanin/unifiedOrder") - public void unifiedOrder(String codeContent, HttpServletResponse response) throws Exception { + @PostMapping("royalcanin/unifiedOrder") + public void unifiedOrder(@RequestBody WxPayEntity wxPayEntity, HttpServletResponse response) throws Exception { MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config); - - Map data = new HashMap(); - data.put("body", "腾讯充值中心-QQ会员充值"); - data.put("out_trade_no", "2016090910595900000012"); - data.put("device_info", ""); - data.put("fee_type", "CNY"); - data.put("total_fee", "1"); - data.put("spbill_create_ip", "123.12.12.123"); - data.put("notify_url", "http://www.example.com/wxpay/notify"); + InetAddress ip4 = Inet4Address.getLocalHost(); + Map data = MapRemoveNullUtil.setConditionMap(wxPayEntity); + data.put("spbill_create_ip", ip4.getHostAddress()); data.put("trade_type", "NATIVE"); // 此处指定为扫码支付 - data.put("product_id", "12"); - + data.put("body","皇家宠物食品官方商城"); try { Map resp = wxpay.unifiedOrder(data); - QRCodeUtil.createCodeToOutputStream(resp.toString(), response.getOutputStream()); + QRCodeUtil.createCodeToOutputStream(resp.get("code_url"), response.getOutputStream()); } catch (Exception e) { e.printStackTrace(); } } - @GetMapping("royalcanin/orderQuery") - public String orderQuery(String codeContent, HttpServletResponse response) throws Exception { + @PostMapping("royalcanin/orderQuery") + public String orderQuery(@RequestBody WxPayEntity wxPayEntity, HttpServletResponse response) throws Exception { MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config); - Map data = new HashMap(); - data.put("out_trade_no", "2016090910595900000012"); - + Map data = MapRemoveNullUtil.setConditionMap(wxPayEntity); try { Map resp = wxpay.orderQuery(data); return resp.toString(); @@ -79,20 +75,18 @@ public class WxpayController { return "null"; } - @GetMapping("royalcanin/refundQuery") - public void refundQuery(String codeContent, HttpServletResponse response) throws Exception { + @PostMapping("royalcanin/refundQuery") + public String refundQuery(@RequestBody WxPayEntity wxPayEntity, HttpServletResponse response) throws Exception { MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config); - - Map data = new HashMap(); - data.put("out_trade_no", "2016090910595900000012"); - + Map data = MapRemoveNullUtil.setConditionMap(wxPayEntity); try { Map resp = wxpay.refundQuery(data); - System.out.println(resp); + return resp.toString(); } catch (Exception e) { e.printStackTrace(); } + return null; } diff --git a/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/wxPay/WxPayEntity.java b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/wxPay/WxPayEntity.java new file mode 100644 index 00000000..631d2543 --- /dev/null +++ b/smart-admin-service/smart-admin-api/src/main/java/net/lab1024/smartadmin/module/system/wxpay/wxPay/WxPayEntity.java @@ -0,0 +1,27 @@ +package net.lab1024.smartadmin.module.system.wxpay.wxPay; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; + +@Data +public class WxPayEntity { + + public String body; + + public String out_trade_no; + + public String device_info; + + public String fee_type; + + public String total_fee; + + public String spbill_create_ip; + + public String notify_url; + + public String trade_type; + + public String product_id; + +}