From b90cdf7d8c55951bb5ffc5aec3e22bd553f49d06 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 16:57:29 +0800 Subject: [PATCH 01/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 3237de5..92c1972 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -145,8 +145,8 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") - @PostMapping(value = "/aliNotify") - public Map _aliNotify(@RequestBody Map paranMap, HttpServletRequest request, HttpServletResponse response) { + @GetMapping(value = "/aliNotify") + public Map _aliNotify(@ModelAttribute Map paranMap, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); Map resultMap = new HashMap<>(); logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); From 4ea8d9007f3f65797789051dc9f4b40de7310c94 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 17:20:52 +0800 Subject: [PATCH 02/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 92c1972..3237de5 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -145,8 +145,8 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") - @GetMapping(value = "/aliNotify") - public Map _aliNotify(@ModelAttribute Map paranMap, HttpServletRequest request, HttpServletResponse response) { + @PostMapping(value = "/aliNotify") + public Map _aliNotify(@RequestBody Map paranMap, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); Map resultMap = new HashMap<>(); logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); From c24deaf52cadc1ff02de6365a0e60f0ba3e41eac Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 17:29:43 +0800 Subject: [PATCH 03/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 3237de5..7125c4d 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -146,7 +146,7 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(@RequestBody Map paranMap, HttpServletRequest request, HttpServletResponse response) { + public Map _aliNotify(@RequestParam Map paranMap, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); Map resultMap = new HashMap<>(); logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); From c87e06cd66bcb102856bbbe2d8060969b0605fad Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 17:38:52 +0800 Subject: [PATCH 04/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 7125c4d..9230587 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -146,7 +146,7 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(@RequestParam Map paranMap, HttpServletRequest request, HttpServletResponse response) { + public Map _aliNotify(@ModelAttribute Map paranMap, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); Map resultMap = new HashMap<>(); logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); From 2656382aac5040e663ec8601fd9e3702da608b62 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 17:56:01 +0800 Subject: [PATCH 05/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 9230587..d251ad1 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -146,7 +146,7 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(@ModelAttribute Map paranMap, HttpServletRequest request, HttpServletResponse response) { + public Map _aliNotify(@RequestParam Map paranMap) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); Map resultMap = new HashMap<>(); logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); From b9e7892c8b975c909aac61f71ba4ac9ba73f6390 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 18:12:31 +0800 Subject: [PATCH 06/40] //pay notify --- .../com/iformall/controller/CallbackPayController.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index d251ad1..e65cd92 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -146,10 +146,14 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(@RequestParam Map paranMap) { + public Map _aliNotify(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); + + String notify_id = request.getParameter("notify_id"); + String app_id = request.getParameter("app_id"); + String biz_content = request.getParameter("biz_content"); + logger.info("ali支付回调结果通知{}notify_id="+notify_id+",app_id="+app_id+",biz_content="+biz_content); Map resultMap = new HashMap<>(); - logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); /** * ----效验数据来源合法 */ From e7938b9311f6fb8fa16de17280a1564c32f003ab Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 18:13:04 +0800 Subject: [PATCH 07/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index e65cd92..11cef35 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -178,9 +178,9 @@ public class CallbackPayController extends BaseController { // resultMap.put("err_tips","success"); // } }catch(Exception e){ - logger.error("抖音支付回调处理异常"+e); + logger.error("ali支付回调处理异常"+e); resultMap.put("err_no",ErrorCode.SYS_SERVER_ERROR.getCode()); - resultMap.put("err_tips","抖音支付回调处理异常"); + resultMap.put("err_tips","ali支付回调处理异常"); } return resultMap; } From 904c13591d81139add5875b5680912530dc3711f Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 18:19:25 +0800 Subject: [PATCH 08/40] //pay notify --- .../controller/CallbackPayController.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 11cef35..0ef6d54 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -26,7 +26,10 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; @@ -154,10 +157,13 @@ public class CallbackPayController extends BaseController { String biz_content = request.getParameter("biz_content"); logger.info("ali支付回调结果通知{}notify_id="+notify_id+",app_id="+app_id+",biz_content="+biz_content); Map resultMap = new HashMap<>(); + /** * ----效验数据来源合法 */ try{ + String body = this.getBody(request); + logger.info("ali支付回调结果通知---body{}"+body); // String msg = (String) paranMap.get("msg"); // String type = (String) paranMap.get("type"); // @@ -185,4 +191,36 @@ public class CallbackPayController extends BaseController { return resultMap; } + + + private String getBody(HttpServletRequest request) throws IOException { + StringBuilder stringBuilder = new StringBuilder(); + BufferedReader bufferedReader = null; + try { + InputStream inputStream = request.getInputStream(); + if (inputStream != null) { + bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); + char[] charBuffer = new char[1024]; + int bytesRead = -1; + while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { + stringBuilder.append(charBuffer, 0, bytesRead); + } + } else { + stringBuilder.append(""); + } + } catch ( + IOException ex) { + throw ex; + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException ex) { + throw ex; + } + } + } + return stringBuilder.toString(); + } + } From 70af93d556bc6dd526e65b2252f2aa14cc5c1928 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 18:36:29 +0800 Subject: [PATCH 09/40] //pay notify --- .../controller/CallbackPayController.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 0ef6d54..bfa8176 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; @@ -152,10 +153,22 @@ public class CallbackPayController extends BaseController { public Map _aliNotify(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); - String notify_id = request.getParameter("notify_id"); - String app_id = request.getParameter("app_id"); - String biz_content = request.getParameter("biz_content"); - logger.info("ali支付回调结果通知{}notify_id="+notify_id+",app_id="+app_id+",biz_content="+biz_content); + Map< String , String > paranMap = new HashMap < String , String > (); + Map requestParams = request.getParameterMap(); + for(Iterator iter = requestParams.keySet().iterator(); iter.hasNext();){ + String name = (String)iter.next(); + String[] values = (String [])requestParams.get(name); + String valueStr = ""; + for(int i = 0;i < values.length;i ++ ){ + valueStr = (i==values.length-1)?valueStr + values [i]:valueStr + values[i] + ","; + } + //乱码解决,这段代码在出现乱码时使用。 + //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); + paranMap.put (name,valueStr); + } + + logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); + Map resultMap = new HashMap<>(); /** From 94424dc6eef808a2d0c0878467931ada52ea179b Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 19:22:25 +0800 Subject: [PATCH 10/40] //pay notify --- .../java/com/iformall/controller/CallbackPayController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index bfa8176..e5e5f53 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -150,8 +150,9 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(HttpServletRequest request, HttpServletResponse response) { + public Map _aliNotify(Map map,HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); + logger.info("ali支付回调结果通知1{}"+JSONObject.toJSONString(map)); Map< String , String > paranMap = new HashMap < String , String > (); Map requestParams = request.getParameterMap(); From f8e74eea8e3a9dd973a7c620cc53b7f83530aac8 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 19:40:37 +0800 Subject: [PATCH 11/40] //pay notify --- .../com/iformall/controller/CallbackPayController.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index e5e5f53..23c2cd5 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -10,6 +10,7 @@ import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxPayAccount; import com.iformall.enums.EnumAppPlat; import com.iformall.enums.EnumProductOrderPayVendor; +import com.iformall.interceptor.BodyReaderHttpServletRequestWrapper; import com.iformall.service.ProductOrderPayService; import com.iformall.service.ProductOrderService; import com.iformall.service.WxAppinfoService; @@ -150,12 +151,17 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(Map map,HttpServletRequest request, HttpServletResponse response) { + public Map _aliNotify(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); - logger.info("ali支付回调结果通知1{}"+JSONObject.toJSONString(map)); + + String body1 = ((BodyReaderHttpServletRequestWrapper) request).getBody(); + + logger.info("ali支付回调结果通知1{}"+JSONObject.toJSONString(body1)); Map< String , String > paranMap = new HashMap < String , String > (); Map requestParams = request.getParameterMap(); + logger.info("ali支付回调结果通知2{}"+JSONObject.toJSONString(requestParams)); + for(Iterator iter = requestParams.keySet().iterator(); iter.hasNext();){ String name = (String)iter.next(); String[] values = (String [])requestParams.get(name); From 4a57507fcff9008e5a5043345bdb323db074c147 Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 20:05:57 +0800 Subject: [PATCH 12/40] //pay notify --- .../controller/CallbackPayController.java | 101 ++++++------------ 1 file changed, 31 insertions(+), 70 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 23c2cd5..139c002 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -19,6 +19,7 @@ import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.service.pay.PayAdapterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.jdom2.JDOMException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -151,30 +152,12 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "/aliNotify") - public Map _aliNotify(HttpServletRequest request, HttpServletResponse response) { + public String _aliNotify(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); - String body1 = ((BodyReaderHttpServletRequestWrapper) request).getBody(); + String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); - logger.info("ali支付回调结果通知1{}"+JSONObject.toJSONString(body1)); - - Map< String , String > paranMap = new HashMap < String , String > (); - Map requestParams = request.getParameterMap(); - logger.info("ali支付回调结果通知2{}"+JSONObject.toJSONString(requestParams)); - - for(Iterator iter = requestParams.keySet().iterator(); iter.hasNext();){ - String name = (String)iter.next(); - String[] values = (String [])requestParams.get(name); - String valueStr = ""; - for(int i = 0;i < values.length;i ++ ){ - valueStr = (i==values.length-1)?valueStr + values [i]:valueStr + values[i] + ","; - } - //乱码解决,这段代码在出现乱码时使用。 - //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); - paranMap.put (name,valueStr); - } - - logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); + logger.info("ali支付回调结果通知 body{}"+body); Map resultMap = new HashMap<>(); @@ -182,65 +165,43 @@ public class CallbackPayController extends BaseController { * ----效验数据来源合法 */ try{ - String body = this.getBody(request); - logger.info("ali支付回调结果通知---body{}"+body); -// String msg = (String) paranMap.get("msg"); -// String type = (String) paranMap.get("type"); -// -// Map pMap = JSONObject.parseObject(msg, Map.class); -// String appid = (String) pMap.get("appid"); -// WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); -// WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); -// if("payment".equals(type)){ -// String out_order_no = (String)pMap.get("cp_orderno"); -// -// EnumProductOrderPayVendor payVendorEnum = EnumProductOrderPayVendor.PAY_WAY_TT; -// ProductOrderPay orderPay = productOrderPayService.getByOrder(Long.parseLong(out_order_no), payVendorEnum); -// -// PayAdapterService payAdapterService = payServiceFactory.getPayAdapterService(payVendorEnum.getCode()); -// productOrderPayService.handleProductOrderByQuery(appInfo,payAccount,orderPay,payAdapterService); -// -// resultMap.put("err_no",0); -// resultMap.put("err_tips","success"); -// } + Map paranMap = handBody(body); + logger.info("ali支付回调结果通知 paranMap{}"+JSONObject.toJSONString(paranMap)); + + String app_id = paranMap.get("app_id"); + WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id); + WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); + + String out_trade_no = paranMap.get("out_trade_no"); + String trade_status = paranMap.get("trade_status"); + if("TRADE_SUCCESS".equals(trade_status)){ + EnumProductOrderPayVendor payVendorEnum = EnumProductOrderPayVendor.PAY_WAY_ALIPAY_WAP; + ProductOrderPay orderPay = productOrderPayService.getByOrder(Long.parseLong(out_trade_no), payVendorEnum); + + PayAdapterService payAdapterService = payServiceFactory.getPayAdapterService(payVendorEnum.getCode()); + productOrderPayService.handleProductOrderByQuery(appInfo,payAccount,orderPay,payAdapterService); + } + return "success"; }catch(Exception e){ logger.error("ali支付回调处理异常"+e); - resultMap.put("err_no",ErrorCode.SYS_SERVER_ERROR.getCode()); - resultMap.put("err_tips","ali支付回调处理异常"); } - return resultMap; + return "fail"; } - private String getBody(HttpServletRequest request) throws IOException { - StringBuilder stringBuilder = new StringBuilder(); - BufferedReader bufferedReader = null; - try { - InputStream inputStream = request.getInputStream(); - if (inputStream != null) { - bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8")); - char[] charBuffer = new char[1024]; - int bytesRead = -1; - while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { - stringBuilder.append(charBuffer, 0, bytesRead); - } - } else { - stringBuilder.append(""); - } - } catch ( - IOException ex) { - throw ex; - } finally { - if (bufferedReader != null) { - try { - bufferedReader.close(); - } catch (IOException ex) { - throw ex; + private Map handBody(String body){ + Map map = new HashMap<>(); + if(StringUtils.isNotBlank(body)){ + String[] key_value = body.split("&"); + if(key_value.length > 0){ + for (String kv: key_value) { + String[] split = kv.split("="); + map.put(split[0],split[1]); } } } - return stringBuilder.toString(); + return map; } } From cd89633fb49b55dd66a247e20f63e932e745d88b Mon Sep 17 00:00:00 2001 From: xhxu Date: Mon, 23 Oct 2023 20:16:07 +0800 Subject: [PATCH 13/40] //pay notify --- .../service/pay/service/pay/ali/BaseAliPayAdapterService.java | 2 +- .../pay/service/pay/ali/page/AliPagePayAdapterService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/BaseAliPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/BaseAliPayAdapterService.java index ced3c73..0763419 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/BaseAliPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/BaseAliPayAdapterService.java @@ -51,7 +51,7 @@ public class BaseAliPayAdapterService { request.setBizContent(bizContent.toString()); try{ AlipayTradeQueryResponse response = alipayClient.execute(request); - + log.info("ali查询支付宝返回{}"+JSON.toJSONString(response)); if(response.isSuccess()){ if("10000".equals(response.getCode())){ PayQueryAdapterResult result = new PayQueryAdapterResult(); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java index e0682d4..bdeaa78 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java @@ -74,7 +74,7 @@ public class AliPagePayAdapterService extends BaseAliPayAdapterService implement request.setBizContent(bizContent.toString()); try{ AlipayTradePagePayResponse response = alipayClient.pageExecute(request); - log.info("创建支付返回{}"+ JSON.toJSONString(response)); + log.info("ali创建支付返回{}"+ JSON.toJSONString(response)); PayAdapterResult par = new PayAdapterResult(); if(response.isSuccess()){ From ba7903b5e99eb86b852060e76425f485fcf06a75 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 24 Oct 2023 15:28:40 +0800 Subject: [PATCH 14/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E5=90=88?= =?UTF-8?q?=E4=BD=9C=E5=95=86=E5=92=8C=E7=A7=98=E9=92=A5=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sm/ServiceInfoController.java | 49 +++++++++++++++++++ .../sm/ThirdPartyApiController.java | 32 ++++++++++++ .../src/main/resources/application-dev.yml | 10 +++- .../src/main/resources/application-prod.yml | 10 +++- .../domain/dto/neuver/SaveServiceInfoDTO.java | 2 +- .../dto/neuver/SaveThirdPartyApiDTO.java | 18 +++++++ .../dto/neuver/UpdateServiceInfoDTO.java | 29 +++++++++++ .../neuver/UpdateServiceInfoStatusDTO.java | 14 ++++++ .../neuver/UpdateThirdPartyApiStatusDTO.java | 14 ++++++ .../iformall/domain/po/sm/ServiceInfo.java | 2 +- .../iformall/enums/sm/EnumThirdPartyType.java | 31 ++++++++++++ .../iformall/mapper/ServiceInfoMapper.java | 16 ++++++ .../mapper/WxThirdPartyApiMapper.java | 7 +++ .../service/WxThirdPartyApiService.java | 26 ++++++++++ .../impl/WxThirdPartyApiServiceImpl.java | 49 ++++++++++++++++++- .../service/sm/ServiceInfoService.java | 19 ++++++- .../sm/impl/ServiceInfoServiceImpl.java | 41 ++++++++++++++-- .../resources/mapper/ServiceInfoMapper.xml | 41 ++++++++++++++++ .../mapper/WxThirdPartyApiMapper.xml | 35 +++++++++++-- 19 files changed, 431 insertions(+), 14 deletions(-) create mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java create mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java create mode 100644 suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java create mode 100644 suimangService/src/main/resources/mapper/ServiceInfoMapper.xml diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java new file mode 100644 index 0000000..d87d6f3 --- /dev/null +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java @@ -0,0 +1,49 @@ +package com.iformall.controller.sm; + +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; +import com.iformall.domain.po.sm.ServiceInfo; +import com.iformall.service.sm.ServiceInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/serviceInfo") +@Api(tags = "合作商接口") +public class ServiceInfoController extends BaseController { + + @Autowired + private ServiceInfoService serviceInfoService; + + @ApiOperation("分页查询合作商") + @GetMapping("/page") + public ResultData pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) { + return new ResultData(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize)); + } + + @ApiOperation("新增合作商") + @PostMapping("/save") + public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) { + serviceInfoService.saveServiceInfo(dto); + return new ResultData(); + } + + @ApiOperation("修改合作商") + @PostMapping("/update") + public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) { + serviceInfoService.updateServiceInfo(dto); + return new ResultData(); + } + + @ApiOperation("修改合作商状态") + @PostMapping("/updateStatus") + public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) { + serviceInfoService.updateServiceInfoStatus(dto); + return new ResultData(); + } +} diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java new file mode 100644 index 0000000..f8a9ffa --- /dev/null +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java @@ -0,0 +1,32 @@ +package com.iformall.controller.sm; + +import com.iformall.common.ResultData; +import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; +import com.iformall.domain.po.WxThirdPartyApi; +import com.iformall.service.WxThirdPartyApiService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/thirdPartyApi") +@Api(tags = "秘钥接口") +public class ThirdPartyApiController { + + @Autowired + private WxThirdPartyApiService thirdPartyApiService; + + @ApiOperation("分页查询秘钥") + @GetMapping("/page") + public ResultData pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) { + return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize)); + } + + @ApiOperation("修改秘钥状态") + @PostMapping("/updateStatus") + public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) { + thirdPartyApiService.updateThirdPartyApiStatus(dto); + return new ResultData(); + } +} diff --git a/suimangAdmin/src/main/resources/application-dev.yml b/suimangAdmin/src/main/resources/application-dev.yml index 7cc67eb..5eaf35c 100644 --- a/suimangAdmin/src/main/resources/application-dev.yml +++ b/suimangAdmin/src/main/resources/application-dev.yml @@ -200,4 +200,12 @@ ueditor: logging: level: com.iformall: debug - path: ./logs/admin \ No newline at end of file + path: ./logs/admin + +suimang: + oral_broadcasting: xxx + photo_speak: xxx + photo_speak_hy: xxx + digital_avatar: xxx + digital_avatar_hy: xxx + callbackUrl: xxx \ No newline at end of file diff --git a/suimangAdmin/src/main/resources/application-prod.yml b/suimangAdmin/src/main/resources/application-prod.yml index f2849f4..a3241f1 100644 --- a/suimangAdmin/src/main/resources/application-prod.yml +++ b/suimangAdmin/src/main/resources/application-prod.yml @@ -156,4 +156,12 @@ ueditor: logging: level: com.iformall.mapper: debug - path: ./logs/admin \ No newline at end of file + path: ./logs/admin + +suimang: + oral_broadcasting: xxx + photo_speak: xxx + photo_speak_hy: xxx + digital_avatar: xxx + digital_avatar_hy: xxx + callbackUrl: xxx \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java index ac6f1cd..7dcd4f8 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java @@ -16,7 +16,7 @@ public class SaveServiceInfoDTO { private String name; @ApiModelProperty("所在地址") private String address; - @ApiModelProperty("客户唯一凭证,api接入需提供") + @ApiModelProperty("客户唯一凭证") private String code; @ApiModelProperty("接入方式(1:api接入,2:私有化接入)") private Integer type; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java new file mode 100644 index 0000000..d993acc --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java @@ -0,0 +1,18 @@ +package com.iformall.domain.dto.neuver; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +@ApiModel(value = "新增开放接口秘钥") +@Data +@Builder +public class SaveThirdPartyApiDTO { + @ApiModelProperty("第三方类型(1:API接入,2:私有化接入)") + private Integer type; + @ApiModelProperty("名称") + private String name; + @ApiModelProperty("接入商id") + private Long serviceId; +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java new file mode 100644 index 0000000..3e9d8ba --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java @@ -0,0 +1,29 @@ +package com.iformall.domain.dto.neuver; + +import com.iformall.common.CommonConstants; +import com.iformall.domain.po.sm.ServiceInfo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@ApiModel(value = "修改接入商") +@Data +public class UpdateServiceInfoDTO { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("客户名称") + private String name; + @ApiModelProperty("所在地址") + private String address; + + public static ServiceInfo mapping(UpdateServiceInfoDTO dto) { + ServiceInfo serviceInfo = new ServiceInfo(); + serviceInfo.setId(dto.getId()); + serviceInfo.setUpdateTime(new Date()); + serviceInfo.setName(dto.getName()); + serviceInfo.setAddress(dto.getAddress()); + return serviceInfo; + } +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java new file mode 100644 index 0000000..65cc181 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java @@ -0,0 +1,14 @@ +package com.iformall.domain.dto.neuver; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "更新接入商状态") +@Data +public class UpdateServiceInfoStatusDTO { + @ApiModelProperty("接入商id") + private Long id; + @ApiModelProperty("状态(0:正常,1:失效)") + private Integer status; +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java new file mode 100644 index 0000000..7c1f55c --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java @@ -0,0 +1,14 @@ +package com.iformall.domain.dto.neuver; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "更新开放接口秘钥状态") +@Data +public class UpdateThirdPartyApiStatusDTO { + @ApiModelProperty("开放接口秘钥id") + private Long id; + @ApiModelProperty("状态(0:正常,1:失效)") + private Integer status; +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java index e654ccc..40b0483 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ServiceInfo.java @@ -44,7 +44,7 @@ public class ServiceInfo { @TableField("address") private String address; /** - * 客户唯一凭证,api接入需提供 + * 客户唯一凭证 */ @TableField("code") private String code; diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java new file mode 100644 index 0000000..b5ccf3d --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumThirdPartyType.java @@ -0,0 +1,31 @@ +package com.iformall.enums.sm; + +public enum EnumThirdPartyType { + API_JOIN(1, "API接入"), + PRIVATE_JOIN(2, "私有化接入"); + + public static EnumThirdPartyType getEnum(Integer code) { + for (EnumThirdPartyType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumThirdPartyType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java b/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java index 0e3645e..b678a16 100644 --- a/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/ServiceInfoMapper.java @@ -3,5 +3,21 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.sm.ServiceInfo; +import java.util.List; + +/** + * 合作商service + * + * @author xmzhao71 + * @date 2023-10-24 + */ public interface ServiceInfoMapper extends CommonMapper { + + /** + * 全查询合作商 + * + * @param serviceInfo + * @return {@link List}<{@link ServiceInfo}> + */ + List listServiceInfo(ServiceInfo serviceInfo); } diff --git a/suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java b/suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java index 1374b8c..1347eb4 100644 --- a/suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/WxThirdPartyApiMapper.java @@ -9,4 +9,11 @@ public interface WxThirdPartyApiMapper extends CommonMapper findList(WxThirdPartyApi apiConfig); + /** + * 全查询秘钥 + * + * @param thirdPartyApi + * @return {@link List}<{@link WxThirdPartyApi}> + */ + List listThirdPartyApi(WxThirdPartyApi thirdPartyApi); } diff --git a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java index 4f37ecd..4c01e9a 100644 --- a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java +++ b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java @@ -1,5 +1,8 @@ package com.iformall.service; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; +import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import java.util.List; @@ -18,4 +21,27 @@ public interface WxThirdPartyApiService { WxThirdPartyApi findByApp(String appId, String appKey); + /** + * 分页查询秘钥 + * + * @param thirdPartyApi + * @param pageNum + * @param pageSize + * @return {@link PageInfo}<{@link WxThirdPartyApi}> + */ + PageInfo pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize); + + /** + * 新增秘钥 + * + * @param dto + */ + void saveThirdPartyApi(SaveThirdPartyApiDTO dto); + + /** + * 修改秘钥状态 + * + * @param dto + */ + void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto); } diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java index 00ba72c..77feeb9 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java @@ -1,12 +1,19 @@ package com.iformall.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.iformall.domain.po.WxAppinfo; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.common.CommonConstants; +import com.iformall.common.IdWorker; +import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; +import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.mapper.WxThirdPartyApiMapper; import com.iformall.service.WxThirdPartyApiService; import com.iformall.utils.Constant; import com.iformall.utils.RedisCacheUtils; +import com.iformall.utils.sign.AppUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,4 +59,44 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService { RedisCacheUtils.cache(redisTemplate, Constant.publicApi + appId, apiConfig,0l); return apiConfig; } + + @Override + public PageInfo pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) { + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxThirdPartyApiMapper.listThirdPartyApi(thirdPartyApi)); + } + + @Override + public void saveThirdPartyApi(SaveThirdPartyApiDTO dto) { + WxThirdPartyApi thirdPartyApi = buildThirdPartyApi(dto); + wxThirdPartyApiMapper.insert(thirdPartyApi); + } + + @Override + public void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto) { + wxThirdPartyApiMapper.update(null, new LambdaUpdateWrapper() + .set(WxThirdPartyApi::getStatus, dto.getStatus()) + .eq(WxThirdPartyApi::getId, dto.getId())); + } + + /** + * 构建秘钥实体 + * + * @param dto + * @return {@link WxThirdPartyApi} + */ + private WxThirdPartyApi buildThirdPartyApi(SaveThirdPartyApiDTO dto) { + WxThirdPartyApi thirdPartyApi = new WxThirdPartyApi(); + thirdPartyApi.setId(IdWorker.get().nextId()); + thirdPartyApi.setType(dto.getType()); + thirdPartyApi.setName(dto.getName()); + thirdPartyApi.setServiceId(dto.getServiceId()); + String appId = AppUtils.getAppId(); + String appKey = AppUtils.getAppKey(appId); + String signKey = AppUtils.getSignKey(appId, appKey); + thirdPartyApi.setAppId(appId); + thirdPartyApi.setAppKey(appKey); + thirdPartyApi.setSignKey(signKey); + thirdPartyApi.setStatus(CommonConstants.STATUS_NORMAL); + return thirdPartyApi; + } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java index 71d5d60..7acd4ea 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java @@ -2,6 +2,9 @@ package com.iformall.service.sm; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; +import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.domain.vo.neuver.PageServiceInfoVO; /** @@ -26,5 +29,19 @@ public interface ServiceInfoService { * @param pageSize * @return {@link PageInfo}<{@link PageServiceInfoVO}> */ - PageInfo pageServiceInfo(Integer pageNum, Integer pageSize); + PageInfo pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize); + + /** + * 修改接入商 + * + * @param dto + */ + void updateServiceInfo(UpdateServiceInfoDTO dto); + + /** + * 修改接入商状态 + * + * @param dto + */ + void updateServiceInfoStatus(UpdateServiceInfoStatusDTO dto); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java index 860d6f1..76fad3d 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java @@ -1,18 +1,23 @@ package com.iformall.service.sm.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.CommonConstants; import com.iformall.common.ErrorCode; import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; +import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; +import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; import com.iformall.domain.po.sm.ServiceInfo; -import com.iformall.domain.vo.neuver.PageServiceInfoVO; import com.iformall.exception.BizException; import com.iformall.mapper.ServiceInfoMapper; +import com.iformall.service.WxThirdPartyApiService; import com.iformall.service.sm.ServiceInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Optional; @@ -21,20 +26,46 @@ public class ServiceInfoServiceImpl implements ServiceInfoService { @Autowired private ServiceInfoMapper serviceInfoMapper; + @Autowired + private WxThirdPartyApiService thirdPartyApiService; + @Transactional(rollbackFor = Exception.class) @Override public void saveServiceInfo(SaveServiceInfoDTO dto) { // 校验 ServiceInfo serviceInfo = serviceInfoMapper.selectOne(new LambdaQueryWrapper() .eq(ServiceInfo::getDelFlag, CommonConstants.DEL_FLAG_NORMAL) .eq(ServiceInfo::getCode, dto.getCode())); - Optional.ofNullable(serviceInfo).orElseThrow(() -> new BizException(ErrorCode.CODE_ALREADY_EXISTS)); + if (serviceInfo != null) { + throw new BizException(ErrorCode.CODE_ALREADY_EXISTS); + } + + ServiceInfo mapping = SaveServiceInfoDTO.mapping(dto); + serviceInfoMapper.insert(mapping); + + // 生成秘钥 + SaveThirdPartyApiDTO thirdPartyApi = SaveThirdPartyApiDTO.builder() + .type(mapping.getType()) + .name(mapping.getName()) + .serviceId(mapping.getId()) + .build(); + thirdPartyApiService.saveThirdPartyApi(thirdPartyApi); + } - serviceInfoMapper.insert(SaveServiceInfoDTO.mapping(dto)); + @Override + public PageInfo pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) { + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> serviceInfoMapper.listServiceInfo(serviceInfo)); + } + + @Override + public void updateServiceInfo(UpdateServiceInfoDTO dto) { + serviceInfoMapper.updateById(UpdateServiceInfoDTO.mapping(dto)); } @Override - public PageInfo pageServiceInfo(Integer pageNum, Integer pageSize) { - return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> serviceInfoMapper.selectList(null)); + public void updateServiceInfoStatus(UpdateServiceInfoStatusDTO dto) { + serviceInfoMapper.update(null, new LambdaUpdateWrapper() + .set(ServiceInfo::getStatus, dto.getStatus()) + .eq(ServiceInfo::getId, dto.getId())); } } diff --git a/suimangService/src/main/resources/mapper/ServiceInfoMapper.xml b/suimangService/src/main/resources/mapper/ServiceInfoMapper.xml new file mode 100644 index 0000000..6331589 --- /dev/null +++ b/suimangService/src/main/resources/mapper/ServiceInfoMapper.xml @@ -0,0 +1,41 @@ + + + + + + + + `id`, `create_time`, `update_time`, `name`, `address`, `code`, `type`, `status`, `del_flag` + + + + where 1 = 1 + + and `id` = #{id} + + + and `name` LIKE CONCAT('%', #{name},'%') + + + and `code` = #{code} + + + and `type` = #{type} + + + and `status` = #{status} + + + and `del_flag` = #{delFlag} + + + + + + + \ No newline at end of file diff --git a/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml b/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml index 85a0e4b..e8cb59f 100644 --- a/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml +++ b/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml @@ -21,8 +21,33 @@ - `id`,`tenant_id`,`parent_tenant_id`,`type`,`name`,`app_id`,`app_key`,`sign_key`,`api_url`, `token`,`token_expired_time`,`user_name`,`password`,`version`,`remark`,`tp_id` + `id`, `tenant_id`, `parent_tenant_id`, `type`, `name`, `service_id`, `app_id`, `app_key`, `sign_key`, `api_url`, `token`, `token_expired_time`, `user_name`, `password`, `version`, `tp_id`, `remark`, `status` + + + WHERE 1 = 1 + + AND `id` = #{id} + + + AND `type` = #{type} + + + AND `name` = #{name} + + + AND `service_id` = #{serviceId} + + + AND `app_id` = #{appId} + + + AND `app_key` = #{appKey} + + + AND `status` = #{status} + + where 1 = 1 @@ -62,6 +87,10 @@ - - + From 4dcfc2834fa044f69f5f68b7a62de201ccd32a25 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 24 Oct 2023 15:56:24 +0800 Subject: [PATCH 15/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=90=88?= =?UTF-8?q?=E4=BD=9C=E5=95=86=E5=92=8C=E7=A7=98=E9=92=A5=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/AuthorizationInterceptor.java | 1 - .../java/com/iformall/common/ErrorCode.java | 3 +++ .../dto/neuver/SaveServiceVideoRecordDTO.java | 4 ++++ .../dto/neuver/SaveThirdPartyApiDTO.java | 4 ++++ .../neuver/UpdateThirdPartyApiStatusDTO.java | 1 + .../impl/WxThirdPartyApiServiceImpl.java | 16 ++++++++++++++++ .../sm/impl/ServiceInfoServiceImpl.java | 18 ++++++++++++++---- 7 files changed, 42 insertions(+), 5 deletions(-) diff --git a/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index 11bd0fd..169289b 100644 --- a/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -68,7 +68,6 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { } try{ logger.info("请求body{}--"+body); -// JSONObject parameterMap = JSON.parseObject(body); Map parameterMap = JSONObject.parseObject(body, Map.class); if(parameterMap.isEmpty()){ throw new MallinkException(ErrorCode.SYS_PARAMETER_ERROR.getCode(),"参数格式不正确"); diff --git a/suimangService/src/main/java/com/iformall/common/ErrorCode.java b/suimangService/src/main/java/com/iformall/common/ErrorCode.java index b7b4129..90fc767 100644 --- a/suimangService/src/main/java/com/iformall/common/ErrorCode.java +++ b/suimangService/src/main/java/com/iformall/common/ErrorCode.java @@ -678,6 +678,9 @@ public enum ErrorCode{ ORDER_CREAT_OVERRUN(64000, "重复生成次数超限"), CODE_ALREADY_EXISTS(71000, "该code已存在"), + + SECRET_NOT_EXISTS(71001, "该秘钥不存在"), + SERVICE_LOCKED(71002, "合作商被锁定,无法修改"), ; private int code; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java index a9abc44..e146f73 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java @@ -4,14 +4,18 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.sm.ServiceVideoRecord; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Date; @ApiModel(value = "新增生成视频时长记录") @Data @Builder +@NoArgsConstructor +@AllArgsConstructor public class SaveServiceVideoRecordDTO { @ApiModelProperty("接入商标识") private Long serviceId; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java index d993acc..79bec50 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java @@ -2,12 +2,16 @@ package com.iformall.domain.dto.neuver; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; @ApiModel(value = "新增开放接口秘钥") @Data @Builder +@NoArgsConstructor +@AllArgsConstructor public class SaveThirdPartyApiDTO { @ApiModelProperty("第三方类型(1:API接入,2:私有化接入)") private Integer type; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java index 7c1f55c..c3b059d 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java @@ -2,6 +2,7 @@ package com.iformall.domain.dto.neuver; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; import lombok.Data; @ApiModel(value = "更新开放接口秘钥状态") diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java index 77feeb9..d3db214 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java @@ -1,14 +1,19 @@ package com.iformall.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.CommonConstants; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; +import com.iformall.domain.po.sm.ServiceInfo; +import com.iformall.exception.BizException; +import com.iformall.mapper.ServiceInfoMapper; import com.iformall.mapper.WxThirdPartyApiMapper; import com.iformall.service.WxThirdPartyApiService; import com.iformall.utils.Constant; @@ -32,6 +37,8 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService { @Autowired WxThirdPartyApiMapper wxThirdPartyApiMapper; + @Autowired + private ServiceInfoMapper serviceInfoMapper; @Autowired @Qualifier("objectCommonRedisTemplate") @@ -55,6 +62,7 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService { WxThirdPartyApi apiQ = new WxThirdPartyApi(); apiQ.setAppId(appId); apiQ.setAppKey(appKey); + apiQ.setStatus(CommonConstants.STATUS_NORMAL); apiConfig = wxThirdPartyApiMapper.selectOne(new QueryWrapper<>(apiQ)); RedisCacheUtils.cache(redisTemplate, Constant.publicApi + appId, apiConfig,0l); return apiConfig; @@ -73,6 +81,14 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService { @Override public void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto) { + WxThirdPartyApi thirdPartyApi = wxThirdPartyApiMapper.selectOne(new LambdaQueryWrapper().eq(WxThirdPartyApi::getId, dto.getId())); + if (thirdPartyApi == null) { + throw new BizException(ErrorCode.SECRET_NOT_EXISTS); + } + ServiceInfo serviceInfo = serviceInfoMapper.selectOne(new LambdaQueryWrapper().eq(ServiceInfo::getId, thirdPartyApi.getServiceId())); + if (serviceInfo == null || CommonConstants.STATUS_ABNORMAL.equals(serviceInfo.getStatus())) { + throw new BizException(ErrorCode.SERVICE_LOCKED); + } wxThirdPartyApiMapper.update(null, new LambdaUpdateWrapper() .set(WxThirdPartyApi::getStatus, dto.getStatus()) .eq(WxThirdPartyApi::getId, dto.getId())); diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java index 76fad3d..64e113c 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java @@ -6,13 +6,12 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.CommonConstants; import com.iformall.common.ErrorCode; -import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; -import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; +import com.iformall.domain.dto.neuver.*; +import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.exception.BizException; import com.iformall.mapper.ServiceInfoMapper; +import com.iformall.mapper.WxThirdPartyApiMapper; import com.iformall.service.WxThirdPartyApiService; import com.iformall.service.sm.ServiceInfoService; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +27,8 @@ public class ServiceInfoServiceImpl implements ServiceInfoService { private ServiceInfoMapper serviceInfoMapper; @Autowired private WxThirdPartyApiService thirdPartyApiService; + @Autowired + private WxThirdPartyApiMapper wxThirdPartyApiMapper; @Transactional(rollbackFor = Exception.class) @Override @@ -62,10 +63,19 @@ public class ServiceInfoServiceImpl implements ServiceInfoService { serviceInfoMapper.updateById(UpdateServiceInfoDTO.mapping(dto)); } + @Transactional(rollbackFor = Exception.class) @Override public void updateServiceInfoStatus(UpdateServiceInfoStatusDTO dto) { + // 修改合作商状态 serviceInfoMapper.update(null, new LambdaUpdateWrapper() .set(ServiceInfo::getStatus, dto.getStatus()) .eq(ServiceInfo::getId, dto.getId())); + + if (CommonConstants.STATUS_ABNORMAL.equals(dto.getStatus())) { + // 若合作商为锁定状态,则修改秘钥状态 + wxThirdPartyApiMapper.update(null, new LambdaUpdateWrapper() + .set(WxThirdPartyApi::getStatus, dto.getStatus()) + .eq(WxThirdPartyApi::getServiceId, dto.getId())); + } } } From a0566a2adc8f957e71950047eb9f11b68e6f6567 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 24 Oct 2023 18:13:46 +0800 Subject: [PATCH 16/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/config/ShiroConfig.java | 4 ++-- .../iformall/controller/sys/HomeController.java | 1 - .../controller/sys/MallRoleController.java | 2 -- .../java/com/iformall/shiro/MyShiroRealm.java | 15 --------------- 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 75223d8..7e8f60c 100644 --- a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -149,8 +149,8 @@ public class ShiroConfig { //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "authc"); -// filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); - filterChainDefinitionMap.put("/**", "anon"); + filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); +// filterChainDefinitionMap.put("/**", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index f7cb3c0..7f7b9a5 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -110,7 +110,6 @@ public class HomeController extends BaseController { } if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())) { -// throw new SystemException(ErrorCode.LOGIN_USER_OR_PWD_ERROR); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } // check user diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java index e6178e8..3ad9ded 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java @@ -45,11 +45,9 @@ public class MallRoleController extends BaseController { @ApiOperation("角色列表") @GetMapping("list") - //@RequiresPermissions("sys:role:list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - @SystemControllerLog(description = "用户管理-role列表") public ResultData list(MallRole sysRole, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] MallRoleController::list"); sysRole.updateTenantInfo(getTenantInfo()); diff --git a/suimangAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java b/suimangAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java index 2689cc3..3d98dc0 100644 --- a/suimangAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java +++ b/suimangAdmin/src/main/java/com/iformall/shiro/MyShiroRealm.java @@ -46,11 +46,6 @@ public class MyShiroRealm extends AuthorizingRealm { if(user == null) { throw new UnknownAccountException(ErrorCode.USER_IS_EMPTY.getMessage()); } - // 租户1为预留系统管理端 -// if(user.getTenantId().equals("1")) { -// // 只支持租户为1的用户 -// throw new UnknownAccountException("租户不支持"); -// } if(user.getStatus()==null || !EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) {//用户被禁用 @@ -67,16 +62,6 @@ public class MyShiroRealm extends AuthorizingRealm { session.setAttribute(UserSession.userInfo, user); session.setAttribute(UserSession.userId, user.getId()); session.setAttribute(UserSession.tenantId, user.getTenantId()); - if (StringUtils.isNotBlank(user.getParentTenantId())) { - session.setAttribute(UserSession.parentTenantId, user.getParentTenantId()); - }else{ - session.setAttribute(UserSession.parentTenantId, null); -// String parentTenantId = (String)session.getAttribute(UserSession.parentTenantId); -// if(StringUtils.isNotBlank(parentTenantId)){ -// session.removeAttribute(UserSession.parentTenantId); -// } - } - return authenticationInfo; } From a8ca9a090e83721caa40dc206e75789a850b7bb4 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 25 Oct 2023 10:43:36 +0800 Subject: [PATCH 17/40] //yml --- .../controller/ProductOrderController.java | 22 ------------------- .../src/main/resources/application-dev.yml | 4 ++-- .../src/main/resources/application-prod.yml | 2 +- .../src/main/resources/application-dev.yml | 4 ++-- .../src/main/resources/application-prod.yml | 2 +- 5 files changed, 6 insertions(+), 28 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java index 030f2b1..722b138 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ProductOrderController.java @@ -1,31 +1,15 @@ package com.iformall.controller; -import com.github.pagehelper.PageInfo; import com.iformall.annotation.AuthIgnore; -import com.iformall.annotation.TenantIgnore; import com.iformall.common.ErrorCode; -import com.iformall.common.Result; import com.iformall.common.ResultData; -import com.iformall.domain.dto.OrderComposeSaveDto; -import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.*; -import com.iformall.domain.po.base.BaseEntity; -import com.iformall.domain.po.sm.PersonPhoto; import com.iformall.enums.*; -import com.iformall.exception.MallinkException; import com.iformall.service.*; import com.iformall.service.pay.PayServiceFactory; -import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.PayAdapterService; -import com.iformall.sm.AiDigitalAvatarHelper; -import com.iformall.sm.ShareImgParam; -import com.iformall.sm.ShareImgResult; -import com.iformall.utils.Base64Util; -import com.iformall.utils.Constant; -import com.iformall.utils.DateUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -33,12 +17,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; - @RestController @RequestMapping("/api/productOrder") diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml index 49069e6..83ec583 100644 --- a/suimangCApi/src/main/resources/application-dev.yml +++ b/suimangCApi/src/main/resources/application-dev.yml @@ -192,6 +192,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 - callbackUrl: https://test.metavatar.cc/C + callbackUrl: https://mtest.metavatar.cc/C diff --git a/suimangCApi/src/main/resources/application-prod.yml b/suimangCApi/src/main/resources/application-prod.yml index 8ba888b..c836eb9 100644 --- a/suimangCApi/src/main/resources/application-prod.yml +++ b/suimangCApi/src/main/resources/application-prod.yml @@ -147,6 +147,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://metavatar.cc/C diff --git a/suimangSchedule/src/main/resources/application-dev.yml b/suimangSchedule/src/main/resources/application-dev.yml index d075af1..d4669fc 100644 --- a/suimangSchedule/src/main/resources/application-dev.yml +++ b/suimangSchedule/src/main/resources/application-dev.yml @@ -195,6 +195,6 @@ suimang: oral_broadcasting: http://nas.pucao.cn:2001 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 - callbackUrl: https://test.metavatar.cc/C \ No newline at end of file + callbackUrl: https://mtest.metavatar.cc/C \ No newline at end of file diff --git a/suimangSchedule/src/main/resources/application-prod.yml b/suimangSchedule/src/main/resources/application-prod.yml index 83e1c3f..63484c9 100644 --- a/suimangSchedule/src/main/resources/application-prod.yml +++ b/suimangSchedule/src/main/resources/application-prod.yml @@ -151,6 +151,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://metavatar.cc/C \ No newline at end of file From 09d3be90573e9d198d22d5375cc247c054d2b628 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 25 Oct 2023 10:55:27 +0800 Subject: [PATCH 18/40] //yml --- suimangCApi/src/main/resources/application-dev.yml | 2 +- suimangCApi/src/main/resources/application-prod.yml | 2 +- suimangSchedule/src/main/resources/application-dev.yml | 2 +- suimangSchedule/src/main/resources/application-prod.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml index 83ec583..0988c7b 100644 --- a/suimangCApi/src/main/resources/application-dev.yml +++ b/suimangCApi/src/main/resources/application-dev.yml @@ -192,6 +192,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://nas.pucao.cn:2005 + digital_avatar: http://111.198.0.15:22200 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://mtest.metavatar.cc/C diff --git a/suimangCApi/src/main/resources/application-prod.yml b/suimangCApi/src/main/resources/application-prod.yml index c836eb9..8ba888b 100644 --- a/suimangCApi/src/main/resources/application-prod.yml +++ b/suimangCApi/src/main/resources/application-prod.yml @@ -147,6 +147,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://nas.pucao.cn:2005 + digital_avatar: http://111.198.0.15:22200 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://metavatar.cc/C diff --git a/suimangSchedule/src/main/resources/application-dev.yml b/suimangSchedule/src/main/resources/application-dev.yml index d4669fc..25b9443 100644 --- a/suimangSchedule/src/main/resources/application-dev.yml +++ b/suimangSchedule/src/main/resources/application-dev.yml @@ -195,6 +195,6 @@ suimang: oral_broadcasting: http://nas.pucao.cn:2001 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://nas.pucao.cn:2005 + digital_avatar: http://111.198.0.15:22200 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://mtest.metavatar.cc/C \ No newline at end of file diff --git a/suimangSchedule/src/main/resources/application-prod.yml b/suimangSchedule/src/main/resources/application-prod.yml index 63484c9..83e1c3f 100644 --- a/suimangSchedule/src/main/resources/application-prod.yml +++ b/suimangSchedule/src/main/resources/application-prod.yml @@ -151,6 +151,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://nas.pucao.cn:2005 + digital_avatar: http://111.198.0.15:22200 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://metavatar.cc/C \ No newline at end of file From 37b25badea3f6f4e1fc1b6dd881d2adb1029d1f6 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 14:35:16 +0800 Subject: [PATCH 19/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9a=E7=AB=AF?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=BF=E9=97=AE=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suimangAdmin/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangAdmin/src/main/resources/application.yml b/suimangAdmin/src/main/resources/application.yml index 8a81cd8..85d85e6 100644 --- a/suimangAdmin/src/main/resources/application.yml +++ b/suimangAdmin/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 9500 servlet: - context-path: / + context-path: /A spring: application: From 067494e8f316b189a227b6917dbd74cd48f25c18 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 25 Oct 2023 14:36:27 +0800 Subject: [PATCH 20/40] =?UTF-8?q?//=E9=A1=B9=E7=9B=AEappinfo=E9=9A=94?= =?UTF-8?q?=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/WxProjectConfigController.java | 70 -- .../controller/CallbackPayController.java | 23 +- .../controller/MiniAppUserController.java | 53 +- .../java/com/iformall/mq/MqBaseConsumer.java | 4 - .../com/iformall/domain/po/WxPayAccount.java | 16 - .../iformall/service/WxAppinfoService.java | 18 +- .../iformall/service/WxPayBillService.java | 70 -- .../service/WxRefundOrderService.java | 7 - .../service/impl/WxAppinfoServiceImpl.java | 110 +-- .../service/impl/WxPayBillServiceImpl.java | 882 ------------------ .../impl/WxRefundOrderServiceImpl.java | 20 - ...sideNotifyRefundSuccessMsgServiceImpl.java | 35 - .../ali/page/AliPagePayAdapterService.java | 2 +- .../miniApp/TtMiniAppPayAdapterService.java | 2 +- .../appPay/WxMiniAppPaySFTAdapterService.java | 4 +- .../appPay/WxMiniAppPayAdapterService.java | 4 +- .../appPay/WxMiniAppPayV3AdapterService.java | 7 +- .../WxNativePayV3AdapterService.java | 2 +- .../refund/RefundPayAdapterService.java | 8 +- .../refund/ali/AliRefundAdapterService.java | 62 -- .../refund/douyin/TtRefundAdapterService.java | 60 -- .../refund/wx/v2/WxRefundAdapterService.java | 188 +--- .../wx/v3/WxRefundV3AdapterService.java | 89 +- .../main/java/com/iformall/utils/MaUtil.java | 45 - 24 files changed, 99 insertions(+), 1682 deletions(-) delete mode 100644 suimangService/src/main/java/com/iformall/service/WxPayBillService.java delete mode 100644 suimangService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java delete mode 100644 suimangService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyRefundSuccessMsgServiceImpl.java diff --git a/suimangAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java b/suimangAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java index 8b87e0b..e4defb0 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/basic/WxProjectConfigController.java @@ -814,76 +814,6 @@ public class WxProjectConfigController extends BaseController { } } - @ApiOperation("获取抖音支付2.0 回调接口配置") - @GetMapping("/ttcallback/query/settings") - @SystemControllerLog(description = "") - @TenantIgnore - public ResultData ttcallbackQuerySettings(String appid) { - logger.debug("[" + getIpAddr() + "] WxProjectConfigController::ttcallbackQuerySettings"); - try { - WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); - if(appinfo == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的小程序"); - } - if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) - || !EnumAppType.C.getCode().equals(appinfo.getType())){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该小程序不支持"); - } - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); - if(payAccount == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的支付数据"); - } - TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); - CallBackSettingsRequest callBackSettingsRequest = ttPayService.querySettings(); - return new ResultData(callBackSettingsRequest); - }catch (Exception e){ - logger.error(e.getMessage(),e); - return new ResultData(ErrorCode.SYS_SERVER_ERROR); - } - } - @ApiOperation("配置抖音支付2.0 回调接口") - @PostMapping("/ttcallback/settings") - @SystemControllerLog(description = "商场集团-更新") - @TenantIgnore - public ResultData ttcallbackSettings(@RequestBody Map map) { - logger.debug("[" + getIpAddr() + "] WxProjectConfigController::ttcallbackSettings"); - String appid = map.get("appid"); - String create_order_callback = map.get("createOrderCallback"); - String refund_callback = map.get("refundCallback"); - String delivery_qrcode_redirect = map.get("deliveryQrcodeRedirect"); - if(StringUtils.isBlank(appid) || StringUtils.isBlank(create_order_callback) - || StringUtils.isBlank(refund_callback)){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); - } - try { - WxAppinfo appinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); - if(appinfo == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的小程序"); - } - if(!EnumAppPlat.TOUTIAO.getCode().equals(appinfo.getPlat()) - || !EnumAppType.C.getCode().equals(appinfo.getType())){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"该小程序不支持"); - } - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); - if(payAccount == null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"未找到对应的支付数据"); - } - TtPayService ttPayService = maUtil.getTtPayService(appinfo, payAccount); - CallBackSettingsRequest request = new CallBackSettingsRequest(); - request.setCreateOrderCallback(create_order_callback); - request.setRefundCallback(refund_callback); - request.setDeliveryQrcodeRedirect(delivery_qrcode_redirect); - boolean b = ttPayService.callbackSettings(request); - if(b){ - return new ResultData(); - }else{ - return new ResultData(ErrorCode.SYS_SERVER_ERROR); - } - }catch (Exception e){ - logger.error(e.getMessage(),e); - return new ResultData(ErrorCode.SYS_SERVER_ERROR); - } - } } diff --git a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java index 139c002..7447339 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java @@ -58,7 +58,8 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") @PostMapping(value = "{projectType}/pay/v3") - public void _payV3Notify(@PathVariable Integer projectType,@RequestBody Map paranMap, HttpServletResponse response) { + public void _payV3Notify(@PathVariable Integer projectType, @RequestBody Map paranMap, + HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_payV3Notify"); logger.info("微信支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); /** @@ -113,8 +114,9 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") - @PostMapping(value = "/ttNotify") - public Map _ttNotify(@RequestBody Map paranMap, HttpServletRequest request, HttpServletResponse response) { + @PostMapping(value = "{projectType}/ttNotify") + public Map _ttNotify(@PathVariable Integer projectType, @RequestBody Map paranMap, + HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_ttNotify"); Map resultMap = new HashMap<>(); logger.info("抖音支付回调结果通知{}"+JSONObject.toJSONString(paranMap)); @@ -126,8 +128,9 @@ public class CallbackPayController extends BaseController { String type = (String) paranMap.get("type"); Map pMap = JSONObject.parseObject(msg, Map.class); - String appid = (String) pMap.get("appid"); - WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); +// String appid = (String) pMap.get("appid"); +// WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid); + WxAppinfo appInfo = wxAppinfoService.getProjectCAppInfoFromRedis(projectType, EnumAppPlat.TOUTIAO.getCode()); WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); if("payment".equals(type)){ String out_order_no = (String)pMap.get("cp_orderno"); @@ -151,8 +154,9 @@ public class CallbackPayController extends BaseController { @AuthIgnore @ApiOperation("支付回调") - @PostMapping(value = "/aliNotify") - public String _aliNotify(HttpServletRequest request, HttpServletResponse response) { + @PostMapping(value = "{projectType}/aliNotify") + public String _aliNotify(@PathVariable Integer projectType, + HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify"); String body = ((BodyReaderHttpServletRequestWrapper) request).getBody(); @@ -168,8 +172,9 @@ public class CallbackPayController extends BaseController { Map paranMap = handBody(body); logger.info("ali支付回调结果通知 paranMap{}"+JSONObject.toJSONString(paranMap)); - String app_id = paranMap.get("app_id"); - WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id); +// String app_id = paranMap.get("app_id"); +// WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id); + WxAppinfo appInfo = wxAppinfoService.getProjectCAppInfoFromRedis(projectType, EnumAppPlat.ALI.getCode()); WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); String out_trade_no = paranMap.get("out_trade_no"); diff --git a/suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java b/suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java index b5444c1..3625ab1 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/MiniAppUserController.java @@ -89,22 +89,17 @@ public class MiniAppUserController extends BaseController { public ResultData login(@RequestBody Map map) { String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] MiniAppUserController::login"); - logger.info("login >>>>>>>>>>>>>>>>>"+map.toString()); Map resultMap = new HashMap(); - + String project = map.get("projectType"); String appId = map.get("appId"); String code = map.get("code"); - //登录凭证不能为空 - if (StringUtils.isBlank(appId)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空"); - } + if (StringUtils.isBlank(code)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "code不能为空"); } - - WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); + WxAppinfo wxAppinfo = getAppInfo(appId,project); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -176,21 +171,19 @@ public class MiniAppUserController extends BaseController { public ResultData loginPhone(@RequestBody Map map) { String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] MiniAppUserController::loginPhone"); - logger.info("loginPhone >>>>>>>>>>>>>>>>>"+map.toString()); + + String project = map.get("projectType"); String appId = map.get("appId"); String openId = map.get("openId"); String encryptedData = map.get("encryptedData"); String iv = map.get("iv"); - if(StringUtils.isBlank(appId)){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId 不能为空"); - } if(StringUtils.isBlank(openId)){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "openId 不能为空"); } - WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); + WxAppinfo wxAppinfo = getAppInfo(appId,project); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -252,23 +245,20 @@ public class MiniAppUserController extends BaseController { public ResultData loginPhoneCode(@RequestBody Map map, HttpServletResponse response) { String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] MiniAppUserController::loginPhoneCode"); - logger.info("loginPhoneCode >>>>>>>>>>>>>>>>>"+map.toString()); // String phone,String code,String pwd + String project = map.get("projectType"); String appId = map.get("appId"); String openId = map.get("openId"); String phone = map.get("phone"); String code = map.get("code"); - if(StringUtils.isBlank(appId)){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId 不能为空"); - } if(StringUtils.isBlank(openId)){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "openId 不能为空"); } - WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); + WxAppinfo wxAppinfo = getAppInfo(appId,project); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -334,15 +324,13 @@ public class MiniAppUserController extends BaseController { @PostMapping("/getUserQrcode") @ApiOperation(value = "获取二维码", notes = "{\"encryptedData\":\"string\",\"iv\":\"string\"}") public ResultData getUserQrcode(@RequestBody Map map) { - logger.info(map.toString()); + logger.info("getUserQrcode >>>>>>>>>>>>>>>>>"+map.toString()); + + String project = map.get("projectType"); String appId = map.get("appId"); String img = map.get("img"); - if(StringUtils.isBlank(appId)){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId 不能为空"); - } - - WxAppinfo wxAppinfo = wxAppinfoService.getOnlyByAppIdFromRedis(appId); + WxAppinfo wxAppinfo = getAppInfo(appId,project); if(wxAppinfo == null){ return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } @@ -369,4 +357,21 @@ public class MiniAppUserController extends BaseController { } } + private WxAppinfo getAppInfo(String appId,String project){ + if (StringUtils.isBlank(appId)) { + return null; + } + Integer projectType = null; + if(StringUtils.isNotBlank(project)){ + try{ + projectType = Integer.parseInt(project); + }catch(Exception e){} + } + //兼容处理 + if(projectType == null){ + projectType = EnumProject.PROJECT_5.getCode(); + } + return wxAppinfoService.getProjectCAppInfo(appId,projectType); + } + } diff --git a/suimangMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java b/suimangMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java index 1511c3f..45b094d 100644 --- a/suimangMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java +++ b/suimangMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java @@ -51,8 +51,6 @@ public class MqBaseConsumer { //@Autowired //private FmInsideNotifyPaySuccessMsgServiceImpl fmInsideNotifyPaySuccessMsgService; - @Autowired - private FmInsideNotifyRefundSuccessMsgServiceImpl fmInsideNotifyRefundSuccessMsgService; //@Autowired //UpdateCouponStockMsgServiceImpl updateCouponStockMsgService; @@ -160,8 +158,6 @@ public class MqBaseConsumer { //} else if(EnumMsgRecordType.INSIDE_NOTIFY_REFUND_SUCCESS.getCode().equals(baseMsg.getMsgType())) { // 内部消息 - 微信退款通知 - FmInsideNotifyRefundSuccessMsg msg = (FmInsideNotifyRefundSuccessMsg)JsonUtil.readValue(message,FmInsideNotifyRefundSuccessMsg.class); - fmInsideNotifyRefundSuccessMsgService.send(msg); } else if(EnumMsgRecordType.CASH_OUT.getCode().equals(baseMsg.getMsgType())) { // 内部消息 - 商户提现通知 diff --git a/suimangService/src/main/java/com/iformall/domain/po/WxPayAccount.java b/suimangService/src/main/java/com/iformall/domain/po/WxPayAccount.java index 32fe025..20205c2 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/WxPayAccount.java +++ b/suimangService/src/main/java/com/iformall/domain/po/WxPayAccount.java @@ -77,22 +77,6 @@ public class WxPayAccount extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="销售提点",name="sellRate") private Integer sellRate; - public String getPayNotifyV3Url(Integer projectType) { - if(projectType == null){ - return notifyUrl + "/pay/v3"; - } - return notifyUrl + "/" + projectType + "/pay/v3"; - } - public String getPayNotifyUrl() { - return notifyUrl + "/pay"; - } - public String getRefundNotifyV3Url() { - return notifyUrl + "/refund/v3"; - } - public String getRefundNotifyUrl() { - return notifyUrl + "/refund"; - } - @io.swagger.annotations.ApiModelProperty(value="微信支付分serviceId",name="serviceId") private String serviceId; @io.swagger.annotations.ApiModelProperty(value="微信支付分回调地址",name="payScoreNotifyUrl") diff --git a/suimangService/src/main/java/com/iformall/service/WxAppinfoService.java b/suimangService/src/main/java/com/iformall/service/WxAppinfoService.java index 7ea31cc..b9a83fe 100644 --- a/suimangService/src/main/java/com/iformall/service/WxAppinfoService.java +++ b/suimangService/src/main/java/com/iformall/service/WxAppinfoService.java @@ -52,15 +52,6 @@ public interface WxAppinfoService { */ WxAppinfo getById(Long id); - /** - * 多个存在获取集团的。 - * - * @param appId - * @return - */ - WxAppinfo getOnlyByAppId(String appId); - WxAppinfo getByAppId(String appId,String tenantId); - /** * 获取c端小程序信息 * @return @@ -85,14 +76,15 @@ public interface WxAppinfoService { */ void deleteById(Long id); - WxAppinfo getOnlyByAppIdFromRedis(String appId); - WxAppinfo getByAppIdFromRedis(String appId,String tenantId); - WxAppinfo getByIdFromRedis(Long id); - WxAppinfo getCAppInfoFromRedis(String tenantId, EnumAppPlat appPlat); + WxAppinfo getProjectCAppInfo(Integer projectType, Integer plat); WxAppinfo getProjectCAppInfoFromRedis(Integer projectType, Integer plat); + WxAppinfo getProjectCAppInfo(String appId, Integer projectType); + + WxAppinfo getProjectCAppInfoFromRedis(String appId, Integer projectType); + } diff --git a/suimangService/src/main/java/com/iformall/service/WxPayBillService.java b/suimangService/src/main/java/com/iformall/service/WxPayBillService.java deleted file mode 100644 index 97a48a3..0000000 --- a/suimangService/src/main/java/com/iformall/service/WxPayBillService.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.iformall.service; - -import com.iformall.common.ResultData; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxPayBill; -import com.iformall.enums.EnumPayWay; - -import java.util.Map; - -/** - * @author gongbiao - */ -public interface WxPayBillService { - - /** - * 创建支付订单 - * - * @param record 支付订单请求 - * @param payWay - * @return - */ - ResultData createPayBill(WxMerchant merchant,Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay); - - /** - * 微信支付订单查询 - * @param appInfo 支付订单Appinfo - * @param record 支付订单 - */ - ResultData payBillQuery(WxAppinfo appInfo, WxPayBill record); - - /** - * 微信支付关闭订单 - * @param appInfo 支付订单Appinfo - * @param record 支付订单 - */ - ResultData payBillClose(WxAppinfo appInfo, WxPayBill record); - - /** - * 异步通知 - * - * @param paramMap 异步通知参数 - * @param payWay 支付方式 - * @return - */ - String notify(String tenantId,Map paramMap, EnumPayWay payWay); - - /** - * 支付成功处理 - * - * @param record - * @param transactionId - */ - void handleBillPaySuccess(WxPayBill record, String transactionId); - - /** - * 支付状态处理 - * - * @param record - */ - void handlePayBillStatusUpdate(WxPayBill record); - - - WxPayBill getById(Long payBillId); - - void updatePayBillStatus(WxPayBill payBill); - - WxPayBill queryPayBill(WxPayBill payBill); - -} diff --git a/suimangService/src/main/java/com/iformall/service/WxRefundOrderService.java b/suimangService/src/main/java/com/iformall/service/WxRefundOrderService.java index 4a50d3e..f10f523 100644 --- a/suimangService/src/main/java/com/iformall/service/WxRefundOrderService.java +++ b/suimangService/src/main/java/com/iformall/service/WxRefundOrderService.java @@ -41,13 +41,6 @@ public interface WxRefundOrderService { * @return */ ResultData queryRefundOrder(WxAppinfo appInfo, WxRefundOrder record); - /** - * 异步通知 - * @param paramMap 异步通知参数 - * @param payWay 支付方式 - * @return - */ - String notify(Map paramMap, EnumPayWay payWay,EnumPayVersion payVersion); /** * 处理退款成功 diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java index bfd6a0e..9c93d9a 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxAppinfoServiceImpl.java @@ -15,6 +15,7 @@ import com.iformall.service.WxMallService; import com.iformall.utils.Constant; import com.iformall.utils.RedisCacheUtils; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -93,30 +94,6 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { } return null; } - - @Override - public WxAppinfo getOnlyByAppId(String appId) { - WxAppinfo appinfoQ = new WxAppinfo(); - appinfoQ.setAppId(appId); - List list = wxAppinfoMapper.findList(appinfoQ); - if(list.size() == 1){ - return list.get(0); - }else if(list.size() > 0){ - for (WxAppinfo appinfo:list) { - TenantEntity tenantEntity = new TenantEntity(); - tenantEntity.setTenantId(appinfo.getTenantId()); - if(wxMallService.isgroupSupport(tenantEntity)){ - return appinfo; - } - } - } - return null; - } - - @Override - public WxAppinfo getByAppId(String appId, String tenantId) { - return wxAppinfoMapper.findByAppId(appId,tenantId); - } @Override public void wxAppinfoInit(String tenantId, Long payId, Long payBillId, WxProjectConfig wxProjectConfig) { @@ -174,48 +151,6 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { wxAppinfoMapper.deleteById(id); } - @Override - public WxAppinfo getOnlyByAppIdFromRedis(String appId) { - WxAppinfo record = null; - String key = Constant.appinfoPrev + "only" + ":" + appId; - record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); - if (null == record) { - record = this.getOnlyByAppId(appId); - if(record != null){ - RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); - } - } - return record; - } - - @Override - public WxAppinfo getByAppIdFromRedis(String appId,String tenantId) { - WxAppinfo record = null; - String key = Constant.appinfoPrev + tenantId + ":" + appId; - record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); - if (null == record) { - record = this.getByAppId(appId,tenantId); - if(record != null){ - RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); - } - } - return record; - } - - @Override - public WxAppinfo getByIdFromRedis(Long id) { - WxAppinfo record = null; - String key = Constant.appinfoPrev + id; - record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); - if (null == record) { - record = this.getById(id); - if(record != null){ - RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); - } - } - return record; - } - @Override public WxAppinfo getCAppInfoFromRedis(String tenantId, EnumAppPlat plat) { WxAppinfo record = null; @@ -267,19 +202,48 @@ public class WxAppinfoServiceImpl implements WxAppinfoService { return record; } + @Override + public WxAppinfo getProjectCAppInfo(String appId, Integer projectType) { + if(StringUtils.isBlank(appId) || projectType == null){ + return null; + } + WxAppinfo appinfoQ = new WxAppinfo(); + appinfoQ.setProjectType(projectType); + appinfoQ.setAppId(appId); + appinfoQ.setType(EnumAppType.C.getCode()); + WxAppinfo appInfo = wxAppinfoMapper.selectOne(new QueryWrapper<>(appinfoQ)); + return appInfo; + } + + @Override + public WxAppinfo getProjectCAppInfoFromRedis(String appId, Integer projectType) { + if(StringUtils.isBlank(appId) || projectType == null){ + return null; + } + WxAppinfo record = null; + String key = Constant.appinfoPrev + appId + "-" + projectType + + "-" + EnumAppType.C.getCode(); + record = RedisCacheUtils.getCacheObject(wxAppinfoRedisTemplate, key, WxAppinfo.class); + if (null == record) { + record = this.getProjectCAppInfo(appId, projectType); + if(record != null){ + RedisCacheUtils.cache(wxAppinfoRedisTemplate, key, record, 3600*24*7); + } + } + return record; + } + private void deleteRedis(Long id){ WxAppinfo record = this.getById(id); if(record != null){ - String key1 = Constant.appinfoPrev + record.getAppId(); + String key1 = Constant.appinfoPrev + record.getId(); RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key1); - String key2 = Constant.appinfoPrev + record.getId(); + String key2 = Constant.appinfoPrev + record.getProjectType() + "-" + record.getPlat() + + "-" + EnumAppType.C.getCode(); RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key2); - String key3 = Constant.appinfoPrev + record.getTenantId() - + "-" + EnumAppPlat.getByCode(record.getPlat()) + "-" + record.getType(); + String key3 = Constant.appinfoPrev + record.getAppId() + "-" + record.getProjectType() + + "-" + EnumAppType.C.getCode(); RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key3); - String key4 = Constant.appinfoPrev + record.getTenantId() - + "-" + null + "-" + record.getType(); - RedisCacheUtils.removeCache(wxAppinfoRedisTemplate, key4); } } diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java deleted file mode 100644 index 7df0c20..0000000 --- a/suimangService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java +++ /dev/null @@ -1,882 +0,0 @@ -package com.iformall.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.iformall.common.ErrorCode; -import com.iformall.common.IdWorker; -import com.iformall.common.Result; -import com.iformall.common.ResultData; -import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxBillSettle; -import com.iformall.domain.po.WxMerchant; -import com.iformall.domain.po.WxMerchantBUser; -import com.iformall.domain.po.WxPayAccount; -import com.iformall.domain.po.WxPayAccountBill; -import com.iformall.domain.po.WxPayBill; -import com.iformall.domain.vo.WxBillAll; -import com.iformall.enums.*; -import com.iformall.exception.MallinkException; -import com.iformall.mapper.*; -import com.iformall.pay.*; -import com.iformall.service.*; -import com.iformall.utils.*; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; - -import java.text.ParseException; -import java.util.*; - -/** - * @author gongbiao - */ -@Service -public class WxPayBillServiceImpl implements WxPayBillService { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - WxAppinfoService wxAppinfoService; - - @Autowired - WxPayAccountBillMapper wxPayAccountBillMapper; - - @Autowired - WxPayAccountService wxPayAccountService; - - @Autowired - WxPayBillMapper wxPayBillMapper; - - @Autowired - WxBillAllMapper wxBillAllMapper; - - @Lazy - @Autowired - WxBillAllService wxBillAllService; - - @Autowired - WxMerchantBUserMapper wxMerchantBUserMapper; - - @Lazy - @Autowired - private WxBillSettleService wxBillSettleService; - - @Lazy - @Autowired - WxMerchantBUserService wxMerchantBUserService; - - @Lazy - @Autowired - WxMerchantService wxMerchantService; - - JSONObject errorMap = JSON.parseObject("{" + - "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + - "\"NOTENOUGH\":{\"detail\":\"余额不足\",\"reason\":\"用户帐号余额不足\",\"resolution\":\"用户帐号余额不足,请用户充值或更换支付卡后再支付\"}," + - "\"ORDERPAID\":{\"detail\":\"商户订单已支付\",\"reason\":\"商户订单已支付,无需重复操作\",\"resolution\":\"商户订单已支付,无需更多操作\"}," + - "\"ORDERCLOSED\":{\"detail\":\"订单已关闭\",\"reason\":\"当前订单已关闭,无法支付\",\"resolution\":\"当前订单已关闭,请重新下单\"}," + - "\"SYSTEMERROR\":{\"detail\":\"系统错误\t\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + - "\"APPID_NOT_EXIST\":{\"detail\":\"APPID不存在\",\"reason\":\"参数中缺少APPID\",\"resolution\":\"请检查APPID是否正确\"}," + - "\"MCHID_NOT_EXIST\":{\"detail\":\"MCHID不存在\",\"reason\":\"参数中缺少MCHID\",\"resolution\":\"请检查MCHID是否正确\"}," + - "\"APPID_MCHID_NOT_MATCH\":{\"detail\":\"appid和mch_id不匹配\",\"reason\":\"appid和mch_id不匹配\",\"resolution\":\"请确认appid和mch_id是否匹配\"}," + - "\"LACK_PARAMS\":{\"detail\":\"缺少参数\t\",\"reason\":\"缺少必要的请求参数\",\"resolution\":\"请检查参数是否齐全\"}," + - "\"OUT_TRADE_NO_USED\":{\"detail\":\"商户订单号重复\",\"reason\":\"同一笔交易不能多次提交\",\"resolution\":\"请核实商户订单号是否重复提交\"}," + - "\"SIGNERROR\":{\"detail\":\"签名错误\",\"reason\":\"参数签名结果不正确\",\"resolution\":\"请检查签名参数和方法是否都符合签名算法要求\"}," + - "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"resolution\":\"请检查XML参数格式是否正确\"}," + - "\"REQUIRE_POST_METHOD\":{\"detail\":\"请使用post方法\",\"reason\":\"未使用post传递参数\",\"resolution\":\"请检查请求参数是否通过post方法提交\"}," + - "\"POST_DATA_EMPTY\":{\"detail\":\"post数据为空\",\"reason\":\"post数据不能为空\",\"resolution\":\"请检查post数据是否为空\"}," + - "\"NOT_UTF8\":{\"detail\":\"编码格式错误\",\"reason\":\"未使用指定编码格式\",\"resolution\":\"请使用UTF-8编码格式\"}}"); - - JSONObject errorMapQuery = JSON.parseObject("{" + - "\"ORDERNOTEXIST\":{\"detail\":\"此交易订单号不存在\",\"reason\":\"查询系统中不存在此交易订单号\",\"resolution\":\"该API只能查提交支付交易返回成功的订单,请商户检查需要查询的订单号是否正确\"},\n" + - "\"SYSTEMERROR\":{\"detail\":\"系统错误\t\",\"reason\":\"后台系统返回错误\",\"resolution\":\"系统异常,请再调用发起查询\"}}"); - - JSONObject errorMapClose = JSON.parseObject("{" + - "\"ORDERPAID\":{\"detail\":\"订单已支付\",\"reason\":\"订单已支付,不能发起关单\",\"resolution\":\"订单已支付,不能发起关单,请当作已支付的正常交易\"}," + - "\"SYSTEMERROR\":{\"detail\":\"系统错误\",\"reason\":\"系统错误\",\"resolution\":\"系统异常,请重新调用该API\"}," + - "\"ORDERCLOSED\":{\"detail\":\"订单已关闭\",\"reason\":\"订单已关闭,无法重复关闭\",\"resolution\":\"订单已关闭,无需继续调用\"}," + - "\"SIGNERROR\":{\"detail\":\"签名错误\",\"reason\":\"参数签名结果不正确\",\"resolution\":\"请检查签名参数和方法是否都符合签名算法要求\"}," + - "\"REQUIRE_POST_METHOD\":{\"detail\":\"请使用post方法\",\"reason\":\"未使用post传递参数\",\"resolution\":\"请检查请求参数是否通过post方法提交\"}," + - "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); - - @Override - public ResultData createPayBill(WxMerchant merchant,Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) { - final IdWorker idworker = IdWorker.get(); - - EnumPayShare isShare = EnumPayShare.NO; - try { - //查询账单是否存在 - WxBillAll wxBillAll = new WxBillAll(); - wxBillAll.updateTenantInfo(record); - wxBillAll.setId(record.getBillId()); - wxBillAll.setBillTypeValue(billTypeValue); - List> bills = wxBillAllService.listBill(wxBillAll,merchant,true,false,false,false); - if (bills.size()==0) { - logger.error("pay bill, bill not allow, repaymentReq: " + JSONObject.toJSONString(record) + ", payWay: " + payWay.toString()); - throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); - } - //获取账单数据 - Map bill = bills.get(0); - Long owe = (Long) bill.get("owe"); - - if (owe.longValue() <= 0) { - logger.info("账单欠缴为0"); - return new ResultData(ErrorCode.BILL_OWE_ZERO); - } - //获取支付账户信息 - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); - Date currentDate = new Date(); - String payBillNo; - WxPayBill billParam= new WxPayBill(); - billParam.setBillId(record.getBillId()); - List list = wxPayBillMapper.findList(billParam); - //数据库不存在已有订单,新建订单 - if (list.size() <= 0) { - // 创建支付订单 - Long id = idworker.nextId(); - payBillNo = id+DateUtils.getSystemTime("yyMMddHHmmss"); - record.setId(id); - record.updateTenantInfo(record); - record.setbUserId(record.getbUserId()); - record.setCreateTime(currentDate); - record.setUpdateTime(currentDate); - record.setPayTimeStart(currentDate); - long endtime = currentDate.getTime() + 120 * 60 * 1000; - record.setPayTimeEnd(new Date(endtime)); - // 支付单号 - record.setPayBillNo(payBillNo); - record.setPayAmount((Long) bill.get("owe")); - record.setPayVendor(payWay.getCode()); - record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); - record.setShare(isShare.getCode()); - record.setBillTypeValue(billTypeValue); - int sqlRow = wxPayBillMapper.insert(record); - if (sqlRow != 1) { - logger.error("pay bill insert error: " + JSONObject.toJSONString(record)); - throw new MallinkException(ErrorCode.DB_FAIL); - } - logger.info("创建支付订单:"+record.toString()); - } else { - //数据库存在订单信息,更新支付中状态,返回之前的预支付信息 - WxPayBill wxPayBill = list.get(0); - wxPayBill.setShare(isShare.getCode()); - //更新订单状态为支付中 - wxPayBill.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); - wxPayBill.setUpdateTime(currentDate); - int sqlRow = wxPayBillMapper.updateById(wxPayBill); - if (sqlRow != 1) { - logger.error("pay bill update error: " + wxPayBill.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - //数据库中openId与再次传来的openId不相同那么关闭此订单再次生成新的订单 - if(!wxPayBill.getOpenId().equals(record.getOpenId())){ - String openId = record.getOpenId(); - //关闭订单 - logger.info("openId不同时关闭之前的订单:"+record.toString()); - ResultData resultData = payBillClose(appInfo, wxPayBill); - if(resultData.code!=Result.SUCCESS){ - return new ResultData(ErrorCode.ORDER_IS_FAIL); - } - record = wxPayBillMapper.selectById(wxPayBill.getId()); - record.setOpenId(openId); - //创建新的订单号 - payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss"); - record.setPayTimeStart(currentDate); - long endtime = currentDate.getTime() + 120 * 60 * 1000; - record.setPayTimeEnd(new Date(endtime)); - record.setPayBillNo(payBillNo); - record.setPayAmount((Long) bill.get("owe")); - record.setUpdateTime(currentDate); - sqlRow = wxPayBillMapper.updateById(record); - if (sqlRow != 1) { - logger.error("pay bill update error: " + JSONObject.toJSONString(record)); - throw new MallinkException(ErrorCode.DB_FAIL); - } - logger.info("新的订单数据:"+JSONObject.toJSONString(record)); - }else{ - logger.info("数据库存在订单信息,更新支付中状态,返回之前的预支付信息:"+JSONObject.toJSONString(wxPayBill)); - if (!owe.equals(wxPayBill.getPayAmount())) { - logger.info("欠缴费用与之前不同发起新的订单:" + wxPayBill.toString()); - ResultData resultData = payBillClose(appInfo, wxPayBill); - if (resultData.code != Result.SUCCESS) { - return new ResultData(ErrorCode.ORDER_IS_FAIL); - } - record = wxPayBillMapper.selectById(wxPayBill.getId()); - //创建新的订单号 - payBillNo = record.getId() + DateUtils.getSystemTime("yyMMddHHmmss"); - record.setPayTimeStart(currentDate); - long endtime = currentDate.getTime() + 120 * 60 * 1000; - record.setPayTimeEnd(new Date(endtime)); - record.setPayBillNo(payBillNo); - record.setPayAmount((Long) bill.get("owe")); - record.setUpdateTime(currentDate); - sqlRow = wxPayBillMapper.updateById(record); - if (sqlRow != 1) { - logger.error("pay bill update error: " + JSONObject.toJSONString(record)); - throw new MallinkException(ErrorCode.DB_FAIL); - } - logger.info("新的订单数据:" + JSONObject.toJSONString(record)); - } else if (wxPayBill.getPayTimeEnd().after(new Date())) { - //订单在120分钟之内没有失效,延用之前预支付订单号 - String noncestr = Utility.generate32UUID(); - String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); - Map sighMap = MapUtil.getOrderMap(); - sighMap.put("appId", appInfo.getAppId()); - sighMap.put("timeStamp", timestamp); - sighMap.put("nonceStr", noncestr); - sighMap.put("package", "prepay_id=" + wxPayBill.getPrepayId()); - sighMap.put("signType", "HMAC-SHA256"); - String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey()); - Map returnMap=new HashMap<>(); - returnMap.put("timeStamp", timestamp); - returnMap.put("nonceStr", noncestr); - returnMap.put("package", "prepay_id=" + wxPayBill.getPrepayId()); - returnMap.put("paySign", signAgent); - returnMap.put("signType", "HMAC-SHA256"); - logger.info("订单在120分钟之内没有失效,延用之前预支付订单号:"+JSONObject.toJSONString(wxPayBill)); - return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); - } else { - //超过时间关闭订单 - logger.info("超过时间关闭订单:" + wxPayBill.toString()); - ResultData resultData = payBillClose(appInfo, wxPayBill); - if(resultData.code!=Result.SUCCESS){ - return new ResultData(ErrorCode.ORDER_IS_FAIL); - } - record = wxPayBillMapper.selectById(wxPayBill.getId()); - //创建新的订单号 - payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss"); - record.setPayTimeStart(currentDate); - long endtime = currentDate.getTime() + 120 * 60 * 1000; - record.setPayTimeEnd(new Date(endtime)); - record.setPayBillNo(payBillNo); - record.setPayAmount((Long) bill.get("owe")); - record.setUpdateTime(currentDate); - sqlRow = wxPayBillMapper.updateById(record); - if (sqlRow != 1) { - logger.error("pay bill update error: " + JSONObject.toJSONString(record)); - throw new MallinkException(ErrorCode.DB_FAIL); - } - logger.info("新的订单数据:"+JSONObject.toJSONString(record)); - } - - } - - } - - // 统一下单 // 服务商模式 - String noncestr = Utility.generate32UUID(); - WxPayOrderSP wxPayBillSP = new WxPayOrderSP(); - wxPayBillSP.setSub_openid(record.getOpenId()); - wxPayBillSP.setAppid(appInfo.getParentAppId()); - wxPayBillSP.setMch_id(payAccount.getMchId()); - wxPayBillSP.setSub_appid(appInfo.getAppId()); - wxPayBillSP.setSub_mch_id(payAccount.getSubMchId()); - wxPayBillSP.setNonce_str(noncestr); - wxPayBillSP.setBody(bill.get("billType").toString()); - wxPayBillSP.setOut_trade_no(record.getPayBillNo()); - wxPayBillSP.setTotal_fee(bill.get("owe").toString()); - // 终端IP - wxPayBillSP.setSpbill_create_ip(record.getIp()); - wxPayBillSP.setNotify_url(payAccount.getPayNotifyUrl()); - // 终端类型 - wxPayBillSP.setTrade_type(WxPay.TradeType.JSAPI.name()); - // 订单ID - wxPayBillSP.setProduct_id(String.valueOf(bill.get("id").toString())); - wxPayBillSP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); - wxPayBillSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(record.getPayTimeEnd())); - wxPayBillSP.setSign_type("HMAC-SHA256"); - wxPayBillSP.setProfit_sharing(null); - if (isShare == EnumPayShare.YES) { - wxPayBillSP.setProfit_sharing("Y"); - } - Map payBillMap = BeanUtils.toStringMap(wxPayBillSP); - wxPayBillSP.setSign(WxPayment.createSignHMAC(payBillMap, payAccount.getApiKey())); - String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayBillSP)); - logger.info("pay bill, wechat pushBill, " + wxPayBillSP.toString() + ", response: " + response); - Map returnMap = WxPayment.xmlToMap(response); - returnMap.put("payBillId", record.getId().toString()); - String result_code = returnMap.get("result_code"); - if ("SUCCESS".equals(result_code)) { - String prepay_id = returnMap.get("prepay_id"); - // update payBill with prepay_id - record.setPrepayId(prepay_id); - record.setUpdateTime(new Date()); - try { - wxPayBillMapper.updateById(record); - } catch (Exception e) { - logger.error("pay bill update error: " + record.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); - Map sighMap = MapUtil.getOrderMap(); - sighMap.put("appId", appInfo.getAppId()); - sighMap.put("timeStamp", timestamp); - sighMap.put("nonceStr", noncestr); - sighMap.put("package", "prepay_id=" + prepay_id); - sighMap.put("signType", "HMAC-SHA256"); - String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey()); - returnMap.put("timeStamp", timestamp); - returnMap.put("nonceStr", noncestr); - returnMap.put("package", "prepay_id=" + prepay_id); - returnMap.put("paySign", signAgent); - returnMap.put("signType", "HMAC-SHA256"); - logger.info("back to UI: " + returnMap.toString()); - return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); - } - return updatePayBill(record, returnMap, result_code); - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - private ResultData updatePayBill(WxPayBill record, Map returnMap, String result_code) { - String errMsg = ""; - JSONObject errObj = errorMap.getJSONObject(result_code); - if (errObj != null) { - errMsg = errObj.toJSONString(); - record.setFailReason(errMsg); - } else { - errMsg = returnMap.get("return_msg"); - record.setFailReason(errMsg); - } - record.setUpdateTime(new Date()); - try { - wxPayBillMapper.updateById(record); - } catch (Exception e) { - logger.error("pay bill update error: " + record.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errMsg, returnMap); - } - - - private String wechatPayBillQuery(WxAppinfo appInfo, WxPayBill record) { - // get payAccount - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); - if (payAccount.getType().equals(EnumPayMode.MCH.getCode())) { - // 普通商户号模式 - WxPayOrderQ payBillQ = new WxPayOrderQ(); - String noncestr = Utility.generate32UUID(); - payBillQ.setAppid(appInfo.getAppId()); - payBillQ.setMch_id(payAccount.getMchId()); - payBillQ.setNonce_str(noncestr); - payBillQ.setOut_trade_no(record.getPayBillNo()); - - try { - Map map = BeanUtils.toStringMap(payBillQ); - payBillQ.setSign(WxPayment.createSign(map, payAccount.getApiKey())); - map = BeanUtils.toStringMap(payBillQ); - String response = WxPay.orderQuery(map); - return response; - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } else { - // 服务商模式 - WxPayOrderSQ payBillSQ = new WxPayOrderSQ(); - String noncestr = Utility.generate32UUID(); - payBillSQ.setAppid(appInfo.getParentAppId()); - payBillSQ.setSub_appid(appInfo.getAppId()); - payBillSQ.setMch_id(payAccount.getMchId()); - payBillSQ.setSub_mch_id(payAccount.getSubMchId()); - payBillSQ.setNonce_str(noncestr); - payBillSQ.setOut_trade_no(record.getPayBillNo()); - payBillSQ.setSign_type("HMAC-SHA256"); - - try { - Map map = BeanUtils.toStringMap(payBillSQ); - payBillSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); - map = BeanUtils.toStringMap(payBillSQ); - - String response = WxPay.orderQuery(map); - return response; - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - } - - /** - * 微信订单查询 - */ - @Override - public ResultData payBillQuery(WxAppinfo appInfo, WxPayBill record) { - try { - if (StringUtils.isBlank(record.getPayBillNo())) { - record.setPayBillNo(record.getPayBillNo()); - } - - String response = wechatPayBillQuery(appInfo, record); - - logger.info("pay bill query, " + record.toString() + ", response: " + response); - Map returnMap = WxPayment.xmlToMap(response); - String result_code = returnMap.get("result_code"); - if ("SUCCESS".equals(result_code)) { - String trade_state = returnMap.get("trade_state"); - //SUCCESS—支付成功 - //REFUND—转入退款 - //NOTPAY—未支付 - //CLOSED—已关闭 - //REVOKED—已撤销(刷卡支付) - //USERPAYING--用户支付中 - //PAYERROR--支付失败(其他原因,如银行返回失败) - if ("SUCCESS".equals(trade_state)) { - record.setPayBillStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - handlePayBillStatusUpdate(record); - } else if ("USERPAYING".equals(trade_state)) { - record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); - handlePayBillStatusUpdate(record); - } else { - record.setPayBillStatus(EnumPayStatus.PAY_STATUS_FAIL.getCode()); - handlePayBillStatusUpdate(record); - } - return new ResultData(Result.SUCCESS, "订单查询成功", returnMap); - } else { - return updatePayBill(record, returnMap, result_code); - } - } catch (MallinkException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - private String wechatPayBillClose(WxAppinfo appInfo, WxPayBill record) { - // get payAccount - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId()); - if (payAccount.getType().equals(EnumPayMode.MCH.getCode())) { - // 普通商户号模式 - WxPayOrderQ payBillC = new WxPayOrderQ(); - String noncestr = Utility.generate32UUID(); - payBillC.setAppid(appInfo.getAppId()); - payBillC.setMch_id(payAccount.getMchId()); - payBillC.setNonce_str(noncestr); - payBillC.setOut_trade_no(record.getPayBillNo()); - return closeOrderNormal(payAccount, payBillC); - } else { - // 服务商模式 - WxPayOrderSQ payBillSC = new WxPayOrderSQ(); - String noncestr = Utility.generate32UUID(); - payBillSC.setAppid(appInfo.getParentAppId()); - payBillSC.setSub_appid(appInfo.getAppId()); - payBillSC.setMch_id(payAccount.getMchId()); - payBillSC.setSub_mch_id(payAccount.getSubMchId()); - payBillSC.setNonce_str(noncestr); - payBillSC.setOut_trade_no(record.getPayBillNo()); - payBillSC.setSign_type("HMAC-SHA256"); - return closeOrderServer(payAccount, payBillSC); - } - } - - private String closeOrderServer(WxPayAccount payAccount, WxPayOrderSQ payBillSC) { - try { - Map map = BeanUtils.toStringMap(payBillSC); - payBillSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); - map = BeanUtils.toStringMap(payBillSC); - String response = WxPay.closeOrder(map); - return response; - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - private String closeOrderNormal(WxPayAccount payAccount, WxPayOrderQ payBillC) { - try { - Map map = BeanUtils.toStringMap(payBillC); - payBillC.setSign(WxPayment.createSign(map, payAccount.getApiKey())); - map = BeanUtils.toStringMap(payBillC); - String response = WxPay.closeOrder(map); - return response; - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - /** - * 微信关闭支付订单 - */ - @Override - public ResultData payBillClose(WxAppinfo appInfo, WxPayBill record) { - - try { - //关闭之前先查询 - ResultData resultData = payBillQuery(appInfo, record); - if(resultData.code == Result.SUCCESS) { - Map map = (Map) resultData.data; - if("SUCCESS".equals(map.get("result_code")) && "SUCCESS".equals(map.get("trade_state"))){ - return new ResultData(ErrorCode.ORDER_HAD_PAY); - } - } - - String response = wechatPayBillClose(appInfo, record); - - logger.info("pay bill close, " + record.toString() + ", response: " + response); - Map returnMap = WxPayment.xmlToMap(response); - String result_code = returnMap.get("result_code"); - if ("SUCCESS".equals(result_code)) { - try { - record.setPayBillStatus(EnumPayStatus.PAY_STATUS_CANCEL.getCode()); - wxPayBillMapper.updateById(record); - } catch (Exception e) { - logger.error("pay bill update error: " + record.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - return new ResultData(Result.SUCCESS, "订单关闭成功", returnMap); - } else { - String errMsg = ""; - JSONObject errObj = errorMapClose.getJSONObject(result_code); - if (errObj != null) { - errMsg = errObj.toJSONString(); - } else { - errMsg = returnMap.get("return_msg"); - } - record.setFailReason(errMsg); - record.setUpdateTime(new Date()); - try { - wxPayBillMapper.updateById(record); - } catch (Exception e) { - logger.error("pay bill update error: " + record.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errMsg, returnMap); - } - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - - /** - * 提供微信支付回调调用 - * - * @param paramMap 异步通知参数 - * @param payWay 支付方式 - * @return - */ - @Override - public String notify(String tenantId,Map paramMap, EnumPayWay payWay) { - // how to get wechatAppId, wechatMchId, partnerKey - logger.info("-------------"); - logger.info("微信回调返回值:" + JSONObject.toJSONString(paramMap)); - logger.info("-------------"); - String appId = paramMap.get("appid"); - String subAppId = paramMap.get("sub_appid"); - String mchId = paramMap.get("mch_id"); - String subMchId = paramMap.get("sub_mch_id"); - String attach = paramMap.get("attach"); - WxAppinfo appinfo; - boolean isNormal = true; - if (StringUtils.isBlank(subAppId) && StringUtils.isBlank(subMchId)) { - // 普通商户号 - appinfo = wxAppinfoService.getByAppIdFromRedis(appId,tenantId); - if (appinfo == null) { - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - isNormal = true; - } else { - // 服务号 现在用hmac-sha256 - appinfo = wxAppinfoService.getByAppIdFromRedis(subAppId,tenantId); - if (appinfo == null) { - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - isNormal = false; - } - - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); - if (payAccount == null) { - throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); - } - String partnerKey = payAccount.getApiKey(); - try { - if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { - boolean signVerified = false; - if (isNormal) { - // 普通商户号支付 - signVerified = WxPayment.verifyNotify(paramMap, partnerKey); - if (!signVerified) { - logger.warn("notify bill, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); - } - } else { - // 服务号 现在用hmac-sha256 - signVerified = WxPayment.verifyNotifyHMAC(paramMap, partnerKey); - if (!signVerified) { - logger.warn("notify bill, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); - } - } - - if (!"SUCCESS".equals(paramMap.get("return_code"))) { - logger.warn("notify bill, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "订单状态码非SUCCESS"); - return XmlUtil.getRequestXml(resultMap); - } - - String payBillNo = paramMap.get("out_trade_no"); - String timEndStr = paramMap.get("time_end"); - Long payBillId = Long.valueOf(payBillNo.substring(0,payBillNo.length()-12)); - WxPayBill payBill = wxPayBillMapper.selectById(payBillId); - if (payBill == null) { - logger.warn("notify bill, wxpay check pay bill not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "订单不存在"); - return XmlUtil.getRequestXml(resultMap); - } - // 验证支付金额 - if (!paramMap.get("total_fee").equals(payBill.getPayAmount().toString())) { - logger.warn("notify bill, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "订单总金额不一致"); - return XmlUtil.getRequestXml(resultMap); - } - - Date timeEnd = null; - - try { - timeEnd = Utility.getDateFromString(timEndStr); - } catch (ParseException e) { - logger.error("解析timeEnd失败"); - timeEnd = new Date(); - } - payBill.setPayTimeEnd(timeEnd); - - // 处理支付成功 - handleBillPaySuccess(payBill, paramMap.get("transaction_id")); - logger.info("notify bill, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "SUCCESS"); - resultMap.put("return_msg", "OK"); - return XmlUtil.getRequestXml(resultMap); - } - } catch (RuntimeException e) { - logger.warn("notify bill, checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR); - } - - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "FAILED"); - return XmlUtil.getRequestXml(resultMap); - } - - - @Override - public WxPayBill getById(Long id) { - return wxPayBillMapper.selectById(id); - } - - @Override - public void updatePayBillStatus(WxPayBill payBill) { - try { - logger.info("更新支付订单"); - wxPayBillMapper.updateById(payBill); - }catch (MallinkException e){ - logger.info("更新支付订单失败"); - throw new MallinkException(ErrorCode.ORDER_UPDATE_ERR); - } - } - - @Override - public WxPayBill queryPayBill(WxPayBill payBill) { - List select = wxPayBillMapper.selectList(new QueryWrapper(payBill)); - if(select.size()>0){ - return select.get(0); - } - return null; - } - - @Override - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handleBillPaySuccess(WxPayBill record, String transactionId) { - Date currentDate = new Date(); - EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayBillStatus()); - // 判断支付状态 - if (payStatus == EnumPayStatus.PAY_STATUS_SUCCESS) { - // 已经是成功状态,只更新transactionId - try { - record.setUpdateTime(currentDate); - record.setTransactionId(transactionId); - wxPayBillMapper.updateById(record); - WxBillAll wxBillAll = new WxBillAll(); - wxBillAll.setId(record.getBillId()); - wxBillAll.setBillTypeValue(record.getBillTypeValue()); - WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId()); - WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId()); - List> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, false, false, false); - if (bills.size() > 0) { - Map bill = bills.get(0); - bill.put("userId", record.getbUserId()); - wxBillAllService.updateBill(bill); - } - } catch (Exception e) { - logger.error(e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL); - } - return; - } - WxBillAll wxBillAll = new WxBillAll(); - wxBillAll.setId(record.getBillId()); - wxBillAll.updateTenantInfo(record); - List> bills = wxBillAllService.listBill(wxBillAll, null,false, false, false, false); - if (bills.size()==0) { - logger.error("pay success handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); - throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); - } - Map bill; - bill = bills.get(0); - bill.put("userId", record.getbUserId()); - // 修改支付订单状态 - WxPayBill updateBill = new WxPayBill(); - updateBill.setId(record.getId()); - updateBill.setBillId(record.getBillId()); - updateBill.setUpdateTime(currentDate); - updateBill.setPayBillStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - updateBill.setTransactionId(transactionId); - try { - wxPayBillMapper.updateById(updateBill); - } catch (Exception e) { - logger.error("支付订单数据库更新失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "支付订单数据库更新失败: " + e.getMessage()); - } - - //修改账单状态 - try { - wxBillAllService.updateBill(bill); - } catch (Exception e) { - logger.error(e.getMessage()); - throw new MallinkException(ErrorCode.BILL_UPDATE_FAILED); - } - - } - - @Override - @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public void handlePayBillStatusUpdate(WxPayBill record) { - // 判断支付状态 - if (record.getPayBillStatus().equals(EnumPayStatus.PAY_STATUS_WAIT.getCode())) { - logger.error("pay handle, payBill " + record.getPayBillNo() + - "is complete, billId : " + record.getBillId()); - return; - } - WxBillAll wxBillAll = new WxBillAll(); - wxBillAll.setId(record.getBillId()); - wxBillAll.setBillTypeValue(record.getBillTypeValue()); - WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId()); - WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId()); - List> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, false, false, false); - if (bills.size()==0) { - logger.error("pay handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); - } - Map bill = bills.get(0); - if (record.getId() > 0) { - // 1. get appinfo - WxAppinfo appInfo = null; - WxAppinfo appinfoQ = new WxAppinfo(); - appinfoQ.setTenantId(bill.get("tenantId").toString()); - appinfoQ.setType(EnumAppType.B.getCode()); - List appList = wxAppinfoService.getList(appinfoQ); - if (appList.size() > 0) { - appInfo = appList.get(0); - } - - // 检查支付订单状态 - WxPayBill payBillQ = new WxPayBill(); - payBillQ.setId(record.getId()); - payBillQ.setTenantId(bill.get("tenantId").toString()); - payBillQ.setBillId(record.getBillId()); - WxPayBill updateBill; - try { - updateBill = wxPayBillMapper.selectOne(new QueryWrapper(payBillQ)); - } catch (Exception e) { - logger.error(e.getMessage()); - throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); - } - - if (record.getPayBillStatus().equals(EnumPayStatus.PAY_STATUS_FAIL.getCode())) { - // 支付订单取消 - if (updateBill.getPayAmount() > 0) { - payBillQ = new WxPayBill(); - payBillQ.setTenantId(bill.get("tenantId").toString()); - payBillQ.setBillId(record.getBillId()); - List payBills = wxPayBillMapper.selectList(new QueryWrapper(payBillQ)); - for (WxPayBill payBill : payBills) { - if(payBill.getPayTimeEnd().before(new Date())){ - payBillClose(appInfo, payBill); - } - } - } - } else { - // 支付订单成功? - if (updateBill.getPayBillStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())) { - if (!StringUtils.isBlank(updateBill.getTransactionId())) { - // 回调已设置成功 - wxBillAllService.updateBill(bill); - // 继续修改订单状态 - } else { - // 回调异常 - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "transactionId未获取"); - } - } else if (updateBill.getPayBillStatus().equals(EnumPayStatus.PAY_STATUS_WAIT.getCode())) { - // 回调未返回,主动检查支付订单状态 - try { - record.setPayBillNo(String.valueOf(record.getId())); - String response = wechatPayBillQuery(appInfo, record); - logger.info("pay bill query, " + record.toString() + ", response: " + response); - Map returnMap = WxPayment.xmlToMap(response); - String result_code = returnMap.get("result_code"); - if ("SUCCESS".equals(result_code)) { - String trade_state = returnMap.get("trade_state"); - //SUCCESS—支付成功 - //REFUND—转入退款 - //NOTPAY—未支付 - //CLOSED—已关闭 - //REVOKED—已撤销(刷卡支付) - //USERPAYING--用户支付中 - //PAYERROR--支付失败(其他原因,如银行返回失败) - if ("SUCCESS".equals(trade_state)) { - // 查询支付订单 -- 已支付 - // 继续更改状态 - wxBillAllService.updateBill(bill); - } else { - // 支付订单未成功,返回异常 - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "支付订单未成功"); - } - } - } catch (MallinkException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (RuntimeException e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); - } - } - } - } - - } - - -} diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java index 06faaf3..fb86277 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxRefundOrderServiceImpl.java @@ -586,26 +586,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } } - /** - * 微信退款结果通知 - * - * @param paramMap 异步通知参数 - * @param payWay 支付方式 - * @return - */ - @Override - public String notify(Map paramMap, EnumPayWay payWay,EnumPayVersion payVersion) { - RefundNotifyAdapterResult notifyResult = payServiceFactory.getRefundPayAdapterService(payWay.getCode(),payVersion.getCode()).notify(paramMap, payWay); - if (!notifyResult.isSuccess()) { - return notifyResult.getReturnJson(); - }else { - if (null != notifyResult.getRefundOrder()) { - handleRefundSuccess(notifyResult.getRefundOrder()); - } - return notifyResult.getReturnJson(); - } - } - @Override public void callback(Map paramMap, EnumPayWay payWay) { diff --git a/suimangService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyRefundSuccessMsgServiceImpl.java b/suimangService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyRefundSuccessMsgServiceImpl.java deleted file mode 100644 index a236e8f..0000000 --- a/suimangService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyRefundSuccessMsgServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.iformall.service.msg.impl; - -import com.alibaba.fastjson.JSON; -import com.iformall.domain.po.msg.BaseMsg; -import com.iformall.domain.po.msg.FmInsideNotifyRefundSuccessMsg; -import com.iformall.enums.EnumPayVersion; -import com.iformall.enums.EnumPayWay; -import com.iformall.service.WxRefundOrderService; -import com.iformall.service.msg.MsgSendService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.Map; - -/** - * - * @author Stormeye Wu - * @date 2019/5/10 - */ -@Service -public class FmInsideNotifyRefundSuccessMsgServiceImpl implements MsgSendService { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @Autowired - private WxRefundOrderService wxRefundOrderService; - - @Override - public void send(BaseMsg baseMsg) throws Exception { - FmInsideNotifyRefundSuccessMsg msg = (FmInsideNotifyRefundSuccessMsg)baseMsg; - Map paramMap = JSON.parseObject(msg.getJsonMsg(), Map.class); - wxRefundOrderService.notify(paramMap, EnumPayWay.getEnum(msg.getPayWay()),EnumPayVersion.getEnum(msg.getPayVersion())); - } -} diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java index bdeaa78..6bf231b 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/ali/page/AliPagePayAdapterService.java @@ -49,7 +49,7 @@ public class AliPagePayAdapterService extends BaseAliPayAdapterService implement AlipayClient alipayClient = maUtil.getAliPayClient(appInfo, payAccount); AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); //异步接收地址,仅支持http/https,公网可访问 - request.setNotifyUrl(payAccount.getNotifyUrl() + "/aliNotify"); + request.setNotifyUrl(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/aliNotify"); //同步跳转地址,仅支持http/https // request.setReturnUrl(""); /******必传参数******/ diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java index b8b278b..5eb9306 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/douyin/v1/miniApp/TtMiniAppPayAdapterService.java @@ -238,7 +238,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen preOrder.setSubject(appInfo.getName()+"-"+orderPay.getOrderDetail()); preOrder.setBody(appInfo.getName()+"-"+orderPay.getOrderDetail()); preOrder.setValidTime(60*60); -// preOrder.setNotifyUrl();//回调地址 + preOrder.setNotifyUrl(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/ttNotify");//回调地址 // preOrder.setThirdpartyId();//第三方服务商ID // preOrder.setStoreId(record.getStoreId()); CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java index 4d0078d..8aec258 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/sft/miniApp/appPay/WxMiniAppPaySFTAdapterService.java @@ -77,7 +77,7 @@ public class WxMiniAppPaySFTAdapterService extends BaseWxPaySFTAdapterService i } req.setAttach(getAttach(record)); req.setOut_trade_no(String.valueOf(composeOrder.getMainOrderId())); - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/pay/v3"); SFTPaySettleReq settle = new SFTPaySettleReq(); settle.setProfit_sharing(true); @@ -117,7 +117,7 @@ public class WxMiniAppPaySFTAdapterService extends BaseWxPaySFTAdapterService i payer.setOpenid(openId); req.setCombine_payer_info(payer); - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/pay/v3"); return req; } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java index a35e90c..2ab0d69 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java @@ -73,7 +73,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem wxPayOrderP.setTotal_fee(composeOrder.getPayment()); wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP wxPayOrderP.setGoods_tag(productName); - wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); + wxPayOrderP.setNotify_url(payAccount.getNotifyUrl() +"/pay"); wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 wxPayOrderP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // 订单ID wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); @@ -149,7 +149,7 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem wxPayOrderSP.setTotal_fee(composeOrder.getPayment().toString()); wxPayOrderSP.setSpbill_create_ip(record.getIp()); // 终端IP wxPayOrderSP.setGoods_tag(productName); // 券ID - wxPayOrderSP.setNotify_url(payAccount.getPayNotifyUrl()); + wxPayOrderSP.setNotify_url(payAccount.getNotifyUrl() +"/pay"); wxPayOrderSP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 wxPayOrderSP.setProduct_id(String.valueOf(composeOrder.getMainOrderId())); // wxPayOrderSP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java index 0141703..6ae645d 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java @@ -79,7 +79,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl } req.setOut_trade_no(record.getPayOrderNo()); req.setAttach(getAttach(record)); - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/pay/v3"); V3PaySettleReq settle = new V3PaySettleReq(); settle.setProfit_sharing(true); @@ -107,7 +107,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl req.setDescription("weixin miniApp product"); } req.setOut_trade_no(productOrderPay.getOrderNumber()); - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/refund/v3"); V3PayAmountReq amout = new V3PayAmountReq(); amout.setTotal(productOrderPay.getPayAmount()); @@ -185,8 +185,7 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl V3CombinePayerReq payer = new V3CombinePayerReq(); payer.setSub_openid(openId); req.setCombine_payer_info(payer); - - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/pay/v3"); return req; } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/nativePay/WxNativePayV3AdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/nativePay/WxNativePayV3AdapterService.java index 86b777a..94973f6 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/nativePay/WxNativePayV3AdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/nativePay/WxNativePayV3AdapterService.java @@ -49,7 +49,7 @@ public class WxNativePayV3AdapterService extends BaseWxPayV3AdapterService imple req.setDescription("weixin miniApp product"); } req.setOut_trade_no(productOrderPay.getOrderNumber()); - req.setNotify_url(payAccount.getPayNotifyV3Url(appInfo.getProjectType())); + req.setNotify_url(payAccount.getNotifyUrl() + "/" + appInfo.getProjectType() +"/pay/v3"); V3PayAmountReq amout = new V3PayAmountReq(); amout.setTotal(productOrderPay.getPayAmount()); diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/refund/RefundPayAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/refund/RefundPayAdapterService.java index 28a0012..6960df2 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/refund/RefundPayAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/refund/RefundPayAdapterService.java @@ -33,11 +33,5 @@ public interface RefundPayAdapterService { public RefundAdapterResult queryRefund(WxAppinfo appInfo,WxPayAccount payAccount, WxRefundOrder record); public RefundAdapterResult queryRefund(WxAppinfo appInfo,WxPayAccount payAccount, ProductOrderRefund orderRefund); - - /** - * 平台方 异步通知 - * @param paramMap - * @param payWay - */ - public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay); + } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/refund/ali/AliRefundAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/refund/ali/AliRefundAdapterService.java index 22aef90..8dd0d60 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/refund/ali/AliRefundAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/refund/ali/AliRefundAdapterService.java @@ -134,66 +134,4 @@ public class AliRefundAdapterService implements RefundPayAdapterService{ throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } - - @Autowired - WxAppinfoService wxAppinfoService; - @Autowired - WxPayAccountService wxPayAccountService; - @Autowired - WxPayOrderMapper wxPayOrderMapper; - @Autowired - WxRefundOrderMapper wxRefundOrderMapper; - - - private RefundNotifyAdapterResult notifyErrorResult(String msg) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", msg); - return new RefundNotifyAdapterResult(false,ErrorCode.REFUND_ORDER_ERROR.getCode(),msg,XmlUtil.getRequestXml(resultMap)); - } - - private RefundNotifyAdapterResult notifySuccessResult(String transactionId,String refundId,WxRefundOrder refundOrder) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "SUCCESS"); - resultMap.put("return_msg", "OK"); - return new RefundNotifyAdapterResult(transactionId, refundId,refundOrder,XmlUtil.getRequestXml(resultMap)); - } - - - @Override - public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay) { - log.info("TtRefundAdapterService notify{}"+paramMap); - String tenantId = paramMap.get("tenantId"); - /** - * - */ - String refundno = paramMap.get("cp_refundno"); - Long refundOrderId = Long.valueOf(refundno); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); - - String appId = paramMap.get("appid"); - WxAppinfo appinfo = wxAppinfoService.getByAppIdFromRedis(appId,tenantId); - if (appinfo == null) { - log.error("未找到appid信息:" + appId); - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); - if (payAccount == null) { - log.error("未找到mch_id信息:" + appId); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); - } - if (!"SUCCESS".equals(paramMap.get("status"))) { - log.error("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单状态码非SUCCESS"); - } - - // 验证退款金额 - if (!paramMap.get("refund_amount").equals(refundOrder.getRefundFee().toString())) { - log.error("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); - } - log.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifySuccessResult(refundOrder.getPayOrderNo(), paramMap.get("cp_refundno"), refundOrder); - } - } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java index d5a18c1..dc95748 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/refund/douyin/TtRefundAdapterService.java @@ -189,65 +189,5 @@ public class TtRefundAdapterService implements RefundPayAdapterService{ } } - @Autowired - WxAppinfoService wxAppinfoService; - @Autowired - WxPayAccountService wxPayAccountService; - @Autowired - WxPayOrderMapper wxPayOrderMapper; - @Autowired - WxRefundOrderMapper wxRefundOrderMapper; - - - private RefundNotifyAdapterResult notifyErrorResult(String msg) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", msg); - return new RefundNotifyAdapterResult(false,ErrorCode.REFUND_ORDER_ERROR.getCode(),msg,XmlUtil.getRequestXml(resultMap)); - } - - private RefundNotifyAdapterResult notifySuccessResult(String transactionId,String refundId,WxRefundOrder refundOrder) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "SUCCESS"); - resultMap.put("return_msg", "OK"); - return new RefundNotifyAdapterResult(transactionId, refundId,refundOrder,XmlUtil.getRequestXml(resultMap)); - } - - - @Override - public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay) { - log.info("TtRefundAdapterService notify{}"+paramMap); - String tenantId = paramMap.get("tenantId"); - /** - * - */ - String refundno = paramMap.get("cp_refundno"); - Long refundOrderId = Long.valueOf(refundno); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); - - String appId = paramMap.get("appid"); - WxAppinfo appinfo = wxAppinfoService.getByAppIdFromRedis(appId,tenantId); - if (appinfo == null) { - log.error("未找到appid信息:" + appId); - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appinfo.getPayId()); - if (payAccount == null) { - log.error("未找到mch_id信息:" + appId); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); - } - if (!"SUCCESS".equals(paramMap.get("status"))) { - log.error("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单状态码非SUCCESS"); - } - - // 验证退款金额 - if (!paramMap.get("refund_amount").equals(refundOrder.getRefundFee().toString())) { - log.error("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); - } - log.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifySuccessResult(refundOrder.getPayOrderNo(), paramMap.get("cp_refundno"), refundOrder); - } } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java index a710c79..d20bcb7 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v2/WxRefundAdapterService.java @@ -224,7 +224,7 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ wxRefundOrderP.setRefund_desc("用户自己退款"); } } - wxRefundOrderP.setNotify_url(payAccount.getRefundNotifyUrl()); + wxRefundOrderP.setNotify_url(payAccount.getNotifyUrl() +"/refund"); return wxRefundOrderP; } @@ -295,7 +295,7 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ wxRefundOrderSP.setRefund_desc("用户自己退款"); } } - wxRefundOrderSP.setNotify_url(payAccount.getRefundNotifyUrl()); + wxRefundOrderSP.setNotify_url(payAccount.getNotifyUrl() +"/refund"); wxRefundOrderSP.setSign_type("HMAC-SHA256"); return wxRefundOrderSP; } @@ -510,188 +510,4 @@ public class WxRefundAdapterService implements RefundPayAdapterService{ return null; } - @Autowired - WxAppinfoMapper wxAppinfoMapper; - @Autowired - WxPayAccountMapper wxPayAccountMapper; - @Autowired - WxPayOrderMapper wxPayOrderMapper; - @Autowired - WxRefundOrderMapper wxRefundOrderMapper; - - - private RefundNotifyAdapterResult notifyErrorResult(String msg) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", msg); - return new RefundNotifyAdapterResult(false,ErrorCode.REFUND_ORDER_ERROR.getCode(),msg,XmlUtil.getRequestXml(resultMap)); - } - - private RefundNotifyAdapterResult notifySuccessResult(String transactionId,String refundId,WxRefundOrder refundOrder) { - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "SUCCESS"); - resultMap.put("return_msg", "OK"); - return new RefundNotifyAdapterResult(transactionId, refundId,refundOrder,XmlUtil.getRequestXml(resultMap)); - } - - - @Override - public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay) { - // how to get wechatAppId, wechatMchId, partnerKey - String appId = paramMap.get("appid"); - String subAppId = paramMap.get("sub_appid"); - String mchId = paramMap.get("mch_id"); - String subMchId = paramMap.get("sub_mch_id"); - if (StringUtils.isBlank(subAppId) && StringUtils.isBlank(subMchId)) { - // 普通商户号 - WxAppinfo appinfo = wxAppinfoMapper.findByAppId(appId); - if (appinfo == null) { - log.error("未找到appid信息:" + appId); - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - WxPayAccount payAccount = wxPayAccountMapper.selectById(appinfo.getPayId()); - if (payAccount == null) { - log.error("未找到mch_id信息:" + mchId); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); - } - if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { - log.error("mch_id不对应:" + mchId + ",account:" + payAccount.getMchId()); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); - } - String partnerKey = payAccount.getApiKey(); - try { - if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { - if (!"SUCCESS".equals(paramMap.get("return_code"))) { - log.warn("notify refund, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单状态码非SUCCESS"); - } - - // 解密req_info - String req_info = CipherUtil.decryptReqInfo(paramMap.get("req_info"), partnerKey); - Map reqMap = WxPayment.xmlToMap(req_info); - - String refundIdStr = reqMap.get("out_refund_no"); - Long refundOrderId = Long.valueOf(refundIdStr); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); - if (refundOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单总金额不一致"); - } - // 验证退款金额 - if (!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { - log.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); - } - - - String payOrderNo = reqMap.get("out_trade_no"); - Long payOrderId = Long.valueOf(payOrderNo); - WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,refundOrder.getTenantId()); - if (payOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单总金额不一致"); - } - - - // 处理支付成功 - //handleRefundSuccess(refundOrder, reqMap.get("transaction_id"), reqMap.get("refund_id")); - log.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), refundOrder); - } - } catch (RuntimeException e) { - log.warn("notify refund paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - log.warn("notify refund, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); - } - } else { - // 服务号回调 - WxAppinfo appinfo = wxAppinfoMapper.findByAppId(subAppId); - if (appinfo == null) { - log.error("未找到appid信息:" + appId); - throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); - } - WxPayAccount payAccount = wxPayAccountMapper.selectById(appinfo.getPayId()); - if (payAccount == null) { - log.error("未找到mch_id信息:" + mchId); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); - } - if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { - log.error("mch_id不对应:" + mchId + ",account:" + payAccount.getMchId()); - throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); - } - String partnerKey = payAccount.getApiKey(); - try { - if (payWay.getType() == EnumPayWay.EnumPayWayType.WX_MINIPAY) { - if (!"SUCCESS".equals(paramMap.get("return_code"))) { - log.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单状态码非SUCCESS"); - } - - // 解密req_info - String req_info = CipherUtil.decryptReqInfo(paramMap.get("req_info"), partnerKey); - log.info(req_info); - Map reqMap = WxPayment.xmlToMap(req_info); - - String refundIdStr = reqMap.get("out_refund_no"); - Long refundOrderId = Long.valueOf(refundIdStr); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); - if (refundOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单总金额不一致"); - } - // 验证退款金额 - if (!reqMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { - log.warn("notify refund, wxpay check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); - } - - String payOrderNo = reqMap.get("out_trade_no"); - if (payOrderNo == null) { - return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), null); - } - Long payOrderId = Long.valueOf(payOrderNo); - WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,refundOrder.getTenantId()); - if (payOrder == null) { - log.warn("notify refund, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单不存在"); - } - // 验证支付金额 - if (!reqMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { - log.warn("notify refund, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单总金额不一致"); - } - - - log.info("notify refund, wxpay checksign success, paramMap:{}, paramMap: " + reqMap.toString() + ", payWay:" + payWay.toString()); - return notifySuccessResult(reqMap.get("transaction_id"), reqMap.get("refund_id"), refundOrder); - } - } catch (RuntimeException e) { - log.warn("notify refund, wepay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); - } catch (Exception e) { - log.warn("notify refund, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); - } - } - - return notifyErrorResult("FAILED"); - } - } diff --git a/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java b/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java index 8b1c137..dbe06cb 100644 --- a/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java +++ b/suimangService/src/main/java/com/iformall/service/pay/service/refund/wx/v3/WxRefundV3AdapterService.java @@ -89,7 +89,7 @@ public class WxRefundV3AdapterService implements RefundPayAdapterService{ req.setReason("用户自己退款"); } } - req.setNotify_url(payAccount.getRefundNotifyV3Url()); + req.setNotify_url(payAccount.getNotifyUrl() +"/pay"); V3PayRefundAmountReq amount = new V3PayRefundAmountReq(); amount.setRefund(record.getRefundFee()); amount.setTotal(record.getTotalFee()); @@ -251,91 +251,4 @@ public class WxRefundV3AdapterService implements RefundPayAdapterService{ } } - @Autowired - WxAppinfoMapper wxAppinfoMapper; - @Autowired - WxPayAccountMapper wxPayAccountMapper; - @Autowired - WxPayOrderMapper wxPayOrderMapper; - @Autowired - WxRefundOrderMapper wxRefundOrderMapper; - - - private RefundNotifyAdapterResult notifyErrorResult(String msg) { - SortedMap resultMap = new TreeMap(); - resultMap.put("code", "FAIL"); - resultMap.put("message", msg); - return new RefundNotifyAdapterResult(false,ErrorCode.REFUND_ORDER_ERROR.getCode(),msg,JSON.toJSONString(resultMap)); - } - - private RefundNotifyAdapterResult notifySuccessResult(String transactionId,String refundId,WxRefundOrder refundOrder) { - SortedMap resultMap = new TreeMap(); - resultMap.put("code", "SUCCESS"); - resultMap.put("message", "OK"); - return new RefundNotifyAdapterResult(transactionId, refundId,refundOrder,JSON.toJSONString(resultMap)); - } - - - @Override - public RefundNotifyAdapterResult notify(Map paramMap, EnumPayWay payWay) { - String tenantId = paramMap.get("tenantId"); - String resource = paramMap.get("resource"); - JSONObject reObj = JSON.parseObject(resource); - WxPayService wxPayService = wxPayAccountService.getWxPayService(tenantId); - try { - String decryptContent = WxPayV3.decrypt(wxPayService, reObj.getString("ciphertext"), reObj.getString("nonce"), reObj.getString("associated_data")); - log.info(decryptContent); - JSONObject decryptObj = JSON.parseObject(decryptContent); - String spMchId = decryptObj.getString("sp_mchid"); - String subMchId = decryptObj.getString("sub_mchid"); - String transactionId = decryptObj.getString("transaction_id"); - String outTradeNo = decryptObj.getString("out_trade_no"); - String refundId = decryptObj.getString("refund_id"); - String outRefundNo = decryptObj.getString("out_refund_no"); - String refundStatus = decryptObj.getString("refund_status"); - String successTime = decryptObj.getString("success_time"); - String userReceivedAccount = decryptObj.getString("user_received_account"); - JSONObject rObj = decryptObj.getJSONObject("amount"); - int total = rObj.getIntValue("total"); - int refund = rObj.getIntValue("refund"); - int payerTotal = rObj.getIntValue("payer_total"); - int payerRefund = rObj.getIntValue("payer_refund"); - - Long payOrderId = Long.valueOf(outTradeNo); - WxPayOrder payOrder = wxPayOrderMapper.selectById(payOrderId,tenantId); - if (payOrder == null) { - log.warn("notify refund, wxpay v3 check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单不存在"); - } - // 验证支付金额 - if (payerTotal != payOrder.getPayAmount().intValue()) { - log.warn("notify refund, wxpay v3 check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("支付订单总金额不一致"); - } - Long refundOrderId = Long.valueOf(outRefundNo); - WxRefundOrder refundOrder = wxRefundOrderMapper.selectById(refundOrderId); - if (refundOrder == null) { - log.warn("notify refund, wxpay v3 check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款订单不存在"); - } - // 验证支付金额 - if (payerTotal != refundOrder.getTotalFee().intValue()) { - log.warn("notify refund, wxpay v3 check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("订单总金额不一致"); - } - // 验证退款金额 - if (payerRefund != refundOrder.getRefundFee().intValue()) { - log.warn("notify refund, wxpay v3 check refund_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - return notifyErrorResult("退款总金额不一致"); - } - return notifySuccessResult(transactionId, refundId, refundOrder); - } catch (RuntimeException e) { - log.warn("notify refund paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); - } catch (Exception e) { - log.warn("notify refund, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR.getCode(), e.getMessage()); - } - } - } diff --git a/suimangService/src/main/java/com/iformall/utils/MaUtil.java b/suimangService/src/main/java/com/iformall/utils/MaUtil.java index d0b3c01..c8af211 100644 --- a/suimangService/src/main/java/com/iformall/utils/MaUtil.java +++ b/suimangService/src/main/java/com/iformall/utils/MaUtil.java @@ -336,49 +336,4 @@ public class MaUtil { return alipayClient; } - public static void main(String[] args) { - AlipayConfig alipayConfig = new AlipayConfig(); - - alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do"); - alipayConfig.setAppId("2021004122675328"); - alipayConfig.setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjYOqonp3RZMFCdh+rEdVKzVzEjk1ACXguNX2p6V1wN39hrkU1zR57PKKjU227p5jRy3MzeRupvvvt7aOLZM/9nDWh0OvqU3KBIRfKY1F46vqHE+GM06FWvhCDCSnSz98cCZN5GAWGDuV7zKQC6LekahiQH2HOEK+wJEkU9a/Y1RlZX3kmuCADhkywpLk4iUvQDP9QCgei9Vu4wHibGJZhJtbOgvap3k6nWrogAHZeuJ0O9HU3aizpcJFPn+OffA7U6zaBkP268AzclI1EgkH2lnosRJieLdcRskRB5AI5h8HF+SEzDwtytDwh1y7KBziR1j7H+oScDLcfhnvQwnw9AgMBAAECggEAHmQl4o3273+dj55nj6v2"); - alipayConfig.setFormat("json"); - alipayConfig.setCharset("UTF-8"); - alipayConfig.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxdq6ugtmAv1jGX/bMbxPQRgc5Muz8uzfr5d77yV7Z760NZcETVFZXfX3FMN/DwF/9sL4UZEx5Bd8yg46R8kgVFPKmfJf6kK7I/Cw9DtniZ9X+KSJzZerzkvttFgrKOGb5AhHupswrWmYgSopuPeYixUetuutCT6hFOx9rv9U9xS+eRoSW1JIGxioTXJ+tVS6fXh5lJVrC+Lj+5TMVZIu/WXrY6Ph+IgHMMVtwj7laiuVuefjVl9TbdPH7PRkAmdFcWcNDqPyBRsy5eLhC1LRPkOm2W5ydqVQ9yTI4rMq8wuAueX3Rcpgh/b+xZgJYv+Zlpb9/37TQHVDi5YnOlLlNQIDAQAB"); - alipayConfig.setSignType("RSA2"); - - try { - AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig); - AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); - //异步接收地址,仅支持http/https,公网可访问 - request.setNotifyUrl("https://mtest.metavatar.cc/C/payCallBack/aliNotify"); - //同步跳转地址,仅支持http/https - // request.setReturnUrl(""); - /******必传参数******/ - JSONObject bizContent = new JSONObject(); - //商户订单号,商家自定义,保持唯一性 - bizContent.put("out_trade_no", "test00000000000001"); - //支付金额,最小值0.01元 - bizContent.put("total_amount", "0.01"); - //订单标题,不可使用特殊符号 - bizContent.put("subject", "test"); - //电脑网站支付场景固定传值FAST_INSTANT_TRADE_PAY - bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); - - bizContent.put("qr_pay_mode",1); - - String after15 = DateUtils.date2String(DateUtils.getSecondsTimeAfter(15 * 60, new Date())); - - bizContent.put("time_expire", after15); - - request.setBizContent(bizContent.toString()); - - AlipayTradePagePayResponse response = alipayClient.pageExecute(request); - System.out.println(response.toString()); - - } catch (AlipayApiException e) { - e.printStackTrace(); - } - - } } From 38a7dd1e60dff08dc9e1df6f0b05ba25d72d2c62 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 14:45:30 +0800 Subject: [PATCH 21/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9a=E7=AB=AF?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=BF=E9=97=AE=E6=A0=B9=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- suimangAdmin/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangAdmin/src/main/resources/application.yml b/suimangAdmin/src/main/resources/application.yml index 85d85e6..8a81cd8 100644 --- a/suimangAdmin/src/main/resources/application.yml +++ b/suimangAdmin/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 9500 servlet: - context-path: /A + context-path: / spring: application: From 84aae10eac32aa7319251a1cbc348e6601bbd931 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 14:47:43 +0800 Subject: [PATCH 22/40] =?UTF-8?q?Revert=20"feat=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?a=E7=AB=AF=E9=A1=B9=E7=9B=AE=E8=AE=BF=E9=97=AE=E6=A0=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 38a7dd1e --- suimangAdmin/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suimangAdmin/src/main/resources/application.yml b/suimangAdmin/src/main/resources/application.yml index 8a81cd8..85d85e6 100644 --- a/suimangAdmin/src/main/resources/application.yml +++ b/suimangAdmin/src/main/resources/application.yml @@ -1,7 +1,7 @@ server: port: 9500 servlet: - context-path: / + context-path: /A spring: application: From 09a1ca831411e38eba914ac1160f4652d0c58798 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 25 Oct 2023 15:17:02 +0800 Subject: [PATCH 23/40] //yml --- open-api/src/main/resources/application-dev.yml | 4 ++-- suimangCApi/src/main/resources/application-dev.yml | 2 +- suimangSchedule/src/main/resources/application-dev.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/open-api/src/main/resources/application-dev.yml b/open-api/src/main/resources/application-dev.yml index 0c9757e..a7d92fc 100644 --- a/open-api/src/main/resources/application-dev.yml +++ b/open-api/src/main/resources/application-dev.yml @@ -206,6 +206,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 - callbackUrl: https://test.metavatar.cc/C \ No newline at end of file + callbackUrl: https://mtest.metavatar.cc/C \ No newline at end of file diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml index 0988c7b..83ec583 100644 --- a/suimangCApi/src/main/resources/application-dev.yml +++ b/suimangCApi/src/main/resources/application-dev.yml @@ -192,6 +192,6 @@ suimang: oral_broadcasting: http://111.198.0.15:22266 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://mtest.metavatar.cc/C diff --git a/suimangSchedule/src/main/resources/application-dev.yml b/suimangSchedule/src/main/resources/application-dev.yml index 25b9443..d4669fc 100644 --- a/suimangSchedule/src/main/resources/application-dev.yml +++ b/suimangSchedule/src/main/resources/application-dev.yml @@ -195,6 +195,6 @@ suimang: oral_broadcasting: http://nas.pucao.cn:2001 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 - digital_avatar: http://111.198.0.15:22200 + digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://mtest.metavatar.cc/C \ No newline at end of file From d1b555273339e4ba47227d168004d80eb762bc9c Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 15:25:25 +0800 Subject: [PATCH 24/40] =?UTF-8?q?feat=EF=BC=9A=E6=94=BE=E8=A1=8C=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/config/ShiroConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 7e8f60c..75223d8 100644 --- a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -149,8 +149,8 @@ public class ShiroConfig { //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 filterChainDefinitionMap.put("/logout", "authc"); - filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); -// filterChainDefinitionMap.put("/**", "anon"); +// filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); + filterChainDefinitionMap.put("/**", "anon"); shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); From 955190d2ebee8ddbc69d086e85e0a49c20bfab84 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 16:22:27 +0800 Subject: [PATCH 25/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/iformall/controller/sys/HomeController.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index 7f7b9a5..33333c1 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -88,6 +88,7 @@ public class HomeController extends BaseController { BufferedImage image = producer.createImage(text); //保存到shiro session ShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text); + logger.info("验证码接口-生成的验证码:{}", text); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); @@ -101,6 +102,8 @@ public class HomeController extends BaseController { logger.debug("[" + ipaddress + "] HomeController::doLogin"); try { String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY); + logger.info("登录接口-验证码:{}", user.getCaptcha()); + logger.info("登录接口-生成的验证码:{}", kaptcha); if(!user.getCaptcha().equalsIgnoreCase(kaptcha)){ return new ResultData(ErrorCode.KAPCHA_NOT_EQUAL); } From 7ad9485dc71ca055ba541875eb44ce4d6a9f74f9 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 17:33:55 +0800 Subject: [PATCH 26/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0a=E7=AB=AF?= =?UTF-8?q?api=E6=96=87=E6=A1=A3=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AiVideoServiceImpl.java | 2 +- .../controller/sm/ApiDetailController.java | 26 +++++ .../controller/sm/ApiGuideController.java | 40 +++++++ .../controller/sm/ApiMenuController.java | 40 +++++++ .../controller/sm/ServiceInfoController.java | 6 +- .../sm/ThirdPartyApiController.java | 2 +- .../controller/VoiceLanguageController.java | 3 +- .../dto/{neuver => sm}/GetLanguageDTO.java | 2 +- .../domain/dto/sm/SaveApiGuideDTO.java | 9 ++ .../domain/dto/sm/SaveApiMenuDTO.java | 9 ++ .../{neuver => sm}/SaveServiceInfoDTO.java | 2 +- .../SaveServiceVideoRecordDTO.java | 2 +- .../{neuver => sm}/SaveThirdPartyApiDTO.java | 2 +- .../domain/dto/sm/UpdateApiGuideDTO.java | 9 ++ .../domain/dto/sm/UpdateApiMenuDTO.java | 9 ++ .../{neuver => sm}/UpdateServiceInfoDTO.java | 3 +- .../UpdateServiceInfoStatusDTO.java | 2 +- .../UpdateThirdPartyApiStatusDTO.java | 3 +- .../com/iformall/domain/po/sm/ApiDetail.java | 101 ++++++++++++++++++ .../com/iformall/domain/po/sm/ApiGuide.java | 61 +++++++++++ .../com/iformall/domain/po/sm/ApiMenu.java | 61 +++++++++++ .../com/iformall/mapper/ApiDetailMapper.java | 15 +++ .../com/iformall/mapper/ApiGuideMapper.java | 15 +++ .../com/iformall/mapper/ApiMenuMapper.java | 15 +++ .../service/WxThirdPartyApiService.java | 4 +- .../impl/WxThirdPartyApiServiceImpl.java | 4 +- .../iformall/service/sm/ApiDetailService.java | 12 +++ .../iformall/service/sm/ApiGuideService.java | 19 ++++ .../iformall/service/sm/ApiMenuService.java | 19 ++++ .../service/sm/ServiceInfoService.java | 6 +- .../service/sm/ServiceVideoRecordService.java | 2 +- .../service/sm/impl/ApiDetailServiceImpl.java | 24 +++++ .../service/sm/impl/ApiGuideServiceImpl.java | 37 +++++++ .../service/sm/impl/ApiMenuServiceImpl.java | 37 +++++++ .../sm/impl/ServiceInfoServiceImpl.java | 4 +- .../impl/ServiceVideoRecordServiceImpl.java | 3 +- .../main/resources/mapper/ApiDetailMapper.xml | 34 ++++++ .../main/resources/mapper/ApiGuideMapper.xml | 23 ++++ .../main/resources/mapper/ApiMenuMapper.xml | 23 ++++ 39 files changed, 661 insertions(+), 29 deletions(-) create mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java create mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java create mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/GetLanguageDTO.java (86%) create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/SaveServiceInfoDTO.java (96%) rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/SaveServiceVideoRecordDTO.java (96%) rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/SaveThirdPartyApiDTO.java (93%) create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java create mode 100644 suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/UpdateServiceInfoDTO.java (90%) rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/UpdateServiceInfoStatusDTO.java (89%) rename suimangService/src/main/java/com/iformall/domain/dto/{neuver => sm}/UpdateThirdPartyApiStatusDTO.java (85%) create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ApiDetailMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/ApiDetailService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java create mode 100644 suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java create mode 100644 suimangService/src/main/resources/mapper/ApiDetailMapper.xml create mode 100644 suimangService/src/main/resources/mapper/ApiGuideMapper.xml create mode 100644 suimangService/src/main/resources/mapper/ApiMenuMapper.xml diff --git a/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java b/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java index 3c6c992..ea4d7ef 100644 --- a/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java +++ b/open-api/src/main/java/com/iformall/service/impl/AiVideoServiceImpl.java @@ -1,6 +1,6 @@ package com.iformall.service.impl; -import com.iformall.domain.dto.neuver.SaveServiceVideoRecordDTO; +import com.iformall.domain.dto.sm.SaveServiceVideoRecordDTO; import com.iformall.service.AiVideoService; import com.iformall.service.sm.ServiceVideoRecordService; import com.iformall.sm.*; diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java new file mode 100644 index 0000000..21b0d1f --- /dev/null +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java @@ -0,0 +1,26 @@ +package com.iformall.controller.sm; + +import com.iformall.common.ResultData; +import com.iformall.domain.dto.sm.SaveApiMenuDTO; +import com.iformall.domain.po.sm.ApiDetail; +import com.iformall.service.sm.ApiDetailService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/apiDetail") +@Api(tags = "api菜单详情接口") +public class ApiDetailController { + + @Autowired + private ApiDetailService apiDetailService; + + @ApiOperation("查询单个api菜单详情") + @GetMapping("/get") + public ResultData getApiDetail(Long id) { + ApiDetail apiDetail = apiDetailService.getApiDetail(id); + return new ResultData(apiDetail); + } +} diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java new file mode 100644 index 0000000..ac1b4ab --- /dev/null +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java @@ -0,0 +1,40 @@ +package com.iformall.controller.sm; + +import com.iformall.common.ResultData; +import com.iformall.domain.dto.sm.SaveApiGuideDTO; +import com.iformall.domain.dto.sm.UpdateApiGuideDTO; +import com.iformall.domain.po.sm.ApiGuide; +import com.iformall.service.sm.ApiGuideService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/apiGuide") +@Api(tags = "api指南接口") +public class ApiGuideController { + + @Autowired + private ApiGuideService apiGuideService; + + @ApiOperation("分页查询api菜单") + @GetMapping("/page") + public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { + return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); + } + + @ApiOperation("新增api菜单") + @PostMapping("/save") + public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { + apiGuideService.saveApiGuide(dto); + return new ResultData(); + } + + @ApiOperation("修改api菜单") + @PostMapping("/update") + public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { + apiGuideService.updateApiGuide(dto); + return new ResultData(); + } +} diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java new file mode 100644 index 0000000..58bec26 --- /dev/null +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java @@ -0,0 +1,40 @@ +package com.iformall.controller.sm; + +import com.iformall.common.ResultData; +import com.iformall.domain.dto.sm.SaveApiMenuDTO; +import com.iformall.domain.dto.sm.UpdateApiMenuDTO; +import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.service.sm.ApiMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/apiMenu") +@Api(tags = "api菜单接口") +public class ApiMenuController { + + @Autowired + private ApiMenuService apiMenuService; + + @ApiOperation("分页查询api菜单") + @GetMapping("/page") + public ResultData pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) { + return new ResultData(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize)); + } + + @ApiOperation("新增api菜单") + @PostMapping("/save") + public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) { + apiMenuService.saveApiMenu(dto); + return new ResultData(); + } + + @ApiOperation("修改api菜单") + @PostMapping("/update") + public ResultData updateApiMenu(@RequestBody UpdateApiMenuDTO dto) { + apiMenuService.updateApiMenu(dto); + return new ResultData(); + } +} diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java index d87d6f3..843b80e 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java @@ -2,9 +2,9 @@ package com.iformall.controller.sm; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; +import com.iformall.domain.dto.sm.SaveServiceInfoDTO; +import com.iformall.domain.dto.sm.UpdateServiceInfoDTO; +import com.iformall.domain.dto.sm.UpdateServiceInfoStatusDTO; import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.service.sm.ServiceInfoService; import io.swagger.annotations.Api; diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java index f8a9ffa..e6fbc0b 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java @@ -1,7 +1,7 @@ package com.iformall.controller.sm; import com.iformall.common.ResultData; -import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; +import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.service.WxThirdPartyApiService; import io.swagger.annotations.Api; diff --git a/suimangCApi/src/main/java/com/iformall/controller/VoiceLanguageController.java b/suimangCApi/src/main/java/com/iformall/controller/VoiceLanguageController.java index 77299f7..8be1722 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/VoiceLanguageController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/VoiceLanguageController.java @@ -1,8 +1,7 @@ package com.iformall.controller; -import com.iformall.annotation.AuthIgnore; import com.iformall.common.ResultData; -import com.iformall.domain.dto.neuver.GetLanguageDTO; +import com.iformall.domain.dto.sm.GetLanguageDTO; import com.iformall.service.sm.VoiceLanguageService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/GetLanguageDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/GetLanguageDTO.java similarity index 86% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/GetLanguageDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/GetLanguageDTO.java index ecae1cd..1ad0784 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/GetLanguageDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/GetLanguageDTO.java @@ -1,4 +1,4 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java new file mode 100644 index 0000000..48edffd --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java @@ -0,0 +1,9 @@ +package com.iformall.domain.dto.sm; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "新增API指南") +@Data +public class SaveApiGuideDTO { +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java new file mode 100644 index 0000000..c4b2140 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java @@ -0,0 +1,9 @@ +package com.iformall.domain.dto.sm; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "新增API菜单") +@Data +public class SaveApiMenuDTO { +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceInfoDTO.java similarity index 96% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceInfoDTO.java index 7dcd4f8..4032f75 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceInfoDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceInfoDTO.java @@ -1,4 +1,4 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import com.iformall.common.CommonConstants; import com.iformall.common.IdWorker; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceVideoRecordDTO.java similarity index 96% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceVideoRecordDTO.java index e146f73..bfdc40b 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveServiceVideoRecordDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveServiceVideoRecordDTO.java @@ -1,4 +1,4 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import com.iformall.common.IdWorker; import com.iformall.domain.po.sm.ServiceVideoRecord; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveThirdPartyApiDTO.java similarity index 93% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/SaveThirdPartyApiDTO.java index 79bec50..a1ee443 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/SaveThirdPartyApiDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveThirdPartyApiDTO.java @@ -1,4 +1,4 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java new file mode 100644 index 0000000..58986e2 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java @@ -0,0 +1,9 @@ +package com.iformall.domain.dto.sm; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "修改API指南") +@Data +public class UpdateApiGuideDTO { +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java new file mode 100644 index 0000000..c8e530b --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java @@ -0,0 +1,9 @@ +package com.iformall.domain.dto.sm; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "修改API菜单") +@Data +public class UpdateApiMenuDTO { +} diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoDTO.java similarity index 90% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoDTO.java index 3e9d8ba..c14355b 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoDTO.java @@ -1,6 +1,5 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; -import com.iformall.common.CommonConstants; import com.iformall.domain.po.sm.ServiceInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoStatusDTO.java similarity index 89% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoStatusDTO.java index 65cc181..53b66a2 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateServiceInfoStatusDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateServiceInfoStatusDTO.java @@ -1,4 +1,4 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateThirdPartyApiStatusDTO.java similarity index 85% rename from suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java rename to suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateThirdPartyApiStatusDTO.java index c3b059d..64debcd 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/neuver/UpdateThirdPartyApiStatusDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateThirdPartyApiStatusDTO.java @@ -1,8 +1,7 @@ -package com.iformall.domain.dto.neuver; +package com.iformall.domain.dto.sm; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Builder; import lombok.Data; @ApiModel(value = "更新开放接口秘钥状态") diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java new file mode 100644 index 0000000..1707d82 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java @@ -0,0 +1,101 @@ +package com.iformall.domain.po.sm; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName api_detail + */ +@TableName(value ="api_detail") +@Data +public class ApiDetail implements Serializable { + /** + * 详情id + */ + @TableId + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 菜单id + */ + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 是否付费(0:否,1:是) + */ + private Byte chargeFlag; + + /** + * 是否需用户授权(0:否,1:是) + */ + private Byte authFlag; + + /** + * 描述 + */ + private String description; + + /** + * 平台地址 + */ + private String platformUrl; + + /** + * 系统参数 + */ + private String publicParam; + + /** + * 请求参数 + */ + private String requestParam; + + /** + * 响应参数 + */ + private String responseParam; + + /** + * 请求示例 + */ + private String requestSample; + + /** + * 响应示例 + */ + private String responseSample; + + /** + * 异常示例 + */ + private String exceptionSample; + + /** + * 状态(0:正常,1:锁定) + */ + private Byte status; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java new file mode 100644 index 0000000..bd47c7a --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java @@ -0,0 +1,61 @@ +package com.iformall.domain.po.sm; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName api_guide + */ +@TableName(value ="api_guide") +@Data +public class ApiGuide implements Serializable { + /** + * 主键id + */ + @TableId + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 发布时间 + */ + private Date releaseTime; + + /** + * 指南名称 + */ + private String name; + + /** + * 指南内容 + */ + private String content; + + /** + * 状态(0:正常,1:锁定) + */ + private Byte status; + + /** + * 删除(0:未删除,1:删除) + */ + private Byte deleteFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java new file mode 100644 index 0000000..935394f --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java @@ -0,0 +1,61 @@ +package com.iformall.domain.po.sm; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * + * @TableName api_menu + */ +@TableName(value ="api_menu") +@Data +public class ApiMenu implements Serializable { + /** + * 菜单id + */ + @TableId + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 菜单名称 + */ + private String name; + + /** + * 父菜单id + */ + private Long parentId; + + /** + * 状态(0:正常,1:锁定) + */ + private Byte status; + + /** + * 是否叶子节点(0:否,1:是) + */ + private Byte leafFlag; + + /** + * 是否删除(0:未删除,1:删除) + */ + private Byte deleteFlag; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiDetailMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiDetailMapper.java new file mode 100644 index 0000000..e7574e4 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ApiDetailMapper.java @@ -0,0 +1,15 @@ +package com.iformall.mapper; + +import com.iformall.domain.po.sm.ApiDetail; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Entity com.iformall.domain.po.sm.ApiDetail + */ +public interface ApiDetailMapper extends BaseMapper { + +} + + + + diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java new file mode 100644 index 0000000..f981249 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java @@ -0,0 +1,15 @@ +package com.iformall.mapper; + +import com.iformall.domain.po.sm.ApiGuide; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Entity com.iformall.domain.po.sm.ApiGuide + */ +public interface ApiGuideMapper extends BaseMapper { + +} + + + + diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java new file mode 100644 index 0000000..bf1ef67 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java @@ -0,0 +1,15 @@ +package com.iformall.mapper; + +import com.iformall.domain.po.sm.ApiMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Entity com.iformall.domain.po.sm.ApiMenu + */ +public interface ApiMenuMapper extends BaseMapper { + +} + + + + diff --git a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java index 4c01e9a..e80a8a3 100644 --- a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java +++ b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java @@ -1,8 +1,8 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; -import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; -import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; +import com.iformall.domain.dto.sm.SaveThirdPartyApiDTO; +import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import java.util.List; diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java index d3db214..d3d26ad 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java @@ -8,8 +8,8 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.CommonConstants; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; -import com.iformall.domain.dto.neuver.SaveThirdPartyApiDTO; -import com.iformall.domain.dto.neuver.UpdateThirdPartyApiStatusDTO; +import com.iformall.domain.dto.sm.SaveThirdPartyApiDTO; +import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.exception.BizException; diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiDetailService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiDetailService.java new file mode 100644 index 0000000..124f1e9 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiDetailService.java @@ -0,0 +1,12 @@ +package com.iformall.service.sm; + +import com.iformall.domain.po.sm.ApiDetail; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * + */ +public interface ApiDetailService extends IService { + + ApiDetail getApiDetail(Long id); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java new file mode 100644 index 0000000..71b3f01 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java @@ -0,0 +1,19 @@ +package com.iformall.service.sm; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.sm.SaveApiGuideDTO; +import com.iformall.domain.dto.sm.UpdateApiGuideDTO; +import com.iformall.domain.po.sm.ApiGuide; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * + */ +public interface ApiGuideService extends IService { + + PageInfo pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize); + + void saveApiGuide(SaveApiGuideDTO dto); + + void updateApiGuide(UpdateApiGuideDTO dto); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java new file mode 100644 index 0000000..efc12ff --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java @@ -0,0 +1,19 @@ +package com.iformall.service.sm; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.sm.SaveApiMenuDTO; +import com.iformall.domain.dto.sm.UpdateApiMenuDTO; +import com.iformall.domain.po.sm.ApiMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * + */ +public interface ApiMenuService extends IService { + + PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize); + + void saveApiMenu(SaveApiMenuDTO dto); + + void updateApiMenu(UpdateApiMenuDTO dto); +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java index 7acd4ea..abd0179 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ServiceInfoService.java @@ -1,9 +1,9 @@ package com.iformall.service.sm; import com.github.pagehelper.PageInfo; -import com.iformall.domain.dto.neuver.SaveServiceInfoDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoDTO; -import com.iformall.domain.dto.neuver.UpdateServiceInfoStatusDTO; +import com.iformall.domain.dto.sm.SaveServiceInfoDTO; +import com.iformall.domain.dto.sm.UpdateServiceInfoDTO; +import com.iformall.domain.dto.sm.UpdateServiceInfoStatusDTO; import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.domain.vo.neuver.PageServiceInfoVO; diff --git a/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java b/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java index 40652d2..82f2b66 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ServiceVideoRecordService.java @@ -1,6 +1,6 @@ package com.iformall.service.sm; -import com.iformall.domain.dto.neuver.SaveServiceVideoRecordDTO; +import com.iformall.domain.dto.sm.SaveServiceVideoRecordDTO; /** * @author xmzhao71 diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java new file mode 100644 index 0000000..a62b5f0 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java @@ -0,0 +1,24 @@ +package com.iformall.service.sm.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.iformall.domain.po.sm.ApiDetail; +import com.iformall.service.sm.ApiDetailService; +import com.iformall.mapper.ApiDetailMapper; +import org.springframework.stereotype.Service; + +/** + * + */ +@Service +public class ApiDetailServiceImpl extends ServiceImpl + implements ApiDetailService{ + + @Override + public ApiDetail getApiDetail(Long id) { + return null; + } +} + + + + diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java new file mode 100644 index 0000000..24f91a6 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java @@ -0,0 +1,37 @@ +package com.iformall.service.sm.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.sm.SaveApiGuideDTO; +import com.iformall.domain.dto.sm.UpdateApiGuideDTO; +import com.iformall.domain.po.sm.ApiGuide; +import com.iformall.service.sm.ApiGuideService; +import com.iformall.mapper.ApiGuideMapper; +import org.springframework.stereotype.Service; + +/** + * + */ +@Service +public class ApiGuideServiceImpl extends ServiceImpl + implements ApiGuideService{ + + @Override + public PageInfo pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { + return null; + } + + @Override + public void saveApiGuide(SaveApiGuideDTO dto) { + + } + + @Override + public void updateApiGuide(UpdateApiGuideDTO dto) { + + } +} + + + + diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java new file mode 100644 index 0000000..57ceac1 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java @@ -0,0 +1,37 @@ +package com.iformall.service.sm.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.sm.SaveApiMenuDTO; +import com.iformall.domain.dto.sm.UpdateApiMenuDTO; +import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.service.sm.ApiMenuService; +import com.iformall.mapper.ApiMenuMapper; +import org.springframework.stereotype.Service; + +/** + * + */ +@Service +public class ApiMenuServiceImpl extends ServiceImpl + implements ApiMenuService{ + + @Override + public PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize) { + return null; + } + + @Override + public void saveApiMenu(SaveApiMenuDTO dto) { + + } + + @Override + public void updateApiMenu(UpdateApiMenuDTO dto) { + + } +} + + + + diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java index 64e113c..93e0233 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java @@ -6,7 +6,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.CommonConstants; import com.iformall.common.ErrorCode; -import com.iformall.domain.dto.neuver.*; +import com.iformall.domain.dto.sm.*; import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.domain.po.sm.ServiceInfo; import com.iformall.exception.BizException; @@ -18,8 +18,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; - @Service public class ServiceInfoServiceImpl implements ServiceInfoService { diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java index a60afbc..6963617 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceVideoRecordServiceImpl.java @@ -1,7 +1,6 @@ package com.iformall.service.sm.impl; -import com.iformall.domain.dto.neuver.SaveServiceVideoRecordDTO; -import com.iformall.domain.po.sm.ServiceVideoRecord; +import com.iformall.domain.dto.sm.SaveServiceVideoRecordDTO; import com.iformall.mapper.ServiceVideoRecordMapper; import com.iformall.service.sm.ServiceVideoRecordService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/suimangService/src/main/resources/mapper/ApiDetailMapper.xml b/suimangService/src/main/resources/mapper/ApiDetailMapper.xml new file mode 100644 index 0000000..982f85e --- /dev/null +++ b/suimangService/src/main/resources/mapper/ApiDetailMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id,create_time,update_time, + menu_id,menu_name,charge_flag, + auth_flag,description,platform_url, + public_param,request_param,response_param, + request_sample,response_sample,exception_sample, + status + + diff --git a/suimangService/src/main/resources/mapper/ApiGuideMapper.xml b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml new file mode 100644 index 0000000..722d546 --- /dev/null +++ b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + id,create_time,update_time, + release_time,name,content, + status,delete_flag + + diff --git a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml new file mode 100644 index 0000000..ae90892 --- /dev/null +++ b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + id,create_time,update_time, + name,parent_id,status, + leaf_flag,delete_flag + + From d3d061d7828dc9e07a2af7a617c82e8d979b4767 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 18:38:22 +0800 Subject: [PATCH 27/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0a=E7=AB=AF?= =?UTF-8?q?api=E6=96=87=E6=A1=A3=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/common/CommonConstants.java | 7 ++--- .../domain/dto/sm/SaveApiGuideDTO.java | 27 +++++++++++++++++++ .../domain/dto/sm/SaveApiMenuDTO.java | 24 +++++++++++++++++ .../domain/dto/sm/UpdateApiGuideDTO.java | 26 ++++++++++++++++++ .../domain/dto/sm/UpdateApiMenuDTO.java | 24 +++++++++++++++++ .../com/iformall/domain/po/sm/ApiGuide.java | 4 +-- .../com/iformall/domain/po/sm/ApiMenu.java | 6 ++--- .../com/iformall/mapper/ApiGuideMapper.java | 3 +++ .../com/iformall/mapper/ApiMenuMapper.java | 3 +++ .../service/sm/impl/ApiDetailServiceImpl.java | 6 +++-- .../service/sm/impl/ApiGuideServiceImpl.java | 16 +++++++---- .../service/sm/impl/ApiMenuServiceImpl.java | 16 +++++++---- .../sm/impl/ServiceInfoServiceImpl.java | 2 +- .../main/resources/mapper/ApiGuideMapper.xml | 20 ++++++++++++++ .../main/resources/mapper/ApiMenuMapper.xml | 23 ++++++++++++++++ 15 files changed, 186 insertions(+), 21 deletions(-) diff --git a/suimangService/src/main/java/com/iformall/common/CommonConstants.java b/suimangService/src/main/java/com/iformall/common/CommonConstants.java index fe8ad85..13b67b0 100644 --- a/suimangService/src/main/java/com/iformall/common/CommonConstants.java +++ b/suimangService/src/main/java/com/iformall/common/CommonConstants.java @@ -8,8 +8,9 @@ public interface CommonConstants { Integer STATUS_ABNORMAL = 1; /** - * 删除状态(0:未删除,1:已删除) + * 是否:0:否,1:是 + * 是否删除状态(0:未删除,1:已删除) */ - Integer DEL_FLAG_DELETED = 1; - Integer DEL_FLAG_NORMAL = 0; + Integer FLAG_TRUE = 1; + Integer FLAG_FALSE = 0; } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java index 48edffd..5e86ffa 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java @@ -1,9 +1,36 @@ package com.iformall.domain.dto.sm; +import com.iformall.common.CommonConstants; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiGuide; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + @ApiModel(value = "新增API指南") @Data public class SaveApiGuideDTO { + @ApiModelProperty("api名称") + private String name; + @ApiModelProperty("指南内容") + private String content; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + + public static ApiGuide mapping(SaveApiGuideDTO dto) { + ApiGuide apiGuide = new ApiGuide(); + apiGuide.setId(IdWorker.get().nextId()); + apiGuide.setCreateTime(new Date()); + apiGuide.setUpdateTime(new Date()); + if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus())) { + apiGuide.setReleaseTime(new Date()); + } + apiGuide.setName(dto.getName()); + apiGuide.setContent(dto.getContent()); + apiGuide.setStatus(dto.getStatus()); + apiGuide.setDeleteFlag(CommonConstants.FLAG_FALSE); + return apiGuide; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java index c4b2140..c4cb19e 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java @@ -1,9 +1,33 @@ package com.iformall.domain.dto.sm; +import com.iformall.common.CommonConstants; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiMenu; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + @ApiModel(value = "新增API菜单") @Data public class SaveApiMenuDTO { + @ApiModelProperty("菜单名称") + private String name; + @ApiModelProperty("父菜单id") + private Long parentId; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + + public static ApiMenu mapping(SaveApiMenuDTO dto) { + ApiMenu apiMenu = new ApiMenu(); + apiMenu.setId(IdWorker.get().nextId()); + apiMenu.setCreateTime(new Date()); + apiMenu.setUpdateTime(new Date()); + apiMenu.setName(dto.getName()); + apiMenu.setParentId(dto.getParentId()); + apiMenu.setStatus(dto.getStatus()); + apiMenu.setDeleteFlag(CommonConstants.FLAG_FALSE); + return apiMenu; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java index 58986e2..ca80d9a 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java @@ -1,9 +1,35 @@ package com.iformall.domain.dto.sm; +import com.iformall.common.CommonConstants; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiGuide; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + @ApiModel(value = "修改API指南") @Data public class UpdateApiGuideDTO { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("api名称") + private String name; + @ApiModelProperty("指南内容") + private String content; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + + public static ApiGuide mapping(UpdateApiGuideDTO dto) { + ApiGuide apiGuide = new ApiGuide(); + apiGuide.setUpdateTime(new Date()); + if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus())) { + apiGuide.setReleaseTime(new Date()); + } + apiGuide.setName(dto.getName()); + apiGuide.setContent(dto.getContent()); + apiGuide.setStatus(dto.getStatus()); + return apiGuide; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java index c8e530b..d16354d 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java @@ -1,9 +1,33 @@ package com.iformall.domain.dto.sm; +import com.iformall.common.CommonConstants; +import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiMenu; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.Date; + @ApiModel(value = "修改API菜单") @Data public class UpdateApiMenuDTO { + @ApiModelProperty("id") + private Long id; + @ApiModelProperty("菜单名称") + private String name; + @ApiModelProperty("父菜单id") + private Long parentId; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + + public static ApiMenu mapping(UpdateApiMenuDTO dto) { + ApiMenu apiMenu = new ApiMenu(); + apiMenu.setId(dto.getId()); + apiMenu.setUpdateTime(new Date()); + apiMenu.setName(dto.getName()); + apiMenu.setParentId(dto.getParentId()); + apiMenu.setStatus(dto.getStatus()); + return apiMenu; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java index bd47c7a..2598ccc 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiGuide.java @@ -49,12 +49,12 @@ public class ApiGuide implements Serializable { /** * 状态(0:正常,1:锁定) */ - private Byte status; + private Integer status; /** * 删除(0:未删除,1:删除) */ - private Byte deleteFlag; + private Integer deleteFlag; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java index 935394f..ab94f22 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiMenu.java @@ -44,17 +44,17 @@ public class ApiMenu implements Serializable { /** * 状态(0:正常,1:锁定) */ - private Byte status; + private Integer status; /** * 是否叶子节点(0:否,1:是) */ - private Byte leafFlag; + private Integer leafFlag; /** * 是否删除(0:未删除,1:删除) */ - private Byte deleteFlag; + private Integer deleteFlag; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java index f981249..42a1d0d 100644 --- a/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/ApiGuideMapper.java @@ -3,11 +3,14 @@ package com.iformall.mapper; import com.iformall.domain.po.sm.ApiGuide; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @Entity com.iformall.domain.po.sm.ApiGuide */ public interface ApiGuideMapper extends BaseMapper { + List listApiGuide(ApiGuide apiGuide); } diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java index bf1ef67..1a95553 100644 --- a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java @@ -3,11 +3,14 @@ package com.iformall.mapper; import com.iformall.domain.po.sm.ApiMenu; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @Entity com.iformall.domain.po.sm.ApiMenu */ public interface ApiMenuMapper extends BaseMapper { + List listApiMenu(ApiMenu apiMenu); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java index a62b5f0..f1ae80a 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiDetailServiceImpl.java @@ -4,14 +4,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.iformall.domain.po.sm.ApiDetail; import com.iformall.service.sm.ApiDetailService; import com.iformall.mapper.ApiDetailMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * */ @Service -public class ApiDetailServiceImpl extends ServiceImpl - implements ApiDetailService{ +public class ApiDetailServiceImpl extends ServiceImpl implements ApiDetailService{ + @Autowired + private ApiDetailMapper apiDetailMapper; @Override public ApiDetail getApiDetail(Long id) { diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java index 24f91a6..b008973 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java @@ -1,34 +1,40 @@ package com.iformall.service.sm.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.sm.SaveApiGuideDTO; import com.iformall.domain.dto.sm.UpdateApiGuideDTO; import com.iformall.domain.po.sm.ApiGuide; import com.iformall.service.sm.ApiGuideService; import com.iformall.mapper.ApiGuideMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * */ @Service -public class ApiGuideServiceImpl extends ServiceImpl - implements ApiGuideService{ +public class ApiGuideServiceImpl extends ServiceImpl implements ApiGuideService{ + + @Autowired + private ApiGuideMapper apiGuideMapper; @Override public PageInfo pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { - return null; + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> apiGuideMapper.listApiGuide(apiGuide)); } @Override public void saveApiGuide(SaveApiGuideDTO dto) { - + ApiGuide apiGuide = SaveApiGuideDTO.mapping(dto); + apiGuideMapper.insert(apiGuide); } @Override public void updateApiGuide(UpdateApiGuideDTO dto) { - + ApiGuide apiGuide = UpdateApiGuideDTO.mapping(dto); + apiGuideMapper.updateById(apiGuide); } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java index 57ceac1..ff066a6 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java @@ -1,34 +1,40 @@ package com.iformall.service.sm.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; import com.iformall.service.sm.ApiMenuService; import com.iformall.mapper.ApiMenuMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * */ @Service -public class ApiMenuServiceImpl extends ServiceImpl - implements ApiMenuService{ +public class ApiMenuServiceImpl extends ServiceImpl implements ApiMenuService{ + + @Autowired + private ApiMenuMapper apiMenuMapper; @Override public PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize) { - return null; + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> apiMenuMapper.listApiMenu(apiMenu)); } @Override public void saveApiMenu(SaveApiMenuDTO dto) { - + ApiMenu apiMenu = SaveApiMenuDTO.mapping(dto); + apiMenuMapper.insert(apiMenu); } @Override public void updateApiMenu(UpdateApiMenuDTO dto) { - + ApiMenu apiMenu = UpdateApiMenuDTO.mapping(dto); + apiMenuMapper.updateById(apiMenu); } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java index 93e0233..4aea26b 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ServiceInfoServiceImpl.java @@ -33,7 +33,7 @@ public class ServiceInfoServiceImpl implements ServiceInfoService { public void saveServiceInfo(SaveServiceInfoDTO dto) { // 校验 ServiceInfo serviceInfo = serviceInfoMapper.selectOne(new LambdaQueryWrapper() - .eq(ServiceInfo::getDelFlag, CommonConstants.DEL_FLAG_NORMAL) + .eq(ServiceInfo::getDelFlag, CommonConstants.FLAG_FALSE) .eq(ServiceInfo::getCode, dto.getCode())); if (serviceInfo != null) { throw new BizException(ErrorCode.CODE_ALREADY_EXISTS); diff --git a/suimangService/src/main/resources/mapper/ApiGuideMapper.xml b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml index 722d546..b583099 100644 --- a/suimangService/src/main/resources/mapper/ApiGuideMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml @@ -20,4 +20,24 @@ release_time,name,content, status,delete_flag + + + WHERE 1 = 1 + + and `id` = #{id} + + + and `name` = #{name} + + + and `status = #{status} + + + + diff --git a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml index ae90892..a3810cf 100644 --- a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml @@ -20,4 +20,27 @@ name,parent_id,status, leaf_flag,delete_flag + + + WHERE 1 = 1 + + and `id` = #{id} + + + and `parent_id` = #{parentId} + + + and `name` = #{name} + + + and `status = #{status} + + + + From 9b28b730f1123ac955a80ec411132cb0885780d8 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Wed, 25 Oct 2023 18:51:51 +0800 Subject: [PATCH 28/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=AA=8C=E8=AF=81=E7=A0=81=E6=A0=A1=E9=AA=8C=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/HomeController.java | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index 33333c1..a524769 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -87,7 +87,9 @@ public class HomeController extends BaseController { //生成图片验证码 BufferedImage image = producer.createImage(text); //保存到shiro session - ShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text); +// ShiroUtils.setSessionAttribute(Constants.KAPTCHA_SESSION_KEY, text); + String key = Constant.captchaPrev + ":" + getIpAddr(); + RedisCacheUtils.cache(redisTemplate, key, text, 60); logger.info("验证码接口-生成的验证码:{}", text); ServletOutputStream out = response.getOutputStream(); @@ -100,17 +102,26 @@ public class HomeController extends BaseController { public ResultData login(@RequestBody MallUserInfo user, HttpServletResponse response) { String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] HomeController::doLogin"); - try { - String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY); - logger.info("登录接口-验证码:{}", user.getCaptcha()); - logger.info("登录接口-生成的验证码:{}", kaptcha); - if(!user.getCaptcha().equalsIgnoreCase(kaptcha)){ - return new ResultData(ErrorCode.KAPCHA_NOT_EQUAL); - } - } catch (MallinkException e) { - logger.error("验证码" + e.getMessage()); - return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode(), e.getMessage()); +// try { +// String kaptcha = ShiroUtils.getKaptcha(Constants.KAPTCHA_SESSION_KEY); +// logger.info("登录接口-验证码:{}", user.getCaptcha()); +// logger.info("登录接口-生成的验证码:{}", kaptcha); +// if(!user.getCaptcha().equalsIgnoreCase(kaptcha)){ +// return new ResultData(ErrorCode.KAPCHA_NOT_EQUAL); +// } +// } catch (MallinkException e) { +// logger.error("验证码" + e.getMessage()); +// return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode(), e.getMessage()); +// } + String key = Constant.captchaPrev + ":" + getIpAddr(); + String code = RedisCacheUtils.getCacheString(redisTemplate, key); + if (StringUtils.isBlank(code)) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); } + if (!code.equals(user.getCaptcha())) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); + } + if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); From ee8b67c4142774623f63fb2f2c91b43adfc99d54 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 25 Oct 2023 18:54:16 +0800 Subject: [PATCH 29/40] //package --- .../com/iformall/domain/po/LevelPackage.java | 52 ++++++++ .../domain/po/ProjectPackageDetail.java | 121 ++++++++++++++++++ .../iformall/domain/po/UserLevelPackage.java | 52 ++++++++ .../iformall/enums/sm/EnumAiTemplateType.java | 34 +++++ .../iformall/enums/sm/EnumTemplateType.java | 34 +++++ .../enums/sm/EnumVideoFormatType.java | 34 +++++ .../iformall/mapper/LevelPackageMapper.java | 12 ++ .../mapper/ProjectPackageDetailMapper.java | 12 ++ .../mapper/UserLevelPackageMapper.java | 12 ++ .../resources/mapper/LevelPackageMapper.xml | 69 ++++++++++ .../mapper/ProjectPackageDetailMapper.xml | 75 +++++++++++ .../mapper/UserLevelPackageMapper.xml | 71 ++++++++++ 12 files changed, 578 insertions(+) create mode 100644 suimangService/src/main/java/com/iformall/domain/po/LevelPackage.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/ProjectPackageDetail.java create mode 100644 suimangService/src/main/java/com/iformall/domain/po/UserLevelPackage.java create mode 100644 suimangService/src/main/java/com/iformall/enums/sm/EnumAiTemplateType.java create mode 100644 suimangService/src/main/java/com/iformall/enums/sm/EnumTemplateType.java create mode 100644 suimangService/src/main/java/com/iformall/enums/sm/EnumVideoFormatType.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/LevelPackageMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/ProjectPackageDetailMapper.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/UserLevelPackageMapper.java create mode 100644 suimangService/src/main/resources/mapper/LevelPackageMapper.xml create mode 100644 suimangService/src/main/resources/mapper/ProjectPackageDetailMapper.xml create mode 100644 suimangService/src/main/resources/mapper/UserLevelPackageMapper.xml diff --git a/suimangService/src/main/java/com/iformall/domain/po/LevelPackage.java b/suimangService/src/main/java/com/iformall/domain/po/LevelPackage.java new file mode 100644 index 0000000..0589913 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/LevelPackage.java @@ -0,0 +1,52 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@TableName(value = "level_package") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class LevelPackage extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="等级",name="level") + private Integer level; + + @io.swagger.annotations.ApiModelProperty(value="名称",name="name") + private String name; + + @io.swagger.annotations.ApiModelProperty(value="",name="en_name") + private String en_name; + @io.swagger.annotations.ApiModelProperty(value="套餐色",name="color") + private String color; + + @io.swagger.annotations.ApiModelProperty(value="",name="priceDollar") + private Integer priceDollar; + @io.swagger.annotations.ApiModelProperty(value="",name="priceRmb") + private Integer priceRmb; + + @io.swagger.annotations.ApiModelProperty(value="套餐积分",name="credit") + private Integer credit; + @io.swagger.annotations.ApiModelProperty(value="套餐时长",name="validityDuration") + private Integer validityDuration; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="",name="updateDate") + private Date updateDate; + + @TableField(exist = false) + private Date startDate; + + @TableField(exist = false) + private Date endDate; + +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/ProjectPackageDetail.java b/suimangService/src/main/java/com/iformall/domain/po/ProjectPackageDetail.java new file mode 100644 index 0000000..6c24111 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/ProjectPackageDetail.java @@ -0,0 +1,121 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.sm.EnumAiTemplateType; +import com.iformall.enums.sm.EnumLanguageType; +import com.iformall.enums.sm.EnumSoundType; +import com.iformall.enums.sm.EnumVideoFormatType; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@TableName(value = "project_package_detail") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class ProjectPackageDetail extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="项目",name="projectType") + private Integer projectType; + + @io.swagger.annotations.ApiModelProperty(value="套餐ID",name="packageId") + private Long packageId; + + @io.swagger.annotations.ApiModelProperty(value="邀请用户加积分数量",name="inviteUserCredit") + private Integer inviteUserCredit; + + @io.swagger.annotations.ApiModelProperty(value="ai生成照片价格",name="aiPhotoPrice") + private Integer aiPhotoPrice; + + @io.swagger.annotations.ApiModelProperty(value="ai生成脚本价格",name="aiScriptPrice") + private Integer aiScriptPrice; + + @io.swagger.annotations.ApiModelProperty(value="生成视频价格",name="videoPrice") + private Integer videoPrice; + + @io.swagger.annotations.ApiModelProperty(value="是否有水印",name="isVideoWatermark") + private Integer isVideoWatermark; + + @io.swagger.annotations.ApiModelProperty(value="EnumLanguageType",name="language") + private Integer language; + @TableField(exist = false) + private String languageDesc; + public String getLanguageDesc(){ + if(this.language != null){ + EnumLanguageType languageEnum = EnumLanguageType.getEnum(language); + if(languageEnum != null){ + languageDesc = languageEnum.getMessage(); + } + } + return languageDesc; + } + + @io.swagger.annotations.ApiModelProperty(value="EnumSoundType",name="sound") + private Integer sound; + @TableField(exist = false) + private String soundDesc; + public String getSoundDesc(){ + if(this.sound != null){ + EnumSoundType soundEnum = EnumSoundType.getEnum(sound); + if(soundEnum != null){ + soundDesc = soundEnum.getMessage(); + } + } + return soundDesc; + } + + @io.swagger.annotations.ApiModelProperty(value="生成视频最大时长(s)",name="videoTime") + private Integer videoTime; + + @io.swagger.annotations.ApiModelProperty(value="可生成照片的次数",name="aiPhoto") + private Integer aiPhoto; + @io.swagger.annotations.ApiModelProperty(value="是否可唱歌",name="isSing") + private Integer isSing; + @io.swagger.annotations.ApiModelProperty(value="可生成脚本的次数",name="aiScript") + private Integer aiScript; + + @io.swagger.annotations.ApiModelProperty(value="EnumVideoFormatType",name="videoFormat") + private Integer videoFormat; + @TableField(exist = false) + private String videoFormatDesc; + public String getVideoFormatDesc(){ + if(this.videoFormat != null){ + EnumVideoFormatType videoFormatEnum = EnumVideoFormatType.getEnum(videoFormat); + if(videoFormatEnum != null){ + videoFormatDesc = videoFormatEnum.getMessage(); + } + } + return videoFormatDesc; + } + @io.swagger.annotations.ApiModelProperty(value="EnumAiTemplateType",name="template") + private Integer template; + @TableField(exist = false) + private String templateDesc; + public String getTemplateDesc(){ + if(this.template != null){ + EnumAiTemplateType templateEnum = EnumAiTemplateType.getEnum(template); + if(templateEnum != null){ + templateDesc = templateEnum.getMessage(); + } + } + return templateDesc; + } + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="",name="updateDate") + private Date updateDate; + + @TableField(exist = false) + private Date startDate; + + @TableField(exist = false) + private Date endDate; + +} diff --git a/suimangService/src/main/java/com/iformall/domain/po/UserLevelPackage.java b/suimangService/src/main/java/com/iformall/domain/po/UserLevelPackage.java new file mode 100644 index 0000000..f54e851 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/UserLevelPackage.java @@ -0,0 +1,52 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@TableName(value = "user_level_package") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class UserLevelPackage extends TenantEntity { + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="套餐ID",name="packageId") + private Long packageId; + @io.swagger.annotations.ApiModelProperty(value="套餐等级",name="packageLevel") + private Integer packageLevel; + @io.swagger.annotations.ApiModelProperty(value="套餐色",name="packageColor") + private String packageColor; + + @io.swagger.annotations.ApiModelProperty(value="用户总积分",name="userCredits") + private Integer userCredits; + + @io.swagger.annotations.ApiModelProperty(value="剩余积分",name="residueCredits") + private Integer residueCredits; + + @io.swagger.annotations.ApiModelProperty(value="到期时间",name="expiresDate") + private Date expiresDate; + + @io.swagger.annotations.ApiModelProperty(value="",name="createDate") + private Date createDate; + + @io.swagger.annotations.ApiModelProperty(value="",name="updateDate") + private Date updateDate; + + + @TableField(exist = false) + private Integer addCredits; + + @TableField(exist = false) + private Integer addSumCredits; + + @TableField(exist = false) + private Integer reduceCredits; + +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumAiTemplateType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumAiTemplateType.java new file mode 100644 index 0000000..23bd56b --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumAiTemplateType.java @@ -0,0 +1,34 @@ +package com.iformall.enums.sm; + +/** + * 数字人模板 + */ +public enum EnumAiTemplateType { + FREE(1, "免费"), + VIP(2, "VIP"); + + public static EnumAiTemplateType getEnum(Integer code) { + for (EnumAiTemplateType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumAiTemplateType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumTemplateType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumTemplateType.java new file mode 100644 index 0000000..cd99efe --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumTemplateType.java @@ -0,0 +1,34 @@ +package com.iformall.enums.sm; + +/** + * 数字人模板 + */ +public enum EnumTemplateType { + FREE(1, "免费"), + VIP(2, "VIP"); + + public static EnumTemplateType getEnum(Integer code) { + for (EnumTemplateType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumTemplateType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/suimangService/src/main/java/com/iformall/enums/sm/EnumVideoFormatType.java b/suimangService/src/main/java/com/iformall/enums/sm/EnumVideoFormatType.java new file mode 100644 index 0000000..e6cedaa --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/sm/EnumVideoFormatType.java @@ -0,0 +1,34 @@ +package com.iformall.enums.sm; + +/** + * 分辨率 + */ +public enum EnumVideoFormatType { + VIDEOFORMAT_720P(1, "720p"), + VIDEOFORMAT_1080P(2, "1080p"); + + public static EnumVideoFormatType getEnum(Integer code) { + for (EnumVideoFormatType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumVideoFormatType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/suimangService/src/main/java/com/iformall/mapper/LevelPackageMapper.java b/suimangService/src/main/java/com/iformall/mapper/LevelPackageMapper.java new file mode 100644 index 0000000..a24c496 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/LevelPackageMapper.java @@ -0,0 +1,12 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.LevelPackage; + +import java.util.List; + +public interface LevelPackageMapper extends CommonMapper{ + + List findList(LevelPackage record); + +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ProjectPackageDetailMapper.java b/suimangService/src/main/java/com/iformall/mapper/ProjectPackageDetailMapper.java new file mode 100644 index 0000000..9af411e --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/ProjectPackageDetailMapper.java @@ -0,0 +1,12 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.ProjectPackageDetail; + +import java.util.List; + +public interface ProjectPackageDetailMapper extends CommonMapper{ + + List findList(ProjectPackageDetail record); + +} diff --git a/suimangService/src/main/java/com/iformall/mapper/UserLevelPackageMapper.java b/suimangService/src/main/java/com/iformall/mapper/UserLevelPackageMapper.java new file mode 100644 index 0000000..b195b56 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/UserLevelPackageMapper.java @@ -0,0 +1,12 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.UserLevelPackage; + +import java.util.List; + +public interface UserLevelPackageMapper extends CommonMapper{ + + List findList(UserLevelPackage record); + +} diff --git a/suimangService/src/main/resources/mapper/LevelPackageMapper.xml b/suimangService/src/main/resources/mapper/LevelPackageMapper.xml new file mode 100644 index 0000000..da2bb15 --- /dev/null +++ b/suimangService/src/main/resources/mapper/LevelPackageMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`, + `level`,`name`,`en_name`,`color`, + `price_dollar`,`price_rmb`,`credit`,`validity_duration`, + `create_date`,`update_date` + + + + where is_del = 0 + and `id` = #{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + and `level` = #{level} + + and `name` like concat('%', #{name},'%') + + + and `en_name` like concat('%', #{enName},'%') + + + + and `create_date` >= #{startDate} + + + and `create_date` <= #{endDate} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + diff --git a/suimangService/src/main/resources/mapper/ProjectPackageDetailMapper.xml b/suimangService/src/main/resources/mapper/ProjectPackageDetailMapper.xml new file mode 100644 index 0000000..efc78a7 --- /dev/null +++ b/suimangService/src/main/resources/mapper/ProjectPackageDetailMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`project_type`,`package_id`, + `invite_user_credit`,`ai_photo_price`,`ai_script_price`,`video_price`, + `is_video_watermark`,`language`,`sound`, + `video_time`,`ai_photo`,`is_sing`,`ai_script`,`video_format`,`template`, + `create_date`,`update_date` + + + + where is_del = 0 + and `id` = #{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + and `project_type` = #{projectType} + + and `package_id` = #{packageId} + + + + and `create_date` >= #{startDate} + + + and `create_date` <= #{endDate} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + diff --git a/suimangService/src/main/resources/mapper/UserLevelPackageMapper.xml b/suimangService/src/main/resources/mapper/UserLevelPackageMapper.xml new file mode 100644 index 0000000..0ba9174 --- /dev/null +++ b/suimangService/src/main/resources/mapper/UserLevelPackageMapper.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`, + `package_id`,`package_level`,`package_color`, + `user_credits`,`residue_credits`, + `expires_date`, `create_date`, `update_date` + + + + where 1 = 1 + and `id` = #{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + and `package_id` = #{packageId} + and `package_level` = #{packageLevel} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + update user_level_package + set `update_date` = #{updateDate} + + ,`user_credits` = user_credits+#{addSumCredits} + + ,`residue_credits` = residue_credits+#{addCredits} + where id = #{id} + + + + update user_level_package + set `update_date` = #{updateDate} + ,`residue_credits` = residue_credits+#{reduceCredits} + where id = #{id} + and residue_credits+#{reduceCredits} >= 0 + + + From fb1e38fe4366579500f5c8d4ec8748196f8d8e19 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 26 Oct 2023 14:36:44 +0800 Subject: [PATCH 30/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0api?= =?UTF-8?q?=E6=96=87=E6=A1=A3a=E7=AB=AF=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sm/ApiMenuController.java | 17 ++++++ .../sm/ThirdPartyApiController.java | 11 ++++ .../com/iformall/common/CommonConstants.java | 7 +++ .../domain/dto/sm/SaveApiGuideDTO.java | 2 +- .../domain/dto/sm/SaveApiMenuDTO.java | 41 +++++++++++++++ .../domain/dto/sm/UpdateApiMenuDTO.java | 43 ++++++++++++++- .../com/iformall/domain/po/sm/ApiDetail.java | 9 +--- .../com/iformall/domain/vo/sm/ApiMenuVO.java | 48 +++++++++++++++++ .../com/iformall/mapper/ApiMenuMapper.java | 5 ++ .../service/WxThirdPartyApiService.java | 2 + .../impl/WxThirdPartyApiServiceImpl.java | 9 ++++ .../iformall/service/sm/ApiMenuService.java | 9 +++- .../service/sm/impl/ApiMenuServiceImpl.java | 44 +++++++++++++++- .../main/resources/mapper/ApiDetailMapper.xml | 4 +- .../main/resources/mapper/ApiMenuMapper.xml | 52 ++++++++++++++++--- .../mapper/WxThirdPartyApiMapper.xml | 2 +- 16 files changed, 281 insertions(+), 24 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/domain/vo/sm/ApiMenuVO.java diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java index 58bec26..00c32d1 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java @@ -1,9 +1,11 @@ package com.iformall.controller.sm; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.exception.BizException; import com.iformall.service.sm.ApiMenuService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,6 +26,15 @@ public class ApiMenuController { return new ResultData(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize)); } + @ApiOperation("单个查询api菜单") + @GetMapping("/get") + public ResultData getApiMenu(Long id) { + if (id == null) { + throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + return new ResultData(apiMenuService.getApiMenu(id)); + } + @ApiOperation("新增api菜单") @PostMapping("/save") public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) { @@ -37,4 +48,10 @@ public class ApiMenuController { apiMenuService.updateApiMenu(dto); return new ResultData(); } + + @ApiOperation("全查询父级api菜单") + @GetMapping("/listParentMenu") + public ResultData listParentMenu() { + return new ResultData(apiMenuService.listParentMenu()); + } } diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java index e6fbc0b..7f203ce 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java @@ -1,8 +1,10 @@ package com.iformall.controller.sm; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; +import com.iformall.exception.BizException; import com.iformall.service.WxThirdPartyApiService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -23,6 +25,15 @@ public class ThirdPartyApiController { return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize)); } + @ApiOperation("单个查询秘钥") + @GetMapping("/get") + public ResultData getThirdPartyApi(Long id) { + if (id == null) { + throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + return new ResultData(thirdPartyApiService.getThirdPartyApi(id)); + } + @ApiOperation("修改秘钥状态") @PostMapping("/updateStatus") public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) { diff --git a/suimangService/src/main/java/com/iformall/common/CommonConstants.java b/suimangService/src/main/java/com/iformall/common/CommonConstants.java index 13b67b0..81256ff 100644 --- a/suimangService/src/main/java/com/iformall/common/CommonConstants.java +++ b/suimangService/src/main/java/com/iformall/common/CommonConstants.java @@ -13,4 +13,11 @@ public interface CommonConstants { */ Integer FLAG_TRUE = 1; Integer FLAG_FALSE = 0; + + /** + * 通用数字 + */ + int NUM_0 = 0; + int NUM_1 = 1; + int NUM_2 = 2; } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java index 5e86ffa..03c13d5 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiGuideDTO.java @@ -12,7 +12,7 @@ import java.util.Date; @ApiModel(value = "新增API指南") @Data public class SaveApiGuideDTO { - @ApiModelProperty("api名称") + @ApiModelProperty("指南名称") private String name; @ApiModelProperty("指南内容") private String content; diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java index c4cb19e..7b80a0d 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/SaveApiMenuDTO.java @@ -2,6 +2,7 @@ package com.iformall.domain.dto.sm; import com.iformall.common.CommonConstants; import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiDetail; import com.iformall.domain.po.sm.ApiMenu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -18,6 +19,26 @@ public class SaveApiMenuDTO { private Long parentId; @ApiModelProperty("状态(0:正常,1:锁定)") private Integer status; + @ApiModelProperty("是否付费(0:否,1:是)") + private Integer chargeFlag; + @ApiModelProperty("是否需用户授权(0:否,1:是)") + private Integer authFlag; + @ApiModelProperty("接口描述") + private String description; + @ApiModelProperty("平台地址") + private String platformUrl; + @ApiModelProperty("系统参数") + private String publicParam; + @ApiModelProperty("请求参数") + private String requestParam; + @ApiModelProperty("响应参数") + private String responseParam; + @ApiModelProperty("请求示例") + private String requestSample; + @ApiModelProperty("响应示例") + private String responseSample; + @ApiModelProperty("异常示例") + private String exceptionSample; public static ApiMenu mapping(SaveApiMenuDTO dto) { ApiMenu apiMenu = new ApiMenu(); @@ -30,4 +51,24 @@ public class SaveApiMenuDTO { apiMenu.setDeleteFlag(CommonConstants.FLAG_FALSE); return apiMenu; } + + public static ApiDetail mappingApiDetail(SaveApiMenuDTO dto, ApiMenu apiMenu) { + ApiDetail apiDetail = new ApiDetail(); + apiDetail.setId(IdWorker.get().nextId()); + apiDetail.setCreateTime(new Date()); + apiDetail.setUpdateTime(new Date()); + apiDetail.setMenuId(apiMenu.getId()); + apiDetail.setMenuName(apiMenu.getName()); + apiDetail.setChargeFlag(dto.getChargeFlag()); + apiDetail.setAuthFlag(dto.getAuthFlag()); + apiDetail.setDescription(dto.getDescription()); + apiDetail.setPlatformUrl(dto.getPlatformUrl()); + apiDetail.setPublicParam(dto.getPublicParam()); + apiDetail.setRequestParam(dto.getRequestParam()); + apiDetail.setResponseParam(dto.getResponseParam()); + apiDetail.setRequestSample(dto.getRequestSample()); + apiDetail.setResponseSample(dto.getResponseSample()); + apiDetail.setExceptionSample(dto.getExceptionSample()); + return apiDetail; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java index d16354d..98903ae 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiMenuDTO.java @@ -2,6 +2,7 @@ package com.iformall.domain.dto.sm; import com.iformall.common.CommonConstants; import com.iformall.common.IdWorker; +import com.iformall.domain.po.sm.ApiDetail; import com.iformall.domain.po.sm.ApiMenu; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -12,14 +13,36 @@ import java.util.Date; @ApiModel(value = "修改API菜单") @Data public class UpdateApiMenuDTO { - @ApiModelProperty("id") + @ApiModelProperty(value = "菜单id",required = true) private Long id; + @ApiModelProperty(value = "详情id") + private Long detailId; @ApiModelProperty("菜单名称") private String name; @ApiModelProperty("父菜单id") private Long parentId; @ApiModelProperty("状态(0:正常,1:锁定)") private Integer status; + @ApiModelProperty("是否付费(0:否,1:是)") + private Integer chargeFlag; + @ApiModelProperty("是否需用户授权(0:否,1:是)") + private Integer authFlag; + @ApiModelProperty("接口描述") + private String description; + @ApiModelProperty("平台地址") + private String platformUrl; + @ApiModelProperty("系统参数") + private String publicParam; + @ApiModelProperty("请求参数") + private String requestParam; + @ApiModelProperty("响应参数") + private String responseParam; + @ApiModelProperty("请求示例") + private String requestSample; + @ApiModelProperty("响应示例") + private String responseSample; + @ApiModelProperty("异常示例") + private String exceptionSample; public static ApiMenu mapping(UpdateApiMenuDTO dto) { ApiMenu apiMenu = new ApiMenu(); @@ -30,4 +53,22 @@ public class UpdateApiMenuDTO { apiMenu.setStatus(dto.getStatus()); return apiMenu; } + + public static ApiDetail mappingApiDetail(UpdateApiMenuDTO dto) { + ApiDetail apiDetail = new ApiDetail(); + apiDetail.setUpdateTime(new Date()); + apiDetail.setMenuId(dto.getId()); + apiDetail.setMenuName(dto.getName()); + apiDetail.setChargeFlag(dto.getChargeFlag()); + apiDetail.setAuthFlag(dto.getAuthFlag()); + apiDetail.setDescription(dto.getDescription()); + apiDetail.setPlatformUrl(dto.getPlatformUrl()); + apiDetail.setPublicParam(dto.getPublicParam()); + apiDetail.setRequestParam(dto.getRequestParam()); + apiDetail.setResponseParam(dto.getResponseParam()); + apiDetail.setRequestSample(dto.getRequestSample()); + apiDetail.setResponseSample(dto.getResponseSample()); + apiDetail.setExceptionSample(dto.getExceptionSample()); + return apiDetail; + } } diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java index 1707d82..0bbf7ba 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/ApiDetail.java @@ -44,12 +44,12 @@ public class ApiDetail implements Serializable { /** * 是否付费(0:否,1:是) */ - private Byte chargeFlag; + private Integer chargeFlag; /** * 是否需用户授权(0:否,1:是) */ - private Byte authFlag; + private Integer authFlag; /** * 描述 @@ -91,11 +91,6 @@ public class ApiDetail implements Serializable { */ private String exceptionSample; - /** - * 状态(0:正常,1:锁定) - */ - private Byte status; - @TableField(exist = false) private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/vo/sm/ApiMenuVO.java b/suimangService/src/main/java/com/iformall/domain/vo/sm/ApiMenuVO.java new file mode 100644 index 0000000..b01ff0c --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/vo/sm/ApiMenuVO.java @@ -0,0 +1,48 @@ +package com.iformall.domain.vo.sm; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@ApiModel(value = "查询API菜单响应数据") +@Data +public class ApiMenuVO { + @ApiModelProperty("菜单id") + private Long id; + @ApiModelProperty("创建时间") + private Date createTime; + @ApiModelProperty("修改时间") + private Date updateTime; + @ApiModelProperty("是否叶子节点(0:否,1:是)") + private Integer leafFlag; + @ApiModelProperty("菜单名称") + private String name; + @ApiModelProperty("父菜单id") + private Long parentId; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + @ApiModelProperty("详情id") + private Long detailId; + @ApiModelProperty("是否付费(0:否,1:是)") + private Integer chargeFlag; + @ApiModelProperty("是否需用户授权(0:否,1:是)") + private Integer authFlag; + @ApiModelProperty("接口描述") + private String description; + @ApiModelProperty("平台地址") + private String platformUrl; + @ApiModelProperty("系统参数") + private String publicParam; + @ApiModelProperty("请求参数") + private String requestParam; + @ApiModelProperty("响应参数") + private String responseParam; + @ApiModelProperty("请求示例") + private String requestSample; + @ApiModelProperty("响应示例") + private String responseSample; + @ApiModelProperty("异常示例") + private String exceptionSample; +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java index 1a95553..c5edbf4 100644 --- a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java @@ -2,6 +2,7 @@ package com.iformall.mapper; import com.iformall.domain.po.sm.ApiMenu; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.vo.sm.ApiMenuVO; import java.util.List; @@ -11,6 +12,10 @@ import java.util.List; public interface ApiMenuMapper extends BaseMapper { List listApiMenu(ApiMenu apiMenu); + + List listParentMenu(); + + List listApiMenuAndDetail(ApiMenu apiMenu); } diff --git a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java index e80a8a3..f5b1443 100644 --- a/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java +++ b/suimangService/src/main/java/com/iformall/service/WxThirdPartyApiService.java @@ -44,4 +44,6 @@ public interface WxThirdPartyApiService { * @param dto */ void updateThirdPartyApiStatus(UpdateThirdPartyApiStatusDTO dto); + + WxThirdPartyApi getThirdPartyApi(Long id); } diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java index d3d26ad..01c39a2 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxThirdPartyApiServiceImpl.java @@ -19,6 +19,7 @@ import com.iformall.service.WxThirdPartyApiService; import com.iformall.utils.Constant; import com.iformall.utils.RedisCacheUtils; import com.iformall.utils.sign.AppUtils; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -94,6 +95,14 @@ public class WxThirdPartyApiServiceImpl implements WxThirdPartyApiService { .eq(WxThirdPartyApi::getId, dto.getId())); } + @Override + public WxThirdPartyApi getThirdPartyApi(Long id) { + WxThirdPartyApi thirdPartyApi = new WxThirdPartyApi(); + thirdPartyApi.setId(id); + List vos = wxThirdPartyApiMapper.listThirdPartyApi(thirdPartyApi); + return !CollectionUtils.isEmpty(vos) ? vos.get(0) : null; + } + /** * 构建秘钥实体 * diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java index efc12ff..aa050b7 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java @@ -5,15 +5,22 @@ import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; import com.baomidou.mybatisplus.extension.service.IService; +import com.iformall.domain.vo.sm.ApiMenuVO; + +import java.util.List; /** * */ public interface ApiMenuService extends IService { - PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize); + PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize); void saveApiMenu(SaveApiMenuDTO dto); void updateApiMenu(UpdateApiMenuDTO dto); + + List listParentMenu(); + + ApiMenuVO getApiMenu(Long id); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java index ff066a6..be7663e 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java @@ -1,15 +1,24 @@ package com.iformall.service.sm.impl; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.CommonConstants; import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; +import com.iformall.domain.po.sm.ApiDetail; import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.domain.vo.sm.ApiMenuVO; +import com.iformall.mapper.ApiDetailMapper; import com.iformall.service.sm.ApiMenuService; import com.iformall.mapper.ApiMenuMapper; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** * @@ -19,22 +28,53 @@ public class ApiMenuServiceImpl extends ServiceImpl impl @Autowired private ApiMenuMapper apiMenuMapper; + @Autowired + private ApiDetailMapper apiDetailMapper; + + @Override + public PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize) { + return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> apiMenuMapper.listApiMenuAndDetail(apiMenu)); + } @Override - public PageInfo pageApiMenu(ApiMenu apiMenu, Integer pageNum, Integer pageSize) { - return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> apiMenuMapper.listApiMenu(apiMenu)); + public ApiMenuVO getApiMenu(Long id) { + ApiMenu apiMenu = new ApiMenu(); + apiMenu.setId(id); + List vos = apiMenuMapper.listApiMenuAndDetail(apiMenu); + return !CollectionUtils.isEmpty(vos) ? vos.get(0) : null; } + @Transactional(rollbackFor = Exception.class) @Override public void saveApiMenu(SaveApiMenuDTO dto) { + // 保存菜单信息 ApiMenu apiMenu = SaveApiMenuDTO.mapping(dto); apiMenuMapper.insert(apiMenu); + + if (CommonConstants.NUM_0 != dto.getParentId()) { + // 保存菜单详情信息 + ApiDetail apiDetail = SaveApiMenuDTO.mappingApiDetail(dto, apiMenu); + apiDetailMapper.insert(apiDetail); + } } + @Transactional(rollbackFor = Exception.class) @Override public void updateApiMenu(UpdateApiMenuDTO dto) { + // 修改菜单信息 ApiMenu apiMenu = UpdateApiMenuDTO.mapping(dto); apiMenuMapper.updateById(apiMenu); + + if (CommonConstants.NUM_0 != dto.getParentId()) { + // 修改菜单详情信息 + ApiDetail apiDetail = UpdateApiMenuDTO.mappingApiDetail(dto); + apiDetailMapper.update(apiDetail, new LambdaUpdateWrapper().eq(ApiDetail::getMenuId, dto.getId())); + } + } + + @Override + public List listParentMenu() { + return apiMenuMapper.listParentMenu(); } } diff --git a/suimangService/src/main/resources/mapper/ApiDetailMapper.xml b/suimangService/src/main/resources/mapper/ApiDetailMapper.xml index 982f85e..0640ff1 100644 --- a/suimangService/src/main/resources/mapper/ApiDetailMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiDetailMapper.xml @@ -20,7 +20,6 @@ - @@ -28,7 +27,6 @@ menu_id,menu_name,charge_flag, auth_flag,description,platform_url, public_param,request_param,response_param, - request_sample,response_sample,exception_sample, - status + request_sample,response_sample,exception_sample diff --git a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml index a3810cf..471a148 100644 --- a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml @@ -16,31 +16,67 @@ - id,create_time,update_time, - name,parent_id,status, - leaf_flag,delete_flag + m.id,m.create_time,m.update_time, + m.name,m.parent_id,m.status, + m.leaf_flag,m.delete_flag WHERE 1 = 1 + AND m.delete_flag = 0 - and `id` = #{id} + AND m.`id` = #{id} - and `parent_id` = #{parentId} + AND m.`parent_id` = #{parentId} - and `name` = #{name} + AND m.`name` = #{name} - and `status = #{status} + AND m.`status = #{status} + + + diff --git a/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml b/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml index e8cb59f..7198a8a 100644 --- a/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml +++ b/suimangService/src/main/resources/mapper/WxThirdPartyApiMapper.xml @@ -91,6 +91,6 @@ SELECT FROM wx_third_party_api - + From 753f61f65097b7b9efbadc46812728aeaaae0216 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 26 Oct 2023 14:46:35 +0800 Subject: [PATCH 31/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0api?= =?UTF-8?q?=E6=8C=87=E5=8D=97=E7=9B=B8=E5=85=B3a=E7=AB=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java | 1 + 1 file changed, 1 insertion(+) diff --git a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java index ca80d9a..74e98e2 100644 --- a/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java +++ b/suimangService/src/main/java/com/iformall/domain/dto/sm/UpdateApiGuideDTO.java @@ -23,6 +23,7 @@ public class UpdateApiGuideDTO { public static ApiGuide mapping(UpdateApiGuideDTO dto) { ApiGuide apiGuide = new ApiGuide(); + apiGuide.setId(dto.getId()); apiGuide.setUpdateTime(new Date()); if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus())) { apiGuide.setReleaseTime(new Date()); From b61cacbfd620a8c53daef6cf6ef4a036f1c6e035 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 26 Oct 2023 15:44:05 +0800 Subject: [PATCH 32/40] //bug --- .../controller/WxUserGrantController.java | 71 +++++++++++++------ 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 1c8e580..c319b3e 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -3,6 +3,7 @@ package com.iformall.controller; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Producer; import com.iformall.annotation.AuthIgnore; import com.iformall.annotation.TenantIgnore; @@ -42,6 +43,7 @@ import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Date; @@ -115,7 +117,7 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @ApiOperation("验证码") @GetMapping("/captcha.jpg") - public void captcha(HttpServletResponse response) { + public void captcha(HttpServletResponse response, HttpSession session) { logger.debug("[" + getIpAddr() + "] WxUserGrantController::captcha"); response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); @@ -126,9 +128,11 @@ public class WxUserGrantController extends BaseController { BufferedImage image = producer.createImage(text); //保存到redis - String ipAddr = getIpAddr(); - String key = Constant.captchaPrev + ":" + ipAddr; - RedisCacheUtils.cache(redisTemplate, key, text, 60); +// String ipAddr = getIpAddr(); +// String key = Constant.captchaPrev + ":" + ipAddr; +// RedisCacheUtils.cache(redisTemplate, key, text, 60); + + session.setAttribute(Constants.KAPTCHA_SESSION_KEY, text); ServletOutputStream out = null; try { @@ -152,7 +156,7 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @PostMapping("/login") @ApiOperation(value = "用户登录", notes = "{\"phone\":\"string\",\"password\":\"string\",\"code\":\"string\"}") - public ResultData loginByPhone(@RequestBody Map map) { + public ResultData loginByPhone(@RequestBody Map map, HttpSession session) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::loginByPhone"); String code = map.get("code"); @@ -160,8 +164,18 @@ public class WxUserGrantController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } - String key = Constant.captchaPrev + ":" + ipAddr; - String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); + Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); + if(kaptcha == null){ + return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); + } + session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); + if(!kaptcha.toString().equals(code)){ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); + } + + +// String key = Constant.captchaPrev + ":" + ipAddr; +// String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); // if (StringUtils.isBlank(code1)) { // return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); // } @@ -205,23 +219,31 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @PostMapping("/loginByEmail") @ApiOperation(value = "用户登录", notes = "{\"email\":\"string\",\"password\":\"string\",\"code\":\"string\"}") - public ResultData loginByEmail(@RequestBody Map map) { + public ResultData loginByEmail(@RequestBody Map map, HttpSession session) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::loginByEmail"); String code = map.get("code"); if (StringUtils.isBlank(code)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } - - String key = Constant.captchaPrev + ":" + ipAddr; - String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); - if (StringUtils.isBlank(code1)) { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); + Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); + if(kaptcha == null){ + return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); } - if (!code1.equals(code)) { + session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); + if(!kaptcha.toString().equals(code)){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); } +// String key = Constant.captchaPrev + ":" + ipAddr; +// String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); +// if (StringUtils.isBlank(code1)) { +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); +// } +// if (!code1.equals(code)) { +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); +// } + String email = map.get("email"); String password = map.get("password"); if (StringUtils.isBlank(email) || StringUtils.isBlank(password)) { @@ -337,7 +359,7 @@ public class WxUserGrantController extends BaseController { @GetMapping("sendPhoneCode") @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true)}) - public ResultData sendPhoneCode(String phone, String code) { + public ResultData sendPhoneCode(String phone, String code, HttpSession session) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::sendPhoneCode"); if (StringUtils.isBlank(phone)) { @@ -347,14 +369,23 @@ public class WxUserGrantController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } - String key = Constant.captchaPrev + ":" + ipAddr; - String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); - if (StringUtils.isBlank(code1)) { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); + Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); + if(kaptcha == null){ + return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); } - if (!code1.equals(code)) { + session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); + if(!kaptcha.toString().equals(code)){ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); } + +// String key = Constant.captchaPrev + ":" + ipAddr; +// String code1 = RedisCacheUtils.getCacheString(redisTemplate, key); +// if (StringUtils.isBlank(code1)) { +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期"); +// } +// if (!code1.equals(code)) { +// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确"); +// } WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); if (basicInfo == null) { return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), "该手机号未注册"); From ec108e34ec7327327cf995468595519f473f4783 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 26 Oct 2023 15:53:25 +0800 Subject: [PATCH 33/40] //bug --- .../java/com/iformall/controller/WxUserGrantController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index c319b3e..f8b8650 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -166,7 +166,7 @@ public class WxUserGrantController extends BaseController { Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ - return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); + return new ResultData(ErrorCode.KAPCHA_NOT_VALID); } session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); if(!kaptcha.toString().equals(code)){ @@ -228,7 +228,7 @@ public class WxUserGrantController extends BaseController { } Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ - return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); + return new ResultData(ErrorCode.KAPCHA_NOT_VALID); } session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); if(!kaptcha.toString().equals(code)){ @@ -371,7 +371,7 @@ public class WxUserGrantController extends BaseController { Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ - return new ResultData(ErrorCode.KAPCHA_NOT_VALID.getCode()); + return new ResultData(ErrorCode.KAPCHA_NOT_VALID); } session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); if(!kaptcha.toString().equals(code)){ From d2ca97d7a1f78fd6578e24a30b48f5eca0835906 Mon Sep 17 00:00:00 2001 From: xhxu Date: Thu, 26 Oct 2023 16:03:35 +0800 Subject: [PATCH 34/40] //bug --- .../iformall/controller/WxUserGrantController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index f8b8650..b277497 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -117,7 +117,7 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @ApiOperation("验证码") @GetMapping("/captcha.jpg") - public void captcha(HttpServletResponse response, HttpSession session) { + public void captcha(HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] WxUserGrantController::captcha"); response.setHeader("Cache-Control", "no-store, no-cache"); response.setContentType("image/jpeg"); @@ -131,7 +131,7 @@ public class WxUserGrantController extends BaseController { // String ipAddr = getIpAddr(); // String key = Constant.captchaPrev + ":" + ipAddr; // RedisCacheUtils.cache(redisTemplate, key, text, 60); - + HttpSession session = request.getSession(); session.setAttribute(Constants.KAPTCHA_SESSION_KEY, text); ServletOutputStream out = null; @@ -156,7 +156,7 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @PostMapping("/login") @ApiOperation(value = "用户登录", notes = "{\"phone\":\"string\",\"password\":\"string\",\"code\":\"string\"}") - public ResultData loginByPhone(@RequestBody Map map, HttpSession session) { + public ResultData loginByPhone(@RequestBody Map map, HttpServletRequest request) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::loginByPhone"); String code = map.get("code"); @@ -164,6 +164,7 @@ public class WxUserGrantController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } + HttpSession session = request.getSession(); Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ return new ResultData(ErrorCode.KAPCHA_NOT_VALID); @@ -219,13 +220,14 @@ public class WxUserGrantController extends BaseController { @AuthIgnore @PostMapping("/loginByEmail") @ApiOperation(value = "用户登录", notes = "{\"email\":\"string\",\"password\":\"string\",\"code\":\"string\"}") - public ResultData loginByEmail(@RequestBody Map map, HttpSession session) { + public ResultData loginByEmail(@RequestBody Map map, HttpServletRequest request) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::loginByEmail"); String code = map.get("code"); if (StringUtils.isBlank(code)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } + HttpSession session = request.getSession(); Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ return new ResultData(ErrorCode.KAPCHA_NOT_VALID); @@ -359,7 +361,7 @@ public class WxUserGrantController extends BaseController { @GetMapping("sendPhoneCode") @ApiImplicitParams({ @ApiImplicitParam(name = "phone", value = "手机号", dataType = "String", paramType = "query", required = true)}) - public ResultData sendPhoneCode(String phone, String code, HttpSession session) { + public ResultData sendPhoneCode(String phone, String code, HttpServletRequest request) { String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::sendPhoneCode"); if (StringUtils.isBlank(phone)) { @@ -368,7 +370,7 @@ public class WxUserGrantController extends BaseController { if (StringUtils.isBlank(code)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); } - + HttpSession session = request.getSession(); Object kaptcha = session.getAttribute(Constants.KAPTCHA_SESSION_KEY); if(kaptcha == null){ return new ResultData(ErrorCode.KAPCHA_NOT_VALID); From d2302603224a13c888b8aed73e3b4a4c92631106 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 26 Oct 2023 16:14:59 +0800 Subject: [PATCH 35/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0api?= =?UTF-8?q?=E6=8C=87=E5=8D=97=E7=9B=B8=E5=85=B3c=E7=AB=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sm/ApiDetailController.java | 26 ---------- .../controller/sm/ApiGuideController.java | 6 +-- .../controller/ApiGuideController.java | 27 +++++++++++ .../controller/ApiMenuController.java | 47 +++++++++++++++++++ .../interceptor/AuthorizationInterceptor.java | 2 +- .../java/com/iformall/common/ErrorCode.java | 3 ++ .../domain/vo/sm/ListApiSubmenuVO.java | 27 +++++++++++ .../com/iformall/mapper/ApiMenuMapper.java | 3 ++ .../iformall/service/sm/ApiMenuService.java | 5 ++ .../service/sm/impl/ApiGuideServiceImpl.java | 44 +++++++++++++++++ .../service/sm/impl/ApiMenuServiceImpl.java | 11 +++++ .../main/resources/mapper/ApiGuideMapper.xml | 2 +- .../main/resources/mapper/ApiMenuMapper.xml | 9 ++++ 13 files changed, 181 insertions(+), 31 deletions(-) delete mode 100644 suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java create mode 100644 suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java create mode 100644 suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java create mode 100644 suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java deleted file mode 100644 index 21b0d1f..0000000 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiDetailController.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.iformall.controller.sm; - -import com.iformall.common.ResultData; -import com.iformall.domain.dto.sm.SaveApiMenuDTO; -import com.iformall.domain.po.sm.ApiDetail; -import com.iformall.service.sm.ApiDetailService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/apiDetail") -@Api(tags = "api菜单详情接口") -public class ApiDetailController { - - @Autowired - private ApiDetailService apiDetailService; - - @ApiOperation("查询单个api菜单详情") - @GetMapping("/get") - public ResultData getApiDetail(Long id) { - ApiDetail apiDetail = apiDetailService.getApiDetail(id); - return new ResultData(apiDetail); - } -} diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java index ac1b4ab..9647b92 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java @@ -18,20 +18,20 @@ public class ApiGuideController { @Autowired private ApiGuideService apiGuideService; - @ApiOperation("分页查询api菜单") + @ApiOperation("分页查询api指南") @GetMapping("/page") public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); } - @ApiOperation("新增api菜单") + @ApiOperation("新增api指南") @PostMapping("/save") public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { apiGuideService.saveApiGuide(dto); return new ResultData(); } - @ApiOperation("修改api菜单") + @ApiOperation("修改api指南") @PostMapping("/update") public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { apiGuideService.updateApiGuide(dto); diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java new file mode 100644 index 0000000..f82a9e6 --- /dev/null +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java @@ -0,0 +1,27 @@ +package com.iformall.controller; + +import com.iformall.annotation.AuthIgnore; +import com.iformall.common.ResultData; +import com.iformall.service.sm.ApiGuideService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/apiGuide") +@Api(tags = "api指南接口") +public class ApiGuideController { + + @Autowired + private ApiGuideService apiGuideService; + + @AuthIgnore + @ApiOperation("单个查询api指南") + @GetMapping("/getAvailableApiGuide") + public ResultData getAvailableApiGuide() { + return new ResultData(apiGuideService.getAvailableApiGuide()); + } +} diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java new file mode 100644 index 0000000..0c221fe --- /dev/null +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java @@ -0,0 +1,47 @@ +package com.iformall.controller; + +import com.iformall.annotation.AuthIgnore; +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.exception.BizException; +import com.iformall.service.sm.ApiMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/apiMenu") +@Api(tags = "api菜单接口") +public class ApiMenuController { + + @Autowired + private ApiMenuService apiMenuService; + + @AuthIgnore + @ApiOperation("全查询api菜单") + @GetMapping("/list") + public ResultData listApiMenu() { + return new ResultData(apiMenuService.listMenu()); + } + + @AuthIgnore + @ApiOperation("查询某个api菜单所有子菜单") + @GetMapping("/listSubmenu") + public ResultData listApiSubmenu(Long id) { + if (id == null) { + throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + return new ResultData(apiMenuService.listApiSubmenu(id)); + } + + @AuthIgnore + @ApiOperation("单个查询菜单详情") + @GetMapping("/get") + public ResultData getApiMenu(Long id) { + if (id == null) { + throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); + } + return new ResultData(apiMenuService.getApiMenu(id)); + } +} diff --git a/suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index e9f4182..c8a3a83 100644 --- a/suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/suimangCApi/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -44,7 +44,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - + AuthIgnore annotation; if(handler instanceof HandlerMethod) { annotation = ((HandlerMethod) handler).getMethodAnnotation(AuthIgnore.class); diff --git a/suimangService/src/main/java/com/iformall/common/ErrorCode.java b/suimangService/src/main/java/com/iformall/common/ErrorCode.java index 90fc767..34c2452 100644 --- a/suimangService/src/main/java/com/iformall/common/ErrorCode.java +++ b/suimangService/src/main/java/com/iformall/common/ErrorCode.java @@ -681,6 +681,9 @@ public enum ErrorCode{ SECRET_NOT_EXISTS(71001, "该秘钥不存在"), SERVICE_LOCKED(71002, "合作商被锁定,无法修改"), + + NAME_REPEAT(81000, "名称重复"), + EXIST_AVAILABLE_GUIDE(81001, "存在可用指南"), ; private int code; diff --git a/suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java b/suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java new file mode 100644 index 0000000..6d1cf16 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/vo/sm/ListApiSubmenuVO.java @@ -0,0 +1,27 @@ +package com.iformall.domain.vo.sm; + +import com.iformall.domain.po.sm.ApiDetail; +import com.iformall.domain.po.sm.ApiMenu; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@ApiModel(value = "查询某个api菜单所有子菜单相应数据") +@Data +public class ListApiSubmenuVO { + @ApiModelProperty("菜单id") + private Long id; + @ApiModelProperty("修改时间") + private Date updateTime; + @ApiModelProperty("菜单名称") + private String name; + @ApiModelProperty("状态(0:正常,1:锁定)") + private Integer status; + @ApiModelProperty("详情id") + private Long detailId; + @ApiModelProperty("接口描述") + private String description; +} diff --git a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java index c5edbf4..5745665 100644 --- a/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java +++ b/suimangService/src/main/java/com/iformall/mapper/ApiMenuMapper.java @@ -3,6 +3,7 @@ package com.iformall.mapper; import com.iformall.domain.po.sm.ApiMenu; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.iformall.domain.vo.sm.ApiMenuVO; +import com.iformall.domain.vo.sm.ListApiSubmenuVO; import java.util.List; @@ -16,6 +17,8 @@ public interface ApiMenuMapper extends BaseMapper { List listParentMenu(); List listApiMenuAndDetail(ApiMenu apiMenu); + + List listSubmenu(Long id); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java index aa050b7..35b4f06 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiMenuService.java @@ -6,6 +6,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; import com.baomidou.mybatisplus.extension.service.IService; import com.iformall.domain.vo.sm.ApiMenuVO; +import com.iformall.domain.vo.sm.ListApiSubmenuVO; import java.util.List; @@ -23,4 +24,8 @@ public interface ApiMenuService extends IService { List listParentMenu(); ApiMenuVO getApiMenu(Long id); + + List listMenu(); + + List listApiSubmenu(Long id); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java index b008973..8a6f85f 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiGuideServiceImpl.java @@ -1,16 +1,23 @@ package com.iformall.service.sm.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.CommonConstants; +import com.iformall.common.ErrorCode; import com.iformall.domain.dto.sm.SaveApiGuideDTO; import com.iformall.domain.dto.sm.UpdateApiGuideDTO; import com.iformall.domain.po.sm.ApiGuide; +import com.iformall.exception.BizException; import com.iformall.service.sm.ApiGuideService; import com.iformall.mapper.ApiGuideMapper; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * */ @@ -27,15 +34,52 @@ public class ApiGuideServiceImpl extends ServiceImpl i @Override public void saveApiGuide(SaveApiGuideDTO dto) { + ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper().eq(ApiGuide::getName, dto.getName())); + if (dbApiGuide != null) { + throw new BizException(ErrorCode.NAME_REPEAT); + } + + // 暂时处理,存在正常的指南,则不可新增新的正常指南 + List apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper() + .eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL) + .eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE)); + if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) { + throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE); + } + ApiGuide apiGuide = SaveApiGuideDTO.mapping(dto); apiGuideMapper.insert(apiGuide); } @Override public void updateApiGuide(UpdateApiGuideDTO dto) { + ApiGuide dbApiGuide = apiGuideMapper.selectOne(new LambdaQueryWrapper() + .eq(ApiGuide::getName, dto.getName()) + .ne(ApiGuide::getId, dto.getId())); + if (dbApiGuide != null) { + throw new BizException(ErrorCode.NAME_REPEAT); + } + + // 暂时处理,存在正常的指南,则不可修改新的正常指南 + List apiGuides = apiGuideMapper.selectList(new LambdaQueryWrapper() + .eq(ApiGuide::getStatus, CommonConstants.STATUS_NORMAL) + .eq(ApiGuide::getDeleteFlag, CommonConstants.FLAG_FALSE) + .ne(ApiGuide::getId, dto.getId())); + if (CommonConstants.STATUS_NORMAL.equals(dto.getStatus()) && !CollectionUtils.isEmpty(apiGuides)) { + throw new BizException(ErrorCode.EXIST_AVAILABLE_GUIDE); + } + ApiGuide apiGuide = UpdateApiGuideDTO.mapping(dto); apiGuideMapper.updateById(apiGuide); } + + @Override + public ApiGuide getAvailableApiGuide() { + ApiGuide apiGuide = new ApiGuide(); + apiGuide.setStatus(CommonConstants.STATUS_NORMAL); + List apiGuides = apiGuideMapper.listApiGuide(apiGuide); + return !CollectionUtils.isEmpty(apiGuides) ? apiGuides.get(0) : null; + } } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java index be7663e..94be98c 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/ApiMenuServiceImpl.java @@ -10,6 +10,7 @@ import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiDetail; import com.iformall.domain.po.sm.ApiMenu; import com.iformall.domain.vo.sm.ApiMenuVO; +import com.iformall.domain.vo.sm.ListApiSubmenuVO; import com.iformall.mapper.ApiDetailMapper; import com.iformall.service.sm.ApiMenuService; import com.iformall.mapper.ApiMenuMapper; @@ -76,6 +77,16 @@ public class ApiMenuServiceImpl extends ServiceImpl impl public List listParentMenu() { return apiMenuMapper.listParentMenu(); } + + @Override + public List listMenu() { + return apiMenuMapper.listApiMenu(null); + } + + @Override + public List listApiSubmenu(Long id) { + return apiMenuMapper.listSubmenu(id); + } } diff --git a/suimangService/src/main/resources/mapper/ApiGuideMapper.xml b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml index b583099..dda42cf 100644 --- a/suimangService/src/main/resources/mapper/ApiGuideMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiGuideMapper.xml @@ -30,7 +30,7 @@ and `name` = #{name} - and `status = #{status} + and `status` = #{status} diff --git a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml index 471a148..ae2556b 100644 --- a/suimangService/src/main/resources/mapper/ApiMenuMapper.xml +++ b/suimangService/src/main/resources/mapper/ApiMenuMapper.xml @@ -79,4 +79,13 @@ LEFT JOIN api_detail d ON m.id = d.menu_id + From 24e88c5a8e91e139d92a6d48beefef84684db263 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 26 Oct 2023 17:29:57 +0800 Subject: [PATCH 36/40] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0swagger?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 31 ++--- suimang-swagger/pom.xml | 28 ++++ .../com/iformall/annotation/ApiVersion.java | 19 +++ .../annotation/BaseEnableSwagger.java | 14 ++ .../iformall/config/SwaggerConfiguration.java | 94 +++++++++++++ .../iformall/config/SwaggerProperties.java | 123 ++++++++++++++++++ .../iformall/constant/SwaggerConstant.java | 8 ++ suimang.iml | 19 +-- .../java/com/iformall/AdminApplication.java | 3 +- .../java/com/iformall/config/ShiroConfig.java | 1 + .../com/iformall/config/Swagger2Config.java | 122 ++++++++--------- .../java/com/iformall/config/WebConfig.java | 4 +- .../controller/sm/ApiGuideController.java | 5 + .../controller/sm/ApiMenuController.java | 7 + .../controller/sm/ServiceInfoController.java | 6 + .../sm/ThirdPartyApiController.java | 5 + .../controller/sys/HomeController.java | 4 + .../controller/sys/MallRoleController.java | 6 +- .../sys/MallUserInfoController.java | 8 ++ .../controller/sys/SysMenuController.java | 3 + .../src/main/resources/application-dev.yml | 16 ++- .../main/java/com/iformall/CApplication.java | 2 + .../com/iformall/config/Swagger2Config.java | 122 ++++++++--------- .../com/iformall/config/WebMvcConfig.java | 4 +- .../controller/ApiGuideController.java | 3 + .../controller/ApiMenuController.java | 5 + .../src/main/resources/application-dev.yml | 14 ++ suimangService/pom.xml | 5 + .../iformall/service/sm/ApiGuideService.java | 2 + 29 files changed, 525 insertions(+), 158 deletions(-) create mode 100644 suimang-swagger/pom.xml create mode 100644 suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java create mode 100644 suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java create mode 100644 suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java create mode 100644 suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java create mode 100644 suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java diff --git a/pom.xml b/pom.xml index 88f570e..a6615de 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,7 @@ suimangSchedule suimangMQConsumer open-api + suimang-swagger @@ -186,21 +187,21 @@ - - io.springfox - springfox-swagger2 - 2.8.0 - - - io.springfox - springfox-swagger-ui - 2.8.0 - - - io.springfox - springfox-spring-web - 2.8.0 - + + + + + + + + + + + + + + + com.fasterxml.jackson.core jackson-core diff --git a/suimang-swagger/pom.xml b/suimang-swagger/pom.xml new file mode 100644 index 0000000..b4352b0 --- /dev/null +++ b/suimang-swagger/pom.xml @@ -0,0 +1,28 @@ + + + + suimang + com.iformall + 1.0 + + 4.0.0 + + suimang-swagger + + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + com.github.xiaoymin + swagger-bootstrap-ui + 1.9.3 + + + \ No newline at end of file diff --git a/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java b/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java new file mode 100644 index 0000000..d9ceb4e --- /dev/null +++ b/suimang-swagger/src/main/java/com/iformall/annotation/ApiVersion.java @@ -0,0 +1,19 @@ +package com.iformall.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ApiVersion { + + /** + * 接口版本号(对应swagger中的group) + * + * @return String[] + */ + String[] group(); +} diff --git a/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java b/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java new file mode 100644 index 0000000..fb78b80 --- /dev/null +++ b/suimang-swagger/src/main/java/com/iformall/annotation/BaseEnableSwagger.java @@ -0,0 +1,14 @@ +package com.iformall.annotation; + +import com.iformall.config.SwaggerConfiguration; +import org.springframework.context.annotation.Import; + +import java.lang.annotation.*; + +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Inherited +@Import({SwaggerConfiguration.class}) +public @interface BaseEnableSwagger { +} diff --git a/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java new file mode 100644 index 0000000..f8b7214 --- /dev/null +++ b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java @@ -0,0 +1,94 @@ +package com.iformall.config; + +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; +import com.iformall.annotation.ApiVersion; +import com.iformall.constant.SwaggerConstant; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import javax.servlet.ServletContext; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Configuration +@EnableSwagger2 +@EnableAutoConfiguration +@EnableConfigurationProperties(SwaggerProperties.class) +@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true) +public class SwaggerConfiguration { + + private static final List DEFAULT_EXCLUDE_PATH = Arrays.asList("/error"); + private static final String BASE_PATH = "/**"; + + @Autowired + private SwaggerProperties swaggerProperties; + + /** + * 1、分组 + * 2、切换分组,修改访问/v2/api-docs/ 接口的路径 + * https://admintest.malls.iformall.com/v2/api-docs/ + * https://admintest.malls.iformall.com/B/v2/api-docs/ + * + * @param servletContext + * @return {@link Docket} + */ + @Bean + public Docket api(ServletContext servletContext) { + // base-path处理 + if (swaggerProperties.getBasePath().isEmpty()) { + swaggerProperties.getBasePath().add(BASE_PATH); + } + List> basePath = new ArrayList<>(swaggerProperties.getBasePath().size()); + swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path))); + + // exclude-path处理 + if (swaggerProperties.getExcludePath().isEmpty()) { + swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH); + } + List> excludePath = new ArrayList<>(); + swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path))); + + return new Docket(DocumentationType.SWAGGER_2) + .host(swaggerProperties.getHost()) + .apiInfo(apiInfo(swaggerProperties)).select() + .apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage())) + .apis(input -> { + ApiVersion apiVersion = input.getHandlerMethod().getMethodAnnotation(ApiVersion.class); + return apiVersion != null && Arrays.asList(apiVersion.group()).contains(SwaggerConstant.V_1_0_0); + }) + .paths( + Predicates.and( + Predicates.not(Predicates.or(excludePath)), + Predicates.or(basePath) + ) + ) + .build(); + } + + private ApiInfo apiInfo(SwaggerProperties swaggerProperties) { + return new ApiInfoBuilder() + .title(swaggerProperties.getTitle()) + .description(swaggerProperties.getDescription()) + .license(swaggerProperties.getLicense()) + .licenseUrl(swaggerProperties.getLicenseUrl()) + .termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl()) + .contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail())) + .version(swaggerProperties.getVersion()) + .build(); + } +} + diff --git a/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java b/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java new file mode 100644 index 0000000..b43bae8 --- /dev/null +++ b/suimang-swagger/src/main/java/com/iformall/config/SwaggerProperties.java @@ -0,0 +1,123 @@ +package com.iformall.config; + +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.boot.context.properties.ConfigurationProperties; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@ConfigurationProperties("swagger") +public class SwaggerProperties { + private Map services; + private String prePath; + /** + * 是否开启swagger + */ + private Boolean enabled; + /** + * swagger会解析的包路径 + **/ + private String basePackage = ""; + /** + * swagger会解析的url规则 + **/ + private List basePath = new ArrayList<>(); + /** + * 在basePath基础上需要排除的url规则 + **/ + private List excludePath = new ArrayList<>(); + /** + * 标题 + **/ + private String title = ""; + /** + * 描述 + **/ + private String description = ""; + /** + * 版本 + **/ + private String version = ""; + /** + * 许可证 + **/ + private String license = ""; + /** + * 许可证URL + **/ + private String licenseUrl = ""; + /** + * 服务条款URL + **/ + private String termsOfServiceUrl = ""; + + /** + * host信息 + **/ + private String host = ""; + /** + * 联系人信息 + */ + private Contact contact = new Contact(); + /** + * 全局统一鉴权配置 + **/ + private Authorization authorization = new Authorization(); + + @Data + public static class Contact { + /** + * 联系人 + **/ + private String name = ""; + /** + * 联系人url + **/ + private String url = ""; + /** + * 联系人email + **/ + private String email = ""; + } + + @Data + @NoArgsConstructor + public static class Authorization { + + /** + * 鉴权策略ID,需要和SecurityReferences ID保持一致 + */ + private String name = ""; + + /** + * 需要开启鉴权URL的正则 + */ + private String authRegex = "^.*$"; + + /** + * 鉴权作用域列表 + */ + private List authorizationScopeList = new ArrayList<>(); + + private List tokenUrlList = new ArrayList<>(); + } + + @Data + @NoArgsConstructor + public static class AuthorizationScope { + + /** + * 作用域名称 + */ + private String scope = ""; + + /** + * 作用域描述 + */ + private String description = ""; + + } +} diff --git a/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java b/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java new file mode 100644 index 0000000..db4158c --- /dev/null +++ b/suimang-swagger/src/main/java/com/iformall/constant/SwaggerConstant.java @@ -0,0 +1,8 @@ +package com.iformall.constant; + +public interface SwaggerConstant { + /** + * + */ + String V_1_0_0 = "v1.0.0"; +} diff --git a/suimang.iml b/suimang.iml index bb300b6..c7b2669 100644 --- a/suimang.iml +++ b/suimang.iml @@ -25,6 +25,7 @@ + @@ -161,7 +162,7 @@ - + @@ -184,21 +185,6 @@ - - - - - - - - - - - - - - - @@ -239,6 +225,7 @@ + diff --git a/suimangAdmin/src/main/java/com/iformall/AdminApplication.java b/suimangAdmin/src/main/java/com/iformall/AdminApplication.java index 0284ebf..cfc34ca 100644 --- a/suimangAdmin/src/main/java/com/iformall/AdminApplication.java +++ b/suimangAdmin/src/main/java/com/iformall/AdminApplication.java @@ -1,5 +1,6 @@ package com.iformall; +import com.iformall.annotation.BaseEnableSwagger; import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import org.mybatis.spring.annotation.MapperScan; import org.rocketmq.starter.annotation.EnableRocketMQ; @@ -18,7 +19,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; */ @SpringBootApplication @MapperScan(basePackages = {"com.iformall.mapper"}) -@EnableSwagger2 +@BaseEnableSwagger @EnableEncryptableProperties @EnableAsync @EnableRocketMQ diff --git a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java index 75223d8..9ba5a6e 100644 --- a/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java +++ b/suimangAdmin/src/main/java/com/iformall/config/ShiroConfig.java @@ -139,6 +139,7 @@ public class ShiroConfig { // } // swagger-ui filterChainDefinitionMap.put("/swagger-ui.html", "anon"); + filterChainDefinitionMap.put("/doc.html", "anon"); filterChainDefinitionMap.put("/v2/**", "anon"); filterChainDefinitionMap.put("/swagger-resources/**", "anon"); filterChainDefinitionMap.put("/webjars/**", "anon"); diff --git a/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java b/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java index 335b86b..fc80b3b 100644 --- a/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java +++ b/suimangAdmin/src/main/java/com/iformall/config/Swagger2Config.java @@ -1,61 +1,61 @@ -package com.iformall.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.paths.RelativePathProvider; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import javax.servlet.ServletContext; -import java.util.ArrayList; -import java.util.List; - -//参考:http://blog.csdn.net/catoop/article/details/50668896 -@Configuration -@EnableSwagger2 -public class Swagger2Config { - - @Autowired - private ServletContext servletContext; - - @Bean - public Docket createRestApi() { - ParameterBuilder tokenPar = new ParameterBuilder(); - List pars = new ArrayList(); - //增加一个request的header参数 - tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); - pars.add(tokenPar.build()); - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) - .paths(PathSelectors.any()) - .build() - .globalOperationParameters(pars) - .pathProvider(new RelativePathProvider(servletContext) { - @Override - public String getApplicationBasePath() { - return "/api"; - } - }); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("a端 api") - .description("a api") - .termsOfServiceUrl("http://localhost:7000") - .version("2.0") - .build(); - } - -} \ No newline at end of file +//package com.iformall.config; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import springfox.documentation.builders.ApiInfoBuilder; +//import springfox.documentation.builders.ParameterBuilder; +//import springfox.documentation.builders.PathSelectors; +//import springfox.documentation.builders.RequestHandlerSelectors; +//import springfox.documentation.schema.ModelRef; +//import springfox.documentation.service.ApiInfo; +//import springfox.documentation.service.Parameter; +//import springfox.documentation.spi.DocumentationType; +//import springfox.documentation.spring.web.paths.RelativePathProvider; +//import springfox.documentation.spring.web.plugins.Docket; +//import springfox.documentation.swagger2.annotations.EnableSwagger2; +// +//import javax.servlet.ServletContext; +//import java.util.ArrayList; +//import java.util.List; +// +////参考:http://blog.csdn.net/catoop/article/details/50668896 +//@Configuration +//@EnableSwagger2 +//public class Swagger2Config { +// +// @Autowired +// private ServletContext servletContext; +// +// @Bean +// public Docket createRestApi() { +// ParameterBuilder tokenPar = new ParameterBuilder(); +// List pars = new ArrayList(); +// //增加一个request的header参数 +// tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); +// pars.add(tokenPar.build()); +// return new Docket(DocumentationType.SWAGGER_2) +// .apiInfo(apiInfo()) +// .select() +// .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) +// .paths(PathSelectors.any()) +// .build() +// .globalOperationParameters(pars) +// .pathProvider(new RelativePathProvider(servletContext) { +// @Override +// public String getApplicationBasePath() { +// return "/api"; +// } +// }); +// } +// +// private ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("a端 api") +// .description("a api") +// .termsOfServiceUrl("http://localhost:7000") +// .version("2.0") +// .build(); +// } +// +//} \ No newline at end of file diff --git a/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java b/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java index d4e0620..7064277 100644 --- a/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java +++ b/suimangAdmin/src/main/java/com/iformall/config/WebConfig.java @@ -100,7 +100,9 @@ public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("swagger-ui.html") +// registry.addResourceHandler("swagger-ui.html") +// .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java index 9647b92..e4bcf22 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java @@ -1,6 +1,8 @@ package com.iformall.controller.sm; +import com.iformall.annotation.ApiVersion; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.SaveApiGuideDTO; import com.iformall.domain.dto.sm.UpdateApiGuideDTO; import com.iformall.domain.po.sm.ApiGuide; @@ -18,12 +20,14 @@ public class ApiGuideController { @Autowired private ApiGuideService apiGuideService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询api指南") @GetMapping("/page") public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增api指南") @PostMapping("/save") public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { @@ -31,6 +35,7 @@ public class ApiGuideController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改api指南") @PostMapping("/update") public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java index 00c32d1..75e8dd3 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java @@ -1,7 +1,9 @@ package com.iformall.controller.sm; +import com.iformall.annotation.ApiVersion; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; @@ -20,12 +22,14 @@ public class ApiMenuController { @Autowired private ApiMenuService apiMenuService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询api菜单") @GetMapping("/page") public ResultData pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) { return new ResultData(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询api菜单") @GetMapping("/get") public ResultData getApiMenu(Long id) { @@ -35,6 +39,7 @@ public class ApiMenuController { return new ResultData(apiMenuService.getApiMenu(id)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增api菜单") @PostMapping("/save") public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) { @@ -42,6 +47,7 @@ public class ApiMenuController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改api菜单") @PostMapping("/update") public ResultData updateApiMenu(@RequestBody UpdateApiMenuDTO dto) { @@ -49,6 +55,7 @@ public class ApiMenuController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("全查询父级api菜单") @GetMapping("/listParentMenu") public ResultData listParentMenu() { diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java index 843b80e..c8f290f 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java @@ -1,6 +1,8 @@ package com.iformall.controller.sm; +import com.iformall.annotation.ApiVersion; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; import com.iformall.domain.dto.sm.SaveServiceInfoDTO; import com.iformall.domain.dto.sm.UpdateServiceInfoDTO; @@ -20,12 +22,14 @@ public class ServiceInfoController extends BaseController { @Autowired private ServiceInfoService serviceInfoService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询合作商") @GetMapping("/page") public ResultData pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) { return new ResultData(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增合作商") @PostMapping("/save") public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) { @@ -33,6 +37,7 @@ public class ServiceInfoController extends BaseController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改合作商") @PostMapping("/update") public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) { @@ -40,6 +45,7 @@ public class ServiceInfoController extends BaseController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改合作商状态") @PostMapping("/updateStatus") public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) { diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java index 7f203ce..3c493b8 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java @@ -1,7 +1,9 @@ package com.iformall.controller.sm; +import com.iformall.annotation.ApiVersion; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; import com.iformall.domain.po.WxThirdPartyApi; import com.iformall.exception.BizException; @@ -19,12 +21,14 @@ public class ThirdPartyApiController { @Autowired private WxThirdPartyApiService thirdPartyApiService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询秘钥") @GetMapping("/page") public ResultData pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) { return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询秘钥") @GetMapping("/get") public ResultData getThirdPartyApi(Long id) { @@ -34,6 +38,7 @@ public class ThirdPartyApiController { return new ResultData(thirdPartyApiService.getThirdPartyApi(id)); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改秘钥状态") @PostMapping("/updateStatus") public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) { diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index a524769..8923a08 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -2,9 +2,11 @@ package com.iformall.controller.sys; import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Producer; +import com.iformall.annotation.ApiVersion; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; @@ -75,6 +77,7 @@ public class HomeController extends BaseController { @Qualifier("objectCommonRedisTemplate") RedisTemplate redisTemplate; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("验证码") @GetMapping("/captcha.jpg") public void captcha(HttpServletResponse response)throws ServletException, IOException { @@ -97,6 +100,7 @@ public class HomeController extends BaseController { IOUtils.closeQuietly(out); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("登录") @PostMapping("/doLogin") public ResultData login(@RequestBody MallUserInfo user, HttpServletResponse response) { diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java index 3ad9ded..92e3efb 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallRoleController.java @@ -1,10 +1,12 @@ package com.iformall.controller.sys; import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; @@ -43,6 +45,7 @@ public class MallRoleController extends BaseController { @Autowired private MallUserRoleService mallUserRoleService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("角色列表") @GetMapping("list") @ApiImplicitParams({ @@ -95,7 +98,7 @@ public class MallRoleController extends BaseController { return new ResultData(role); } - + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("角色保存") @PostMapping("saveOrUpdate") //@RequiresPermissions("sys:role:save") @@ -126,6 +129,7 @@ public class MallRoleController extends BaseController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("角色删除") @PostMapping("/del") //@RequiresPermissions("sys:role:del") diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java index fa22251..5c583c3 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/MallUserInfoController.java @@ -1,10 +1,12 @@ package com.iformall.controller.sys; import com.github.pagehelper.PageInfo; +import com.iformall.annotation.ApiVersion; import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity; @@ -60,6 +62,7 @@ public class MallUserInfoController extends BaseController { @Autowired WxMsgValidationcodeService wxMsgValidationcodeService; + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "用户分页接口", response = String.class) @GetMapping("lists") //@RequiresPermissions("sys:user:list") @@ -110,6 +113,7 @@ public class MallUserInfoController extends BaseController { return new ResultData(user); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "创建用户接口", response = String.class) @PostMapping("add") //@RequiresPermissions("sys:user:add") @@ -147,6 +151,7 @@ public class MallUserInfoController extends BaseController { return new ResultData(userInfo); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "修改用户接口", response = String.class) @PostMapping("update") //@RequiresPermissions("sys:user:update") @@ -225,6 +230,7 @@ public class MallUserInfoController extends BaseController { return new ResultData(); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "删除用户接口", response = String.class) @PostMapping("/del") //@RequiresPermissions("sys:user:del") @@ -320,6 +326,7 @@ public class MallUserInfoController extends BaseController { return new ResultData(menu); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "用户密码发送验证码") @GetMapping("sendvalidationcode") @ApiImplicitParams({ @@ -353,6 +360,7 @@ public class MallUserInfoController extends BaseController { return wxMsgValidationcodeService.sendvalidationcode(wxMsgValidationcode); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation(value = "修改密码", notes = "{\"userName\",\"string\",\"code\",\"string\",\"pwd\",\"string\"}") @PostMapping("/updatepwd") @SystemControllerLog(description = "用户管理-修改密码") diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index 26fd86c..165d5b9 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -1,9 +1,11 @@ package com.iformall.controller.sys; +import com.iformall.annotation.ApiVersion; import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.MallPermission; import com.iformall.domain.po.MallRole; @@ -65,6 +67,7 @@ public class SysMenuController extends BaseController { return new ResultData(map); } + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("所有菜单列表") @GetMapping("list") //@RequiresPermissions("sys:menu:list") diff --git a/suimangAdmin/src/main/resources/application-dev.yml b/suimangAdmin/src/main/resources/application-dev.yml index 5eaf35c..e57bf5e 100644 --- a/suimangAdmin/src/main/resources/application-dev.yml +++ b/suimangAdmin/src/main/resources/application-dev.yml @@ -208,4 +208,18 @@ suimang: photo_speak_hy: xxx digital_avatar: xxx digital_avatar_hy: xxx - callbackUrl: xxx \ No newline at end of file + callbackUrl: xxx + +swagger: + base-package: com.iformall.controller + title: 遂芒_metavatar_接口文档 + description: 前后端联调 + version: 1.0 + license: Apache + license-url: https://mtest.metavatar.cc/ + terms-of-service-url: https://mtest.metavatar.cc/ + host: localhost:8888 + contact: + name: 张三 + url: https://mtest.metavatar.cc/ + email: zhangsan@163.com \ No newline at end of file diff --git a/suimangCApi/src/main/java/com/iformall/CApplication.java b/suimangCApi/src/main/java/com/iformall/CApplication.java index d916e1b..32fda08 100644 --- a/suimangCApi/src/main/java/com/iformall/CApplication.java +++ b/suimangCApi/src/main/java/com/iformall/CApplication.java @@ -1,5 +1,6 @@ package com.iformall; +import com.iformall.annotation.BaseEnableSwagger; import org.mybatis.spring.annotation.MapperScan; import org.rocketmq.starter.annotation.EnableRocketMQ; import org.springframework.beans.factory.annotation.Value; @@ -15,6 +16,7 @@ import org.springframework.scheduling.annotation.EnableAsync; * @author chenkx * @date 2017-12-26 */ +@BaseEnableSwagger @SpringBootApplication @MapperScan(basePackages = {"com.iformall.mapper"}) @EnableEncryptableProperties diff --git a/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java b/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java index 2118b9d..6d22331 100644 --- a/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java +++ b/suimangCApi/src/main/java/com/iformall/config/Swagger2Config.java @@ -1,61 +1,61 @@ -package com.iformall.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.paths.RelativePathProvider; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import javax.servlet.ServletContext; -import java.util.ArrayList; -import java.util.List; - -//参考:http://blog.csdn.net/catoop/article/details/50668896 -@Configuration -@EnableSwagger2 -public class Swagger2Config { - - @Autowired - private ServletContext servletContext; - - @Bean - public Docket createRestApi() { - ParameterBuilder tokenPar = new ParameterBuilder(); - List pars = new ArrayList(); - //增加一个request的header参数 - tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); - pars.add(tokenPar.build()); - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) - .paths(PathSelectors.any()) - .build() - .globalOperationParameters(pars) - .pathProvider(new RelativePathProvider(servletContext) { - @Override - public String getApplicationBasePath() { - return "/api"; - } - }); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("c端 api") - .description("c api") - .termsOfServiceUrl("http://localhost:7000") - .version("2.0") - .build(); - } - -} \ No newline at end of file +//package com.iformall.config; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import springfox.documentation.builders.ApiInfoBuilder; +//import springfox.documentation.builders.ParameterBuilder; +//import springfox.documentation.builders.PathSelectors; +//import springfox.documentation.builders.RequestHandlerSelectors; +//import springfox.documentation.schema.ModelRef; +//import springfox.documentation.service.ApiInfo; +//import springfox.documentation.service.Parameter; +//import springfox.documentation.spi.DocumentationType; +//import springfox.documentation.spring.web.paths.RelativePathProvider; +//import springfox.documentation.spring.web.plugins.Docket; +//import springfox.documentation.swagger2.annotations.EnableSwagger2; +// +//import javax.servlet.ServletContext; +//import java.util.ArrayList; +//import java.util.List; +// +////参考:http://blog.csdn.net/catoop/article/details/50668896 +//@Configuration +//@EnableSwagger2 +//public class Swagger2Config { +// +// @Autowired +// private ServletContext servletContext; +// +// @Bean +// public Docket createRestApi() { +// ParameterBuilder tokenPar = new ParameterBuilder(); +// List pars = new ArrayList(); +// //增加一个request的header参数 +// tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); +// pars.add(tokenPar.build()); +// return new Docket(DocumentationType.SWAGGER_2) +// .apiInfo(apiInfo()) +// .select() +// .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) +// .paths(PathSelectors.any()) +// .build() +// .globalOperationParameters(pars) +// .pathProvider(new RelativePathProvider(servletContext) { +// @Override +// public String getApplicationBasePath() { +// return "/api"; +// } +// }); +// } +// +// private ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("c端 api") +// .description("c api") +// .termsOfServiceUrl("http://localhost:7000") +// .version("2.0") +// .build(); +// } +// +//} \ No newline at end of file diff --git a/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java b/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java index c406405..66deea2 100644 --- a/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java +++ b/suimangCApi/src/main/java/com/iformall/config/WebMvcConfig.java @@ -54,7 +54,9 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("swagger-ui.html") +// registry.addResourceHandler("swagger-ui.html") +// .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java index f82a9e6..f8a73df 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java @@ -1,7 +1,9 @@ package com.iformall.controller; +import com.iformall.annotation.ApiVersion; import com.iformall.annotation.AuthIgnore; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.service.sm.ApiGuideService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,6 +21,7 @@ public class ApiGuideController { private ApiGuideService apiGuideService; @AuthIgnore + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询api指南") @GetMapping("/getAvailableApiGuide") public ResultData getAvailableApiGuide() { diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java index 0c221fe..ffef77d 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java @@ -1,8 +1,10 @@ package com.iformall.controller; +import com.iformall.annotation.ApiVersion; import com.iformall.annotation.AuthIgnore; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; +import com.iformall.constant.SwaggerConstant; import com.iformall.exception.BizException; import com.iformall.service.sm.ApiMenuService; import io.swagger.annotations.Api; @@ -19,6 +21,7 @@ public class ApiMenuController { private ApiMenuService apiMenuService; @AuthIgnore + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("全查询api菜单") @GetMapping("/list") public ResultData listApiMenu() { @@ -26,6 +29,7 @@ public class ApiMenuController { } @AuthIgnore + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("查询某个api菜单所有子菜单") @GetMapping("/listSubmenu") public ResultData listApiSubmenu(Long id) { @@ -36,6 +40,7 @@ public class ApiMenuController { } @AuthIgnore + @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询菜单详情") @GetMapping("/get") public ResultData getApiMenu(Long id) { diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml index 83ec583..62490a9 100644 --- a/suimangCApi/src/main/resources/application-dev.yml +++ b/suimangCApi/src/main/resources/application-dev.yml @@ -195,3 +195,17 @@ suimang: digital_avatar: http://nas.pucao.cn:2005 digital_avatar_hy: http://nas.pucao.cn:2003 callbackUrl: https://mtest.metavatar.cc/C + +swagger: + base-package: com.iformall.controller + title: 遂芒_metavatar_接口文档 + description: 前后端联调 + version: 1.0 + license: Apache + license-url: https://mtest.metavatar.cc/ + terms-of-service-url: https://mtest.metavatar.cc/ + host: localhost:8888 + contact: + name: 张三 + url: https://mtest.metavatar.cc/ + email: zhangsan@163.com \ No newline at end of file diff --git a/suimangService/pom.xml b/suimangService/pom.xml index 181bb3c..60d406e 100644 --- a/suimangService/pom.xml +++ b/suimangService/pom.xml @@ -20,6 +20,11 @@ compile --> + + com.iformall + suimang-swagger + 1.0 + com.iformall suimangVideo diff --git a/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java index 71b3f01..23396c4 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/ApiGuideService.java @@ -16,4 +16,6 @@ public interface ApiGuideService extends IService { void saveApiGuide(SaveApiGuideDTO dto); void updateApiGuide(UpdateApiGuideDTO dto); + + ApiGuide getAvailableApiGuide(); } From 1647657476c095891704619c0cb5042d7c1745d5 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 26 Oct 2023 19:00:13 +0800 Subject: [PATCH 37/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E5=80=BC=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sm/ApiGuideController.java | 14 ++-- .../controller/sm/ApiMenuController.java | 25 +++--- .../controller/sm/ServiceInfoController.java | 18 +++-- .../sm/ThirdPartyApiController.java | 14 ++-- .../controller/ApiGuideController.java | 6 +- .../controller/ApiMenuController.java | 18 +++-- .../com/iformall/common/CommonConstants.java | 6 ++ .../src/main/java/com/iformall/common/R.java | 76 +++++++++++++++++++ 8 files changed, 139 insertions(+), 38 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/common/R.java diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java index e4bcf22..72fdb67 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiGuideController.java @@ -1,6 +1,8 @@ package com.iformall.controller.sm; +import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.SaveApiGuideDTO; @@ -23,23 +25,23 @@ public class ApiGuideController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询api指南") @GetMapping("/page") - public ResultData pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { - return new ResultData(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); + public R> pageApiGuide(ApiGuide apiGuide, Integer pageNum, Integer pageSize) { + return R.ok(apiGuideService.pageApiGuide(apiGuide, pageNum, pageSize)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增api指南") @PostMapping("/save") - public ResultData saveApiGuide(@RequestBody SaveApiGuideDTO dto) { + public R saveApiGuide(@RequestBody SaveApiGuideDTO dto) { apiGuideService.saveApiGuide(dto); - return new ResultData(); + return R.ok(); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改api指南") @PostMapping("/update") - public ResultData updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { + public R updateApiGuide(@RequestBody UpdateApiGuideDTO dto) { apiGuideService.updateApiGuide(dto); - return new ResultData(); + return R.ok(); } } diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java index 75e8dd3..f89d7e7 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ApiMenuController.java @@ -1,12 +1,15 @@ package com.iformall.controller.sm; +import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; import com.iformall.common.ErrorCode; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.SaveApiMenuDTO; import com.iformall.domain.dto.sm.UpdateApiMenuDTO; import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.domain.vo.sm.ApiMenuVO; import com.iformall.exception.BizException; import com.iformall.service.sm.ApiMenuService; import io.swagger.annotations.Api; @@ -14,6 +17,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/apiMenu") @Api(tags = "api菜单接口") @@ -25,40 +30,40 @@ public class ApiMenuController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询api菜单") @GetMapping("/page") - public ResultData pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) { - return new ResultData(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize)); + public R> pageApiMenu(ApiMenu ApiMenu, Integer pageNum, Integer pageSize) { + return R.ok(apiMenuService.pageApiMenu(ApiMenu, pageNum, pageSize)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询api菜单") @GetMapping("/get") - public ResultData getApiMenu(Long id) { + public R getApiMenu(Long id) { if (id == null) { throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); } - return new ResultData(apiMenuService.getApiMenu(id)); + return R.ok(apiMenuService.getApiMenu(id)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增api菜单") @PostMapping("/save") - public ResultData saveApiMenu(@RequestBody SaveApiMenuDTO dto) { + public R saveApiMenu(@RequestBody SaveApiMenuDTO dto) { apiMenuService.saveApiMenu(dto); - return new ResultData(); + return R.ok(); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改api菜单") @PostMapping("/update") - public ResultData updateApiMenu(@RequestBody UpdateApiMenuDTO dto) { + public R updateApiMenu(@RequestBody UpdateApiMenuDTO dto) { apiMenuService.updateApiMenu(dto); - return new ResultData(); + return R.ok(); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("全查询父级api菜单") @GetMapping("/listParentMenu") - public ResultData listParentMenu() { - return new ResultData(apiMenuService.listParentMenu()); + public R> listParentMenu() { + return R.ok(apiMenuService.listParentMenu()); } } diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java index c8f290f..9aaf8ed 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ServiceInfoController.java @@ -1,6 +1,8 @@ package com.iformall.controller.sm; +import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.controller.base.BaseController; @@ -25,31 +27,31 @@ public class ServiceInfoController extends BaseController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询合作商") @GetMapping("/page") - public ResultData pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) { - return new ResultData(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize)); + public R> pageServiceInfo(ServiceInfo serviceInfo, Integer pageNum, Integer pageSize) { + return R.ok(serviceInfoService.pageServiceInfo(serviceInfo, pageNum, pageSize)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("新增合作商") @PostMapping("/save") - public ResultData saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) { + public R saveServiceInfo(@RequestBody SaveServiceInfoDTO dto) { serviceInfoService.saveServiceInfo(dto); - return new ResultData(); + return R.ok(); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改合作商") @PostMapping("/update") - public ResultData updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) { + public R updateServiceInfo(@RequestBody UpdateServiceInfoDTO dto) { serviceInfoService.updateServiceInfo(dto); - return new ResultData(); + return R.ok(); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改合作商状态") @PostMapping("/updateStatus") - public ResultData updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) { + public R updateServiceInfoStatus(@RequestBody UpdateServiceInfoStatusDTO dto) { serviceInfoService.updateServiceInfoStatus(dto); - return new ResultData(); + return R.ok(); } } diff --git a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java index 3c493b8..e59d194 100644 --- a/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java +++ b/suimangAdmin/src/main/java/com/iformall/controller/sm/ThirdPartyApiController.java @@ -1,7 +1,9 @@ package com.iformall.controller.sm; +import com.github.pagehelper.PageInfo; import com.iformall.annotation.ApiVersion; import com.iformall.common.ErrorCode; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; import com.iformall.domain.dto.sm.UpdateThirdPartyApiStatusDTO; @@ -24,25 +26,25 @@ public class ThirdPartyApiController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("分页查询秘钥") @GetMapping("/page") - public ResultData pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) { - return new ResultData(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize)); + public R> pageThirdPartyApi(WxThirdPartyApi thirdPartyApi, Integer pageNum, Integer pageSize) { + return R.ok(thirdPartyApiService.pageThirdPartyApi(thirdPartyApi, pageNum, pageSize)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询秘钥") @GetMapping("/get") - public ResultData getThirdPartyApi(Long id) { + public R getThirdPartyApi(Long id) { if (id == null) { throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); } - return new ResultData(thirdPartyApiService.getThirdPartyApi(id)); + return R.ok(thirdPartyApiService.getThirdPartyApi(id)); } @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("修改秘钥状态") @PostMapping("/updateStatus") - public ResultData updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) { + public R updateThirdPartyApiStatus(@RequestBody UpdateThirdPartyApiStatusDTO dto) { thirdPartyApiService.updateThirdPartyApiStatus(dto); - return new ResultData(); + return R.ok(); } } diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java index f8a73df..3ff2abf 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiGuideController.java @@ -2,8 +2,10 @@ package com.iformall.controller; import com.iformall.annotation.ApiVersion; import com.iformall.annotation.AuthIgnore; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; +import com.iformall.domain.po.sm.ApiGuide; import com.iformall.service.sm.ApiGuideService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -24,7 +26,7 @@ public class ApiGuideController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询api指南") @GetMapping("/getAvailableApiGuide") - public ResultData getAvailableApiGuide() { - return new ResultData(apiGuideService.getAvailableApiGuide()); + public R getAvailableApiGuide() { + return R.ok(apiGuideService.getAvailableApiGuide()); } } diff --git a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java index ffef77d..135bd6c 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/ApiMenuController.java @@ -3,8 +3,12 @@ package com.iformall.controller; import com.iformall.annotation.ApiVersion; import com.iformall.annotation.AuthIgnore; import com.iformall.common.ErrorCode; +import com.iformall.common.R; import com.iformall.common.ResultData; import com.iformall.constant.SwaggerConstant; +import com.iformall.domain.po.sm.ApiMenu; +import com.iformall.domain.vo.sm.ApiMenuVO; +import com.iformall.domain.vo.sm.ListApiSubmenuVO; import com.iformall.exception.BizException; import com.iformall.service.sm.ApiMenuService; import io.swagger.annotations.Api; @@ -12,6 +16,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api/apiMenu") @Api(tags = "api菜单接口") @@ -24,29 +30,29 @@ public class ApiMenuController { @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("全查询api菜单") @GetMapping("/list") - public ResultData listApiMenu() { - return new ResultData(apiMenuService.listMenu()); + public R> listApiMenu() { + return R.ok(apiMenuService.listMenu()); } @AuthIgnore @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("查询某个api菜单所有子菜单") @GetMapping("/listSubmenu") - public ResultData listApiSubmenu(Long id) { + public R> listApiSubmenu(Long id) { if (id == null) { throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); } - return new ResultData(apiMenuService.listApiSubmenu(id)); + return R.ok(apiMenuService.listApiSubmenu(id)); } @AuthIgnore @ApiVersion(group = SwaggerConstant.V_1_0_0) @ApiOperation("单个查询菜单详情") @GetMapping("/get") - public ResultData getApiMenu(Long id) { + public R getApiMenu(Long id) { if (id == null) { throw new BizException(ErrorCode.SYS_PARAMETER_NOT_NULL); } - return new ResultData(apiMenuService.getApiMenu(id)); + return R.ok(apiMenuService.getApiMenu(id)); } } diff --git a/suimangService/src/main/java/com/iformall/common/CommonConstants.java b/suimangService/src/main/java/com/iformall/common/CommonConstants.java index 81256ff..86bb909 100644 --- a/suimangService/src/main/java/com/iformall/common/CommonConstants.java +++ b/suimangService/src/main/java/com/iformall/common/CommonConstants.java @@ -1,6 +1,12 @@ package com.iformall.common; public interface CommonConstants { + /** + * 接口响应码:200:成功 500:失败 + */ + Integer SUCCESS = 200; + Integer FAILED = 500; + /** * 状态(0:正常,1:锁定) */ diff --git a/suimangService/src/main/java/com/iformall/common/R.java b/suimangService/src/main/java/com/iformall/common/R.java new file mode 100644 index 0000000..04b81d4 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/common/R.java @@ -0,0 +1,76 @@ +package com.iformall.common; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 响应信息主体 + * + * @author xmzhao71 + * @date 2023-10-26 + */ +@ApiModel(description = "响应信息主体") +@Data +public class R implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "返回标记:成功=0,失败=1") + private int code; + + @ApiModelProperty(value = "返回信息") + private String message; + + @ApiModelProperty(value = "数据") + private T data; + + public Boolean isOk() { + return code == 200; + } + + public static R ok() { + return restResult(null, CommonConstants.SUCCESS, null); + } + + public static R ok(T data) { + return restResult(data, CommonConstants.SUCCESS, null); + } + + public static R ok(T data, String msg) { + return restResult(data, CommonConstants.SUCCESS, msg); + } + + public static R failed() { + return restResult(null, CommonConstants.FAILED, null); + } + + public static R failed(String msg) { + return restResult(null, CommonConstants.FAILED, msg); + } + + public static R failed(T data) { + return restResult(data, CommonConstants.FAILED, null); + } + + public static R failed(T data, String msg) { + return restResult(data, CommonConstants.FAILED, msg); + } + + public static R failed(T data, int code, String msg) { + return restResult(data, code, msg); + } + + public static R failed(int code, String msg) { + return restResult(null, code, msg); + } + + private static R restResult(T data, int code, String msg) { + R apiResult = new R<>(); + apiResult.setCode(code); + apiResult.setData(data); + apiResult.setMessage(msg); + return apiResult; + } +} \ No newline at end of file From be9067ec8e81d5f58cd3f54c4b6a752e25057432 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 27 Oct 2023 10:48:46 +0800 Subject: [PATCH 38/40] //live --- .../src/main/resources/application-dev.yml | 1 + .../src/main/resources/application-prod.yml | 1 + .../controller/UserLiveController.java | 226 +++++++++++------- .../src/main/resources/application-dev.yml | 1 + .../src/main/resources/application-prod.yml | 1 + .../src/main/resources/application-dev.yml | 1 + .../src/main/resources/application-prod.yml | 1 + .../service/WxCUserAuthorityService.java | 2 + .../com/iformall/service/WxCVideoService.java | 2 +- .../com/iformall/service/WxCVoiceService.java | 6 +- .../impl/WxCUserAuthorityServiceImpl.java | 51 +--- .../service/impl/WxCVideoServiceImpl.java | 23 +- .../service/impl/WxCVoiceServiceImpl.java | 72 +++--- .../java/com/iformall/sm/AiTtsHelper.java | 75 ++++++ 14 files changed, 273 insertions(+), 190 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java diff --git a/suimangAdmin/src/main/resources/application-dev.yml b/suimangAdmin/src/main/resources/application-dev.yml index 5eaf35c..51fd7ac 100644 --- a/suimangAdmin/src/main/resources/application-dev.yml +++ b/suimangAdmin/src/main/resources/application-dev.yml @@ -204,6 +204,7 @@ logging: suimang: oral_broadcasting: xxx + video_tts: photo_speak: xxx photo_speak_hy: xxx digital_avatar: xxx diff --git a/suimangAdmin/src/main/resources/application-prod.yml b/suimangAdmin/src/main/resources/application-prod.yml index a3241f1..a57e8c1 100644 --- a/suimangAdmin/src/main/resources/application-prod.yml +++ b/suimangAdmin/src/main/resources/application-prod.yml @@ -160,6 +160,7 @@ logging: suimang: oral_broadcasting: xxx + video_tts: photo_speak: xxx photo_speak_hy: xxx digital_avatar: xxx diff --git a/suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java b/suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java index 3b58187..91a228d 100644 --- a/suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java +++ b/suimangCApi/src/main/java/com/iformall/controller/UserLiveController.java @@ -85,43 +85,44 @@ public class UserLiveController extends BaseController { @PostMapping("/login") @ApiOperation(value = "用户登录", notes = "{\"username\":\"string\",\"password\":\"string\",\"code\":\"string\",\"status\":\"int\"}") public Map login(@RequestBody Map map, HttpServletResponse response) { - Map wxCLiveLoginVos = new HashMap<>(); String ipAddr = getIpAddr(); logger.debug("[" + ipAddr + "] WxUserGrantController::login"); + + Map resultMap = new HashMap<>(); + HashMap status = new HashMap<>(); + + String code = map.get("code"); String phone = map.get("username"); String password = map.get("password"); + if (StringUtils.isBlank(phone) || StringUtils.isBlank(password)) { - HashMap status = new HashMap<>(); status.put("code", ErrorCode.SYS_PARAMETER_ERROR.getCode()); status.put("message", "手机号或密码为空"); - wxCLiveLoginVos.put("status", status); - return wxCLiveLoginVos; + resultMap.put("status", status); + return resultMap; } WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByPhone(getTenantInfo(), phone); if (basicInfo == null) { - HashMap status = new HashMap<>(); status.put("code", ErrorCode.USER_IS_EMPTY); status.put("message", "用户不存在"); - wxCLiveLoginVos.put("status", status); - return wxCLiveLoginVos; + resultMap.put("status", status); + return resultMap; } String encryptPassword = new PasswordHelper().encryptPassword(password); if (!encryptPassword.equals(basicInfo.getPassword())) { - HashMap status = new HashMap<>(); status.put("code", ErrorCode.USER_PASSWD_ERR.getCode()); status.put("message", "手机号或密码错误"); - wxCLiveLoginVos.put("status", status); - return wxCLiveLoginVos; + resultMap.put("status", status); + return resultMap; } int statu = Integer.parseInt(map.get("status")); if (statu == 0) { WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId()); - if (basicLiveInfo.getCode() != null && !map.get("code").equals(basicLiveInfo.getCode())) { - HashMap status = new HashMap<>(); + if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) { status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode()); status.put("message", "用户已在其他设备登录"); - wxCLiveLoginVos.put("status", status); - return wxCLiveLoginVos; + resultMap.put("status", status); + return resultMap; } if (basicLiveInfo.getCode() == null) { wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), map.get("code")); @@ -130,37 +131,28 @@ public class UserLiveController extends BaseController { if (statu == -1) { wxCLiveUserBasicInfoService.updateCode(basicInfo.getId(), null); basicInfo.setStatus(-2); - HashMap status = new HashMap<>(); status.put("code", ErrorCode.USER_CANCEL_MCODE.getCode()); status.put("message", "设备已注销"); - wxCLiveLoginVos.put("status", status); - return wxCLiveLoginVos; + resultMap.put("status", status); + return resultMap; } wxCUserBasicInfoService.handleLoginUser(basicInfo); WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(basicInfo.getId()); - WxCLiveLoginVo wxCLiveLoginVo = new WxCLiveLoginVo(); - wxCLiveLoginVo.setCode(map.get("code")); - wxCLiveLoginVo.setUsername(map.get("username")); - Map info = new HashMap(); + Map data = new HashMap(); - Map status = new HashMap<>(); - status.put("code", 1000); - status.put("message", "success"); - data.put("token", basicInfo.getToken()); + data.put("username",basicInfo.getPhone()); data.put("status", 0); data.put("version", basicLiveInfo.getVersion()); data.put("current_time", new Date(System.currentTimeMillis() / 1000)); data.put("expire_time", basicLiveInfo.getExpireTime().getTime() / 1000); - info.put("log_id", basicInfo.getId()); - info.put("server_type", "user login"); - info.put("username", basicInfo.getPhone()); - wxCLiveLoginVos.put("data", data); - wxCLiveLoginVos.put("info", info); - wxCLiveLoginVo.setData(data); - wxCLiveLoginVo.setInfo(info); - wxCLiveLoginVos.put("status", status); - System.out.println("wxCLiveLoginVo.getToken() = " + wxCLiveLoginVo.getToken()); - return wxCLiveLoginVos; + data.put("token", basicInfo.getToken()); + resultMap.put("data", data); + + status.put("code", 1000); + status.put("message", "success"); + resultMap.put("status", status); + + return resultMap; } /** @@ -170,24 +162,30 @@ public class UserLiveController extends BaseController { @PostMapping("/avatarList") @ApiOperation(value = "视频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}") public Map avatarList(@RequestBody Map params) throws Exception { - Map avatarVos = new HashMap<>(); String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] WxUserGrantController::getAvatarList"); - Long id = getMemberId(); + + Map resultMap = new HashMap<>(); + HashMap status = new HashMap<>(); + + String code = params.get("code"); + Long userId = getMemberId(); //鉴权 - WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); - if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { - HashMap status = new HashMap<>(); + WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId); + if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) { status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode()); status.put("message", "用户已在其他设备登录"); - avatarVos.put("status", status); - return avatarVos; + resultMap.put("status", status); + return resultMap; } - Map status = new HashMap<>(); + + Map data = wxCVideoService.getById(userId); + resultMap.put("data", data); + status.put("code", 1000); status.put("msg", "success"); - avatarVos.put("status", status); - return wxCVideoService.getById(id); + resultMap.put("status", status); + return resultMap; } @@ -198,77 +196,134 @@ public class UserLiveController extends BaseController { @PostMapping("/audioList") @ApiOperation(value = "音频模板列表", notes = "{\"username\",\"string\",\"code\",\"string\"}") public Map audioList(@RequestBody Map params) { - Map resultMap = new HashMap<>(); String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] WxUserGrantController::getAudioList"); - Long id = getMemberId(); - WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); - if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { - HashMap status = new HashMap<>(); + + Map resultMap = new HashMap<>(); + HashMap status = new HashMap<>(); + + String code = params.get("code"); + + Long userId = getMemberId(); + WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId); + if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) { status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode()); status.put("message", "用户已在其他设备登录"); resultMap.put("status", status); return resultMap; } - return wxCVoiceService.getById(id,null); + Map data = wxCVoiceService.getById(userId); + resultMap.put("data", data); + + status.put("code", 1000); + status.put("msg", "success"); + resultMap.put("status", status); + return resultMap; } /** * 资源权限查询 */ - - @ApiOperation(value = "资源权限查询", notes = "{\"username\",\"string\",\"code\",\"string\",\"type\",\"int\",\"resource_id\",\"long\"}") @PostMapping("/author") public Map getAuthor(@RequestBody Map params) { - Map resultMap = new HashMap<>(); String ipaddress = getIpAddr(); logger.debug("[" + ipaddress + "] WxUserGrantController::getAuthor"); - Long id = getMemberId(); - WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(id); - if (basicLiveInfo.getCode() != null && !params.get("code").equals(basicLiveInfo.getCode())) { - HashMap status = new HashMap<>(); + + Map resultMap = new HashMap<>(); + HashMap status = new HashMap<>(); + + String code = params.get("code"); + Integer type = Integer.parseInt(params.get("type")); + Long resourceId = Long.valueOf(params.get("resource_id")); + + if(type == null){ + status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + status.put("message", "type 为空"); + resultMap.put("status", status); + return resultMap; + } + if(resourceId == null){ + status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + status.put("message", "资源ID 为空"); + resultMap.put("status", status); + return resultMap; + } + + Long userId = getMemberId(); + WxCUserBasicInfo basicLiveInfo = wxCLiveUserBasicInfoService.getById(userId); + if (basicLiveInfo.getCode() != null && !basicLiveInfo.getCode().equals(code)) { status.put("code", ErrorCode.USER_ALREADY_LOGIN.getCode()); status.put("message", "用户已在其他设备登录"); resultMap.put("status", status); return resultMap; } - String code = params.get("code"); - Integer type = Integer.parseInt(params.get("type")); - Long resourceId = Long.valueOf(params.get("resource_id")); - return wxCUserAuthorityService.getAuthor(id, code, type, resourceId); + + Map data = wxCUserAuthorityService.getAuthor(userId, code, type, resourceId); + if(data != null){ + resultMap.put("data", data); + + status.put("code", 1000); + status.put("msg", "success"); + resultMap.put("status", status); + return resultMap; + } + + status.put("code", ErrorCode.SYS_NULLPOINTER_ERROR.getCode()); + status.put("msg", "未查询到资源权限"); + resultMap.put("status", status); + return resultMap; } @ApiOperation(value = "tts", notes = "{\"username\",\"string\",\"gen_txt\",\"string\",\"voice_id\",\"string\",\"voice_style\",\"string\",\"speed\",\"int\"}") @PostMapping("/audiotts") public Map voicePreview(@RequestBody Map params) { logger.debug("[" + getIpAddr() + "] UserLiveController::voicePreview"); - Long id = getMemberId(); - AiPreviewParam param = new AiPreviewParam(); - if (params.get("voice_id") == null) { - Map status = new HashMap<>(); - status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode()); + Map resultMap = new HashMap<>(); + HashMap status = new HashMap<>(); + + String voice_id = params.get("voice_id"); + String voiceStyle = params.get("voice_style"); + if (StringUtils.isBlank(voice_id)) { + status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); status.put("msg", "音色ID不能为空"); - return status; + resultMap.put("status", status); + return resultMap; } - if (StringUtils.isBlank(params.get("gen_txt"))) { - Map status = new HashMap<>(); - status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode()); - status.put("msg", "需要生成的文字不能为空"); - return status; + Long voiceId = null; + try{ + voiceId = Long.parseLong(voice_id); + }catch(Exception e){ + status.put("code", ErrorCode.SYS_PARAMETER_ERROR.getCode()); + status.put("msg", "音色ID参数异常"); + resultMap.put("status", status); + return resultMap; + } + + String text = params.get("gen_txt"); + if (StringUtils.isBlank(text)) { + resultMap.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + resultMap.put("msg", "需要生成的文字不能为空"); + return resultMap; } - if (Integer.parseInt(params.get("speed")) == -1) { - param.setSpeed(0); + String speedStr = params.get("speed"); + Integer speed = null; + try{ + speed = Integer.parseInt(speedStr); + }catch(Exception e){} + + Map data = wxCVoiceService.voicePreview(voiceId,voiceStyle,text,speed); + if(data != null){ + resultMap.put("data", data); + + status.put("code", 1000); + status.put("msg", "success"); + resultMap.put("status", status); + return resultMap; } - param.setSpeed(Integer.parseInt(params.get("speed"))); - param.setVoice_id(params.get("voice_id")); - param.setVoice_style(params.get("voice_style")); - param.setGen_txt(params.get("gen_txt")); - Map resultMap = wxCVoiceService.voicePreview(param); - Map info = new HashMap<>(); - info.put("log_id", id); - info.put("server_type", "audio tts"); - resultMap.put("info", info); + status.put("code", ErrorCode.SYS_PARAMETER_NOT_NULL.getCode()); + status.put("msg", "获取tts 异常"); + resultMap.put("status", status); return resultMap; } @@ -330,7 +385,6 @@ public class UserLiveController extends BaseController { public ResultData chooseType(Long id) { logger.debug("[" + getIpAddr() + "] MouldPatchController::chooseType"); List voiceInfos = wxCVoiceService.chooseType(id); - System.out.println("voiceInfos = " + voiceInfos); - return new ResultData(wxCVoiceService.chooseType(id)); + return new ResultData(voiceInfos); } } diff --git a/suimangCApi/src/main/resources/application-dev.yml b/suimangCApi/src/main/resources/application-dev.yml index 83ec583..34fe0f0 100644 --- a/suimangCApi/src/main/resources/application-dev.yml +++ b/suimangCApi/src/main/resources/application-dev.yml @@ -190,6 +190,7 @@ logging: suimang: oral_broadcasting: http://111.198.0.15:22266 + video_tts: http://111.198.0.15:22222 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 digital_avatar: http://nas.pucao.cn:2005 diff --git a/suimangCApi/src/main/resources/application-prod.yml b/suimangCApi/src/main/resources/application-prod.yml index 8ba888b..11ebb74 100644 --- a/suimangCApi/src/main/resources/application-prod.yml +++ b/suimangCApi/src/main/resources/application-prod.yml @@ -145,6 +145,7 @@ logging: suimang: oral_broadcasting: http://111.198.0.15:22266 + video_tts: http://111.198.0.15:22222 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 digital_avatar: http://111.198.0.15:22200 diff --git a/suimangSchedule/src/main/resources/application-dev.yml b/suimangSchedule/src/main/resources/application-dev.yml index d4669fc..09b46ef 100644 --- a/suimangSchedule/src/main/resources/application-dev.yml +++ b/suimangSchedule/src/main/resources/application-dev.yml @@ -193,6 +193,7 @@ logging: suimang: oral_broadcasting: http://nas.pucao.cn:2001 + video_tts: http://111.198.0.15:22222 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 digital_avatar: http://nas.pucao.cn:2005 diff --git a/suimangSchedule/src/main/resources/application-prod.yml b/suimangSchedule/src/main/resources/application-prod.yml index 83e1c3f..149b481 100644 --- a/suimangSchedule/src/main/resources/application-prod.yml +++ b/suimangSchedule/src/main/resources/application-prod.yml @@ -149,6 +149,7 @@ logging: suimang: oral_broadcasting: http://111.198.0.15:22266 + video_tts: http://111.198.0.15:22222 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 digital_avatar: http://111.198.0.15:22200 diff --git a/suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java b/suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java index 201a62e..1c2d76a 100644 --- a/suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java +++ b/suimangService/src/main/java/com/iformall/service/WxCUserAuthorityService.java @@ -5,5 +5,7 @@ import com.iformall.common.ResultData; import java.util.Map; public interface WxCUserAuthorityService { + Map getAuthor(Long id, String code, Integer type, Long resourceId); + } diff --git a/suimangService/src/main/java/com/iformall/service/WxCVideoService.java b/suimangService/src/main/java/com/iformall/service/WxCVideoService.java index 0d96c1c..84674f8 100644 --- a/suimangService/src/main/java/com/iformall/service/WxCVideoService.java +++ b/suimangService/src/main/java/com/iformall/service/WxCVideoService.java @@ -8,7 +8,7 @@ import java.util.Map; public interface WxCVideoService { - Map getById(Long id) throws Exception; + Map getById(Long userId) throws Exception; WxCVideoTable selectOne(Long id, long resource_id); } diff --git a/suimangService/src/main/java/com/iformall/service/WxCVoiceService.java b/suimangService/src/main/java/com/iformall/service/WxCVoiceService.java index f1b86ed..4c11bc3 100644 --- a/suimangService/src/main/java/com/iformall/service/WxCVoiceService.java +++ b/suimangService/src/main/java/com/iformall/service/WxCVoiceService.java @@ -8,9 +8,11 @@ import java.util.List; import java.util.Map; public interface WxCVoiceService { - Map getById(Long id,String phone); + + Map getById(Long userId); List chooseType(Long id); - Map voicePreview(AiPreviewParam aiPreviewParam); + Map voicePreview(Long voiceId, String voiceStyle, String text, Integer speed); + } diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java index 868a141..1c823fc 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxCUserAuthorityServiceImpl.java @@ -19,8 +19,9 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService { @Override public Map getAuthor(Long id, String code, Integer type, Long resourceId) { - List resultList = new ArrayList(); + HashMap authorVos = new HashMap<>(); + List resultList = new ArrayList(); if (type == 0) { //查询数字人相关权限 @@ -31,41 +32,9 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService { resultList = wxCUserAuthorityMapper.getAuthorVoice(id, 1, resourceId); } - if (resourceId == null || resourceId == -1) { - //若资源id没有传入那就展示所有当前类型资源权限 - HashMap info = new HashMap<>(); - HashMap status = new HashMap<>(); - List authorList = new ArrayList(); - for (WxCUserAuthority wxCUserAuthority : resultList) { - HashMap data = new HashMap<>(); - data.put("username", wxCUserAuthority.getUserName()); - data.put("type", wxCUserAuthority.getType()); - data.put("resource_id", wxCUserAuthority.getResourceId()); - data.put("class", wxCUserAuthority.getClassType()); - data.put("current_time", new Date(System.currentTimeMillis() / 1000)); - data.put("expire_time", wxCUserAuthority.getExpireTime().getTime() / 1000); - authorList.add(data); - } - authorVos.put("authorList", authorList); - info.put("log_id", id); - info.put("server_type", "author"); - authorVos.put("info", info); - status.put("code", 1000); - status.put("msg", "success"); - authorVos.put("status", status); - return authorVos; - } - HashMap data = new HashMap<>(); - HashMap info = new HashMap<>(); - HashMap status = new HashMap<>(); - if (resultList.size() == 0) { - status.put("code", 5001); - status.put("msg", "没有该资源的权限"); - authorVos.put("status", status); - return authorVos; - } - for (WxCUserAuthority wxCUserAuthority : resultList) { - data.put("username", wxCUserAuthority.getUserName()); + if (resultList.size() == 1) { + HashMap data = new HashMap<>(); + WxCUserAuthority wxCUserAuthority = resultList.get(0); data.put("type", wxCUserAuthority.getType()); data.put("resource_id", wxCUserAuthority.getResourceId()); @@ -75,14 +44,8 @@ public class WxCUserAuthorityServiceImpl implements WxCUserAuthorityService { data.put("class", EnumClassType.SHARE.getCode()); data.put("current_time", new Date(System.currentTimeMillis() / 1000)); data.put("expire_time", wxCUserAuthority.getExpireTime().getTime() / 1000); + return data; } - authorVos.put("data", data); - info.put("log_id", id); - info.put("server_type", "author"); - authorVos.put("info", info); - status.put("code", 1000); - status.put("msg", "success"); - authorVos.put("status", status); - return authorVos; + return null; } } diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java index fc7b6e9..31ecae1 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxCVideoServiceImpl.java @@ -39,13 +39,12 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer WxCVideoMapper wxCVideoMapper; @Override - public Map getById(Long id) { - List TemplateVideo = wxCVideoMapper.getById(id); - Map avatarVos = new HashMap(); + public Map getById(Long userId) { Map data = new HashMap(); + + List TemplateVideo = wxCVideoMapper.getById(userId); List authorlist = new ArrayList(); for (WxCVideoTable wxCVideoTable : TemplateVideo) { - data.put("username", wxCVideoTable.getUserName()); data.put("current_time", new Date(System.currentTimeMillis() / 1000)); Map avatar = new HashMap(); @@ -63,7 +62,6 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer avatar.put("avatar_model_md5", wxCVideoTable.getModelMd5()); } - try { File preinfoFile = new File(wxCVideoTable.getPreInfoPath()); avatar.put("avatar_preinfo_md5", getFileMD5(preinfoFile)); @@ -75,19 +73,10 @@ public class WxCVideoServiceImpl implements WxCVideoService, IExcelExportServer avatar.put("expire_time", wxCVideoTable.getExpireTime().getTime() / 1000); avatar.put("class", wxCVideoTable.getClassType()); authorlist.add(avatar); - data.put("authorlist", authorlist); } - avatarVos.put("data", data); - Map info = new HashMap(); - Map status = new HashMap(); - info.put("log_id", id); - info.put("server_type", "avatar list"); - status.put("code", 1000); - status.put("msg", "success"); - avatarVos.put("info", info); - avatarVos.put("status", status); - - return avatarVos; + data.put("authorlist", authorlist); + + return data; } @Override diff --git a/suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java b/suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java index c3180a7..26ef18b 100644 --- a/suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/impl/WxCVoiceServiceImpl.java @@ -17,9 +17,12 @@ import com.iformall.mapper.WxCVoiceMapper; import com.iformall.service.WxCVoiceService; import com.iformall.sm.AiPreviewParam; import com.iformall.sm.AiPreviewResult; +import com.iformall.sm.AiTtsHelper; import com.iformall.sm.AiVideoHelper; import com.iformall.utils.Constant; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -28,6 +31,7 @@ import java.util.*; @Service public class WxCVoiceServiceImpl implements WxCVoiceService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCVoiceMapper wxCVoiceMapper; @@ -43,11 +47,10 @@ public class WxCVoiceServiceImpl implements WxCVoiceService { @Override - public Map getById(Long id,String phone) { - List resultList = wxCVoiceMapper.getById(id); - HashMap result = new HashMap<>(); + public Map getById(Long userId) { HashMap data = new HashMap<>(); - data.put("username", phone); + + List resultList = wxCVoiceMapper.getById(userId); data.put("current_time", new Date(System.currentTimeMillis() / 1000)); // List audioList = new ArrayList(); Map> audioList = new HashMap(); @@ -102,44 +105,10 @@ public class WxCVoiceServiceImpl implements WxCVoiceService { } data.put("audioList", new ArrayList<>(audioList.values())); - - result.put("data", data); - HashMap info = new HashMap<>(); - HashMap status = new HashMap<>(); - info.put("log_id", id); - info.put("server_type", "audio list"); - result.put("info", info); - status.put("code", 1000); - status.put("msg", "success"); - result.put("status", status); - return result; - } - @Override - public Map voicePreview(AiPreviewParam aiPreviewParam) { - VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper().eq(VoiceInfo::getIsDel, 0).eq(VoiceInfo::getId, aiPreviewParam.getVoice_id())); - if (ObjectUtils.isEmpty(voiceInfo)) { - Map status = new HashMap<>(); - status.put("code", ErrorCode.SYS_SERVER_ERROR.getCode()); - status.put("msg", "声音信息不存在"); - return status; - } - AiPreviewParam param = new AiPreviewParam(); - param.setGen_txt(aiPreviewParam.getGen_txt().replaceAll(Constant.text_pause, "[*]")); - param.setVoice_id(voiceInfo.getMouldSmId()); - param.setVoice_style(StringUtils.isBlank(aiPreviewParam.getVoice_style()) ? EnumSpeakType.default_0.getMessage() : aiPreviewParam.getVoice_style()); - param.setGender(voiceInfo.getSex() == 1 ? "male" : "female"); - AiPreviewResult result = AiVideoHelper.voicePreview(param); - Map resultMap = new HashMap<>(); - Map data = new HashMap<>(); - data.put("ttsurl", result.getUrl()); - Map status = new HashMap<>(); - status.put("code", 1000); - status.put("msg", "success"); - resultMap.put("data", data); - resultMap.put("status", status); - return resultMap; + return data; } + @Override public List chooseType(Long id) { List voiceInfos = voiceMapper.selectList( @@ -173,4 +142,27 @@ public class WxCVoiceServiceImpl implements WxCVoiceService { }); return voiceInfos; } + + @Override + public Map voicePreview(Long voiceId, String voiceStyle, String text, Integer speed) { + VoiceInfo voiceInfo = voiceMapper.selectById(voiceId); + if(voiceInfo == null){ + logger.error("未查询到声音{}"+voiceId); + return null; + } + + AiPreviewParam param = new AiPreviewParam(); + param.setVoice_id(voiceInfo.getMouldSmId()); + param.setVoice_style(StringUtils.isBlank(voiceStyle) ? EnumSpeakType.default_0.getMessage() : voiceStyle); + param.setGen_txt(text.replaceAll(Constant.text_pause, "[*]")); + param.setSpeed(speed==null?100:speed); + AiPreviewResult aiTtsResult = AiTtsHelper.voicePreview(param); + if(!aiTtsResult.isSuccess()){ + logger.error("tts 预览失败{}"+aiTtsResult.getMsg()); + return null; + } + Map data = new HashMap<>(); + data.put("ttsurl", aiTtsResult.getUrl()); + return data; + } } diff --git a/suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java b/suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java new file mode 100644 index 0000000..e4b3fab --- /dev/null +++ b/suimangService/src/main/java/com/iformall/sm/AiTtsHelper.java @@ -0,0 +1,75 @@ +package com.iformall.sm; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.iformall.utils.Base64Util; +import com.iformall.utils.HttpUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class AiTtsHelper { + + public static String video_tts; + @Value("${suimang.video_tts}") + public void setVideoTts(String video_tts){ + this.video_tts = video_tts; + } + + + public static String doPost(String url, String params) { + return HttpUtil.doAiVideoPost(url,params); + } + + + public static AiPreviewResult voicePreview(AiPreviewParam param) { + String response = doPost(video_tts + "/tts_wav", JSONObject.toJSONString(param)); + log.info("TTS音色预览 end response:" + response); + AiPreviewResult result = new AiPreviewResult(); + + if (StringUtils.isBlank(response)) { + result.setSuccess(false); + result.setMsg("(MetaService)TTS音色预览失败,请稍后重试"); + return result; + } + JSONObject jsonObject = JSON.parseObject(response); + JSONObject status = jsonObject.getJSONObject("status"); + + Integer code = status.getInteger("code"); + String msg = status.getString("msg"); + if (code == null) { + result.setSuccess(false); + result.setMsg("(MetaService)TTS音色预览异常,请稍后重试"); + return result; + } + if (code.intValue() == 3000) { + JSONObject data = jsonObject.getJSONObject("data"); + String strURL = data.getString("url"); + String time = data.getString("time"); + + result.setCode(200); + result.setSuccess(true); + result.setUrl(video_tts + strURL); + result.setTime(Double.valueOf(time)); + String resultMsg = result.getMsgInfo(code, msg); + result.setMsg(resultMsg); + } else { + result.setCode(code); + result.setSuccess(false); + String resultMsg = result.getMsgInfo(code, msg); + result.setMsg(resultMsg); + } + return result; + } + + + + public static void main(String[] args) { + + } + + +} From 23d69fad5cd239ed7dea196d6b81abdb3810bd15 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Fri, 27 Oct 2023 14:23:23 +0800 Subject: [PATCH 39/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9api?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/config/Swagger2Config.java | 122 +++++++++--------- .../com/iformall/config/WebMvcConfig.java | 4 +- .../com/iformall/dto/GenerateVideoDTO.java | 30 +++++ .../com/iformall/dto/PreviewVideoDTO.java | 15 +++ .../interceptor/AuthorizationInterceptor.java | 3 + .../src/main/resources/application-dev.yml | 1 + .../iformall/config/SwaggerConfiguration.java | 2 +- .../java/com/iformall/sm/AiVideoHelper.java | 2 + 8 files changed, 116 insertions(+), 63 deletions(-) diff --git a/open-api/src/main/java/com/iformall/config/Swagger2Config.java b/open-api/src/main/java/com/iformall/config/Swagger2Config.java index 2118b9d..6d22331 100644 --- a/open-api/src/main/java/com/iformall/config/Swagger2Config.java +++ b/open-api/src/main/java/com/iformall/config/Swagger2Config.java @@ -1,61 +1,61 @@ -package com.iformall.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.paths.RelativePathProvider; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -import javax.servlet.ServletContext; -import java.util.ArrayList; -import java.util.List; - -//参考:http://blog.csdn.net/catoop/article/details/50668896 -@Configuration -@EnableSwagger2 -public class Swagger2Config { - - @Autowired - private ServletContext servletContext; - - @Bean - public Docket createRestApi() { - ParameterBuilder tokenPar = new ParameterBuilder(); - List pars = new ArrayList(); - //增加一个request的header参数 - tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); - pars.add(tokenPar.build()); - return new Docket(DocumentationType.SWAGGER_2) - .apiInfo(apiInfo()) - .select() - .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) - .paths(PathSelectors.any()) - .build() - .globalOperationParameters(pars) - .pathProvider(new RelativePathProvider(servletContext) { - @Override - public String getApplicationBasePath() { - return "/api"; - } - }); - } - - private ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("c端 api") - .description("c api") - .termsOfServiceUrl("http://localhost:7000") - .version("2.0") - .build(); - } - -} \ No newline at end of file +//package com.iformall.config; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import springfox.documentation.builders.ApiInfoBuilder; +//import springfox.documentation.builders.ParameterBuilder; +//import springfox.documentation.builders.PathSelectors; +//import springfox.documentation.builders.RequestHandlerSelectors; +//import springfox.documentation.schema.ModelRef; +//import springfox.documentation.service.ApiInfo; +//import springfox.documentation.service.Parameter; +//import springfox.documentation.spi.DocumentationType; +//import springfox.documentation.spring.web.paths.RelativePathProvider; +//import springfox.documentation.spring.web.plugins.Docket; +//import springfox.documentation.swagger2.annotations.EnableSwagger2; +// +//import javax.servlet.ServletContext; +//import java.util.ArrayList; +//import java.util.List; +// +////参考:http://blog.csdn.net/catoop/article/details/50668896 +//@Configuration +//@EnableSwagger2 +//public class Swagger2Config { +// +// @Autowired +// private ServletContext servletContext; +// +// @Bean +// public Docket createRestApi() { +// ParameterBuilder tokenPar = new ParameterBuilder(); +// List pars = new ArrayList(); +// //增加一个request的header参数 +// tokenPar.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); +// pars.add(tokenPar.build()); +// return new Docket(DocumentationType.SWAGGER_2) +// .apiInfo(apiInfo()) +// .select() +// .apis(RequestHandlerSelectors.basePackage("com.iformall.controller")) +// .paths(PathSelectors.any()) +// .build() +// .globalOperationParameters(pars) +// .pathProvider(new RelativePathProvider(servletContext) { +// @Override +// public String getApplicationBasePath() { +// return "/api"; +// } +// }); +// } +// +// private ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("c端 api") +// .description("c api") +// .termsOfServiceUrl("http://localhost:7000") +// .version("2.0") +// .build(); +// } +// +//} \ No newline at end of file diff --git a/open-api/src/main/java/com/iformall/config/WebMvcConfig.java b/open-api/src/main/java/com/iformall/config/WebMvcConfig.java index c0e520d..13dc758 100644 --- a/open-api/src/main/java/com/iformall/config/WebMvcConfig.java +++ b/open-api/src/main/java/com/iformall/config/WebMvcConfig.java @@ -45,7 +45,9 @@ public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("swagger-ui.html") +// registry.addResourceHandler("swagger-ui.html") +// .addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("doc.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); diff --git a/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java b/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java index f3a9c80..8ff8c62 100644 --- a/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java +++ b/open-api/src/main/java/com/iformall/dto/GenerateVideoDTO.java @@ -5,9 +5,39 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +/** + * @author xmzhao71 + * @date 2023-10-27 + */ @ApiModel(value = "生成视频请求参数") @Data public class GenerateVideoDTO { + /** + * 请求参数 + * { + * "gen_txt":"大家好,我是渣渣辉。是兄弟就来贪玩蓝月砍我一刀。望我,再望我,还望我,再望我就把你喝掉。", + * "video_template_id":"16938690720846922_vorSBabt", + * "voice_id":"zh-CN-XiaomengNeural", + * "voice_style":"chat", + * "video_files":{ + * "back_ground":{ + * "image":"", + * "type":"vertical" + * }, + * "digital_human":{ + * "coord":[ + * -202, + * 7 + * ], + * "level":1, + * "ratio":1.3 + * } + * }, + * "subtitle":{ + * "enabled":0 + * } + * } + */ @ApiModelProperty(value = "视频唯一标识") private Long id; @ApiModelProperty(value = "生成视频参数") diff --git a/open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java b/open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java index 749e3b3..e2c7c1b 100644 --- a/open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java +++ b/open-api/src/main/java/com/iformall/dto/PreviewVideoDTO.java @@ -5,6 +5,18 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +/** + * 请求参数 + * { + * "paperwork": "文案", + * "voiceId": "zh-CN-XiaomengNeural", + * "voiceStyle": "default", + * "gender": "male" + * } + * + * @author xmzhao71 + * @date 2023-10-27 + */ @ApiModel(value = "预览视频请求参数") @Data public class PreviewVideoDTO { @@ -14,12 +26,15 @@ public class PreviewVideoDTO { private String voiceId; @ApiModelProperty("声音风格名称") private String voiceStyle; + @ApiModelProperty("性别(male:男,female:女)") + private String gender; public static AiPreviewParam mappingParam(PreviewVideoDTO dto) { AiPreviewParam aiPreviewParam = new AiPreviewParam(); aiPreviewParam.setGen_txt(dto.getPaperwork()); aiPreviewParam.setVoice_id(dto.getVoiceId()); aiPreviewParam.setVoice_style(dto.getVoiceStyle()); + aiPreviewParam.setGender(dto.getGender()); return aiPreviewParam; } } diff --git a/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java b/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java index 169289b..d7b9ccc 100644 --- a/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java +++ b/open-api/src/main/java/com/iformall/interceptor/AuthorizationInterceptor.java @@ -38,6 +38,9 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (true) { + return true; + } response.setHeader("Content-type", "application/json;charset=UTF-8"); diff --git a/open-api/src/main/resources/application-dev.yml b/open-api/src/main/resources/application-dev.yml index a7d92fc..940b718 100644 --- a/open-api/src/main/resources/application-dev.yml +++ b/open-api/src/main/resources/application-dev.yml @@ -204,6 +204,7 @@ logging: suimang: oral_broadcasting: http://111.198.0.15:22266 + video_tts: http://111.198.0.15:22222 photo_speak: http://111.198.0.15:22299 photo_speak_hy: http://111.198.0.15:22288 digital_avatar: http://nas.pucao.cn:2005 diff --git a/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java index f8b7214..7d83072 100644 --- a/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java +++ b/suimang-swagger/src/main/java/com/iformall/config/SwaggerConfiguration.java @@ -47,7 +47,7 @@ public class SwaggerConfiguration { * @return {@link Docket} */ @Bean - public Docket api(ServletContext servletContext) { + public Docket docket(ServletContext servletContext) { // base-path处理 if (swaggerProperties.getBasePath().isEmpty()) { swaggerProperties.getBasePath().add(BASE_PATH); diff --git a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java index 1e622ec..b3df8fb 100644 --- a/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java +++ b/suimangService/src/main/java/com/iformall/sm/AiVideoHelper.java @@ -67,6 +67,7 @@ public class AiVideoHelper { videoParam.setCallback_url(callbackUrl + "/callback/oral/broadcasting"); log.info("生成视频start request:" + videoParam.neglectImgString()); + log.info("完整参数:{}", JSONObject.toJSONString(videoParam)); String response = doPost(oral_broadcasting+"/gen_dh_video", JSONObject.toJSONString(videoParam)); log.info("生成视频end response:"+response); @@ -159,6 +160,7 @@ public class AiVideoHelper { } public static AiPreviewResult voicePreview(AiPreviewParam param) { + log.info("TTS音色预览 start request:" + JSONObject.toJSONString(param)); String response = doPost(photo_speak + "/tts_wav", JSONObject.toJSONString(param)); log.info("TTS音色预览 end response:" + response); AiPreviewResult result = new AiPreviewResult(); From 4fbfabcbb1c8a8348946843b109b221108f36f47 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Fri, 27 Oct 2023 15:09:18 +0800 Subject: [PATCH 40/40] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E9=9F=B3?= =?UTF-8?q?=E8=89=B2=E9=A2=84=E8=A7=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/domain/vo/sm/PreviewVoiceVO.java | 11 +++++++++++ .../com/iformall/service/sm/VoiceInfoService.java | 6 ++---- .../service/sm/impl/VoiceInfoServiceImpl.java | 12 ++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/domain/vo/sm/PreviewVoiceVO.java diff --git a/suimangService/src/main/java/com/iformall/domain/vo/sm/PreviewVoiceVO.java b/suimangService/src/main/java/com/iformall/domain/vo/sm/PreviewVoiceVO.java new file mode 100644 index 0000000..c8cf05f --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/vo/sm/PreviewVoiceVO.java @@ -0,0 +1,11 @@ +package com.iformall.domain.vo.sm; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +@ApiModel(value = "音色预览请求参数") +@Data +public class PreviewVoiceVO { + private Double time; + private String url; +} diff --git a/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java index 00ed921..d285b2d 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java +++ b/suimangService/src/main/java/com/iformall/service/sm/VoiceInfoService.java @@ -1,10 +1,8 @@ package com.iformall.service.sm; -import com.iformall.common.ErrorCode; -import com.iformall.common.ResultData; +import com.iformall.domain.vo.sm.PreviewVoiceVO; import com.iformall.domain.po.sm.VoiceInfo; -import com.iformall.domain.po.sm.VoiceLanguage; import com.iformall.sm.AiPreviewParam; import java.util.List; @@ -15,5 +13,5 @@ public interface VoiceInfoService { VoiceInfo getById(Long voiceMouldId); - Double previewVoice(AiPreviewParam aiPreviewParam); + PreviewVoiceVO previewVoice(AiPreviewParam aiPreviewParam); } diff --git a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java index 496ce20..41bd14e 100644 --- a/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java +++ b/suimangService/src/main/java/com/iformall/service/sm/impl/VoiceInfoServiceImpl.java @@ -2,14 +2,12 @@ package com.iformall.service.sm.impl; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Lists; import com.iformall.common.ErrorCode; -import com.iformall.common.ResultData; +import com.iformall.domain.vo.sm.PreviewVoiceVO; import com.iformall.domain.po.sm.VoiceInfo; import com.iformall.domain.vo.VoiceInfoVo; -import com.iformall.enums.EnumSex; import com.iformall.enums.EnumSpeakType; import com.iformall.exception.BizException; import com.iformall.file.aliyun.bean.AliyunOSSConfig; @@ -20,7 +18,6 @@ import com.iformall.utils.Constant; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.List; @@ -79,7 +76,7 @@ public class VoiceInfoServiceImpl implements VoiceInfoService { } @Override - public Double previewVoice(AiPreviewParam aiPreviewParam) { + public PreviewVoiceVO previewVoice(AiPreviewParam aiPreviewParam) { VoiceInfo voiceInfo = voiceMapper.selectOne(new LambdaQueryWrapper() .eq(VoiceInfo::getIsDel, 0) .eq(VoiceInfo::getId, aiPreviewParam.getVoice_id())); @@ -92,7 +89,10 @@ public class VoiceInfoServiceImpl implements VoiceInfoService { param.setGender(voiceInfo.getSex() == 1 ? "male" : "female"); AiPreviewResult result = AiVideoHelper.voicePreview(param); if (result.isSuccess()){ - return result.getTime(); + PreviewVoiceVO vo = new PreviewVoiceVO(); + vo.setTime(result.getTime()); + vo.setUrl(result.getUrl()); + return vo; } throw new BizException(result.getCode(), result.getMsgInfo(result.getCode(),result.getMsg())); }