瀏覽代碼

Merge branch 'master' of hyq/cuspay into master

project 7 年之前
父節點
當前提交
a0ec5f67b9

+ 150 - 0
src/main/java/com/emato/cuspay/common/msg/Result.java

@@ -0,0 +1,150 @@
+package com.emato.cuspay.common.msg;
+
+import com.google.common.base.Strings;
+
+
+public class Result {
+    /**
+     * 状态码, 正常0, 失败1, 未登录2, 个位数是保留状态码, 其他业务相关状态码10以上
+     */
+    private String code = ResultCodeEnum.SUCCESS.getCode();
+
+    /**
+     * 消息
+     */
+    private String msg;
+
+    /**
+     * 业务数据
+     */
+    private Object data;
+
+    private String sign;
+
+    private Result() {
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+
+    public String getMsg() {
+        return msg;
+    }
+
+
+    public Object getData() {
+        return data;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static Builder builder(String code, String msg) {
+        return new Builder(code, msg);
+    }
+
+    public static Builder builder(String code, String msg, Object data) {
+        return new Builder(code, msg, data);
+    }
+
+    public static Builder builder(String code, String msg, String sign, Object data) {
+        return new Builder(code, msg, sign, data);
+    }
+
+    //---------- 直接返回结果 ----------
+
+    public static Result success(Object object) {
+        return new Builder(ResultCodeEnum.SUCCESS.getCode(), ResultCodeEnum.SUCCESS.getMsg(), object).build();
+    }
+
+    public static Result success(String code, String msg, Object object) {
+        return new Builder(code, msg, object).build();
+    }
+
+    public static Result success(String msg) {
+        return new Builder(ResultCodeEnum.SUCCESS.getCode(), msg).build();
+    }
+
+    public static Result error(String code, String msg) {
+        return new Builder(code, msg).build();
+    }
+
+    public static Result error(String msg) {
+        return new Builder(ResultCodeEnum.FAILURE.getCode(), msg).build();
+    }
+
+    public static Result error(String code, String msg, Object object) {
+        return new Builder(code, msg, object).build();
+    }
+
+    /**
+     * 消息构建器类
+     */
+    public static class Builder {
+        private String code;
+        private String msg;
+        private Object data;
+        private String sign;
+
+        public Builder() {
+            this.code = ResultCodeEnum.SUCCESS.getCode();
+            this.msg = ResultCodeEnum.SUCCESS.getMsg();
+            this.data = null;
+        }
+
+        public Builder(String code, String msg) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+        }
+
+        public Builder(String code, String msg, Object extend) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+            this.data = extend;
+        }
+
+        public Builder(String code, String msg, String sign, Object extend) {
+            this.code = Strings.isNullOrEmpty(code) ? ResultCodeEnum.SUCCESS.getCode() : code;
+            this.msg = Strings.isNullOrEmpty(msg) ? ResultCodeEnum.SUCCESS.getMsg() : msg;
+            this.sign = sign;
+            this.data = extend;
+        }
+
+        public Result build() {
+            Result message = new Result();
+            message.code = this.code;
+            message.msg = this.msg;
+            message.data = this.data;
+            message.sign = this.sign;
+            return message;
+        }
+
+        public Builder setCode(String code) {
+            this.code = code;
+            return this;
+        }
+
+        public Builder setMsg(String msg) {
+            this.msg = msg;
+            return this;
+        }
+
+        public Builder setData(Object data) {
+            this.data = data;
+            return this;
+        }
+    }
+
+}

+ 36 - 0
src/main/java/com/emato/cuspay/common/msg/ResultCodeEnum.java

@@ -0,0 +1,36 @@
+package com.emato.cuspay.common.msg;
+
+public enum ResultCodeEnum {
+	/** 成功 */
+	SUCCESS("0", "成功"),
+	/** 失败 */
+	FAILURE("-1", "失败");
+
+	/** 状态码 */
+	private String code;
+
+	/** 信息 */
+	private String msg;
+
+	private ResultCodeEnum(String code, String msg){
+        this.code = code;
+        this.msg = msg;
+    }
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+}

+ 14 - 8
src/main/java/com/emato/cuspay/wx/declare/WxCusDeclare.java

@@ -161,17 +161,24 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
             //通过http post请求 发送xml数据
             Request request = OkHttpUtils.buildRequest(declareURL,
                         RequestBody.create(MediaType.parse("application/xml; charset=utf-8"), xml));
-            String result = null;
+
+            WxResponseMsg wxResponseMsgDto = null;
             try {
-                result = OkHttpUtils.post(request);
+                String result = OkHttpUtils.post(request);
                 StringReader reader = new StringReader(result);
-                WxResponseMsg wxResponseMsgDto = JAXB.unmarshal(reader, WxResponseMsg.class);
+                wxResponseMsgDto = JAXB.unmarshal(reader, WxResponseMsg.class);
                 logger.info("result:"+result + "wx response message pojo:"+wxResponseMsgDto);
                 if (wxResponseMsgDto == null) {
                     throw new IOException("http请求["+declareURL+"]响应结果为空" );
                 }
+            } catch (IOException e) {
+                logger.error("数据请求异常,支付单请求数据为xml{}", xml, e);
+                WxPayError wxPayError = createWxPayError(wxCbPayDoc);
+                errors.add(wxPayError);
+            }
 
-                wxCbPayDoc.setResultCode(wxResponseMsgDto.getReturnCode());
+            try {
+                wxCbPayDoc.setResultCode(wxResponseMsgDto.getResultCode());
                 wxCbPayDoc.setReturnCode(wxResponseMsgDto.getReturnCode());
                 wxCbPayDoc.setReturnMsg(wxResponseMsgDto.getReturnMsg());
                 ///返回状态码为失败
@@ -286,12 +293,11 @@ public class WxCusDeclare extends AbstractCusDeclare implements CusDeclare{
                                 .build();
                     merchNotis.add(merchNoti);
                 }
-
             } catch (Exception e) {
-                logger.error("数据请求异常的支付单请求数据为xml:"+xml, e);
-                WxPayError wxPayError = createWxPayError(wxCbPayDoc);
-                errors.add(wxPayError);
+                logger.error("更新支付单证入库信息状态异常", e);
+                return;
             }
+
         });
 
         //持久化商户通知数据

+ 5 - 1
src/main/java/com/emato/cuspay/wx/service/impl/WxCbPayDocServiceImpl.java

@@ -53,6 +53,8 @@ public class WxCbPayDocServiceImpl implements WxCbPayDocService {
             }
         } catch (Exception e) {
             logger.error("查询商户支付配置信息异常", e);
+            return  new ResponseMessage.Builder().setCode(ResponseStatus.ERROR.getItem()).setMsg("查询商户支付配置信息异常")
+                    .build();
         }
 
         try {
@@ -66,6 +68,8 @@ public class WxCbPayDocServiceImpl implements WxCbPayDocService {
             }
         } catch (Exception e) {
             logger.error("新增支付单入库信息异常", e);
+            return  new ResponseMessage.Builder().setCode(ResponseStatus.ERROR.getItem()).setMsg("新增支付单入库信息异常")
+                    .build();
         }
         return  new ResponseMessage.Builder().setCode(ResponseStatus.ERROR.getItem()).setMsg("入库失败")
                 .build();
@@ -79,7 +83,7 @@ public class WxCbPayDocServiceImpl implements WxCbPayDocService {
         try {
             return wxCbPayDocMapper.updateByPrimaryKeySelective(wxCbPayDoc);
         } catch (Exception e) {
-            logger.error("更新支付单数据失败");
+            logger.error("更新支付单数据失败", e);
             throw new RuntimeException("更新支付单数据失败");
         }
     }