From aa580f4ced163314aa7eb1bae4dbc7598b12f20d Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 16:07:31 +0800 Subject: [PATCH] =?UTF-8?q?[B=E7=AB=AF=E9=80=80=E6=AC=BE][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:B=E7=AB=AF=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=A0=B8?= =?UTF-8?q?=E9=94=80=E9=80=80=E6=AC=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/config/WebMvcConfig.java | 21 ++++++++++++++++ .../com/simple/controller/BaseController.java | 13 ++++++++++ .../simple/controller/WxCouponController.java | 4 +-- .../controller/WxCouponOrderController.java | 25 ++++++++++++++++--- .../java/com/simple/common/ErrorCode.java | 7 ++++++ .../impl/WxCouponOrderServiceImpl.java | 2 +- .../impl/WxRefundOrderServiceImpl.java | 14 ++++++++--- 7 files changed, 75 insertions(+), 11 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java b/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java index 4ba634305..07acb359e 100644 --- a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java +++ b/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java @@ -1,14 +1,20 @@ package com.simple.config; +import com.alibaba.fastjson.serializer.SerializeConfig; +import com.alibaba.fastjson.serializer.ToStringSerializer; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.simple.interceptor.AuthorizationInterceptor; import com.simple.resolver.LoginUserHandlerMethodArgumentResolver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import java.math.BigInteger; import java.util.List; /** @@ -44,4 +50,19 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter { //registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/"); } + + @Override + public void configureMessageConverters(List> converters) { + FastJsonHttpMessageConverter fastConverter = + new FastJsonHttpMessageConverter(); + + FastJsonConfig fastJsonConfig = new FastJsonConfig(); + SerializeConfig serializeConfig = SerializeConfig.globalInstance; + serializeConfig.put(BigInteger.class, ToStringSerializer.instance); + serializeConfig.put(Long.class, ToStringSerializer.instance); + serializeConfig.put(Long.TYPE, ToStringSerializer.instance); + fastJsonConfig.setSerializeConfig(serializeConfig); + fastConverter.setFastJsonConfig(fastJsonConfig); + converters.add(fastConverter); + } } \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java b/mallinkBApi/src/main/java/com/simple/controller/BaseController.java index 36ad754cc..3120c1fa3 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/BaseController.java @@ -88,4 +88,17 @@ public class BaseController { service.setWxMaConfig(config); return service; } + + public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) { + WxMaInMemoryConfig config = new WxMaInMemoryConfig(); + config.setAppid(appinfo.getAppId()); + config.setSecret(appinfo.getSecret()); + config.setToken(appinfo.getToken()); + config.setAesKey(appinfo.getAesKey()); + config.setMsgDataFormat(appinfo.getMsgDataFormat()); + + WxMaService service = new WxMaServiceImpl(); + service.setWxMaConfig(config); + return service; + } } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java index dd39b05b8..a74c1a659 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java @@ -19,11 +19,11 @@ import io.swagger.annotations.ApiOperation; @RequestMapping("wxCoupon") public class WxCouponController extends BaseController { + private Logger logger = Logger.getLogger(WxCouponController.class); + @Autowired private WxCouponService wxCouponService; - private Logger logger = Logger.getLogger(WxCouponController.class); - @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 94dde5fec..82dfed688 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController -@RequestMapping("wxCouponOrder") +@RequestMapping("/api/couponOrder") @Api(description="核销和用户卡券查询接口") public class WxCouponOrderController extends BaseController { @@ -88,7 +88,16 @@ public class WxCouponOrderController extends BaseController logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); } - return wxCouponOrderService.verify(couponOrderId, getUser().getId()); + try { + ResultData rd = wxCouponOrderService.verify(couponOrderId, getUser().getId()); + return rd; + } catch (MallinkException e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("核销异常: " + e.getMessage()); + return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); + } } @ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}") @@ -104,10 +113,18 @@ public class WxCouponOrderController extends BaseController try { couponOrderId = Long.valueOf(couponOrderIdStr); } catch (NumberFormatException e) { - couponOrderId = 0L; logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); } - return wxCouponOrderService.refund(couponOrderId, getUser().getId()); + try { + ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId()); + return rd; + } catch (MallinkException e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error("退券异常: " + e.getMessage()); + return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage()); + } } } diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 8ab875756..a1f94a842 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -108,6 +108,13 @@ public enum ErrorCode{ APP_ID_NOT_FOUND(12020, "APPID没找到"), MCH_INFO_NOT_FOUND(12021, "商户信息没找到"), MCH_INFO_NOT_EQUAL(12022, "商户信息不对应"), + API_KEY_NOT_FOUND(12023, "支付密钥未配置"), + CERT_PATH_NOT_FOUND(12024, "双向证书未配置"), + + /** + * 核销 + */ + VERIFY_ERROR(12050, "核销异常") ; diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index b47b9e890..661b413a6 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -103,7 +103,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) { logger.error("已经核销过的券: couponOrder-" + couponOrderId); - return new ResultData(ErrorCode.COUPON_ORDER_IS_USED); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); } try { wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index 4b6d33815..d1915a8f4 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -23,6 +23,7 @@ import com.simple.service.WxRefundOrderService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; import com.simple.utils.XmlUtil; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -210,6 +211,15 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { @Override public ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, EnumPayWay payWay) { + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (StringUtils.isBlank(payAccount.getApiKey())) { + logger.error("支付密钥为空"); + throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(), "支付密钥为空,请联系商城管理员"); + } + if (StringUtils.isBlank(payAccount.getCertPath())) { + logger.error("证书路径为空"); + throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员"); + } // check 是否有退款订单 List list = wxRefundOrderMapper.findList(record); if (list.size() > 0) { @@ -246,8 +256,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } - // TODO check 可退券???? - // 创建退款订单 final IdWorker idWorker = IdWorker.get(); Long id = idWorker.nextId(); @@ -274,8 +282,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.DB_FAIL); } - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - // 退款申请 String noncestr = Utility.generate32UUID(); WxRefundOrderP wxRefundOrderP = new WxRefundOrderP();