From 2e181c34fb96a6ff4fee1626f873f7314fedeea7 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 17:32:18 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5int=E6=94=B9=E4=B8=BAdateti?= =?UTF-8?q?me?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxPayOrderController.java | 2 +- .../java/com/simple/domain/po/WxPayOrder.java | 31 ++++++++++--------- .../com/simple/domain/po/WxRefundOrder.java | 12 +++---- .../com/simple/mapper/WxPayOrderMapper.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 27 ++++++++++++---- .../impl/WxRefundOrderServiceImpl.java | 7 +++-- .../main/java/com/simple/utils/Utility.java | 10 ++++++ .../resources/mapper/WxPayOrderMapper.xml | 8 ++--- .../resources/mapper/WxRefundOrderMapper.xml | 4 +-- 9 files changed, 65 insertions(+), 38 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 4bca943e5..a8fe6c438 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -116,7 +116,7 @@ public class WxPayOrderController extends BaseController { payOrder.setFailReason(reasonStr); try { wxPayOrderService.handlePayOrderStatusUpdate(payOrder); - return new ResultData(200, "支付状态更新成功"); + return new ResultData(Result.SUCCESS, "支付状态更新成功"); } catch (MallinkException e) { logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java index dc7b669fa..d7b697bae 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java @@ -16,7 +16,7 @@ public class WxPayOrder implements Serializable { protected Long id; @Transient - protected List ids; + protected List ids; @Transient protected String sortColumns; @@ -32,17 +32,18 @@ public class WxPayOrder implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List ids) { this.ids = ids; } - /***/ - @io.swagger.annotations.ApiModelProperty(value="",name="tenantId") + /*租户ID**/ + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") @@ -62,12 +63,12 @@ public class WxPayOrder implements Serializable { /*支付金额(分)**/ @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") private Integer payAmount; - /*支付发起时间(秒)**/ - @io.swagger.annotations.ApiModelProperty(value="支付发起时间(秒)",name="payTimeStart") - private Integer payTimeStart; - /*支付结束时间(秒)**/ - @io.swagger.annotations.ApiModelProperty(value="支付结束时间(秒)",name="payTimeEnd") - private Integer payTimeEnd; + /*支付发起时间**/ + @io.swagger.annotations.ApiModelProperty(value="支付发起时间",name="payTimeStart") + private Date payTimeStart; + /*支付结束时间**/ + @io.swagger.annotations.ApiModelProperty(value="支付结束时间",name="payTimeEnd") + private Date payTimeEnd; /*微信生成的订单号**/ @io.swagger.annotations.ApiModelProperty(value="微信生成的订单号",name="transactionId") private String transactionId; @@ -125,16 +126,16 @@ public class WxPayOrder implements Serializable { public void setPayAmount(Integer _payAmount) { payAmount = _payAmount; } - public Integer getPayTimeStart() { + public Date getPayTimeStart() { return payTimeStart; } - public void setPayTimeStart(Integer _payTimeStart) { + public void setPayTimeStart(Date _payTimeStart) { payTimeStart = _payTimeStart; } - public Integer getPayTimeEnd() { + public Date getPayTimeEnd() { return payTimeEnd; } - public void setPayTimeEnd(Integer _payTimeEnd) { + public void setPayTimeEnd(Date _payTimeEnd) { payTimeEnd = _payTimeEnd; } public String getTransactionId() { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java index 27f5a1e4d..c576f17cc 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java @@ -71,10 +71,10 @@ public class WxRefundOrder implements Serializable { private Integer refundFee; /*退款发起时间(秒)**/ @io.swagger.annotations.ApiModelProperty(value="退款发起时间(秒)",name="refundTimeStart") - private Integer refundTimeStart; + private Date refundTimeStart; /*退款结束时间(秒)**/ @io.swagger.annotations.ApiModelProperty(value="退款结束时间(秒)",name="refundTimeEnd") - private Integer refundTimeEnd; + private Date refundTimeEnd; /*支付渠道: 0-微信 1-支付宝 2-银联 **/ @io.swagger.annotations.ApiModelProperty(value="支付渠道: 0-微信 1-支付宝 2-银联 ",name="refundVendor") private Integer refundVendor; @@ -141,16 +141,16 @@ public class WxRefundOrder implements Serializable { public void setRefundFee(Integer _refundFee) { refundFee = _refundFee; } - public Integer getRefundTimeStart() { + public Date getRefundTimeStart() { return refundTimeStart; } - public void setRefundTimeStart(Integer _refundTimeStart) { + public void setRefundTimeStart(Date _refundTimeStart) { refundTimeStart = _refundTimeStart; } - public Integer getRefundTimeEnd() { + public Date getRefundTimeEnd() { return refundTimeEnd; } - public void setRefundTimeEnd(Integer _refundTimeEnd) { + public void setRefundTimeEnd(Date _refundTimeEnd) { refundTimeEnd = _refundTimeEnd; } public Integer getRefundVendor() { diff --git a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java index c5bbdb30e..9f64bd266 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java @@ -5,7 +5,7 @@ import com.simple.common.CommonMapper; import org.apache.ibatis.annotations.Param; import com.simple.domain.po.WxPayOrder; -public interface WxPayOrderMapper extends CommonMapper { +public interface WxPayOrderMapper extends CommonMapper { List findList(WxPayOrder wxPayOrder); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index c1bb5393f..07c218eb9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.simple.service.impl; +import java.text.ParseException; import java.util.*; import com.alibaba.fastjson.JSON; @@ -7,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; +import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; @@ -86,7 +88,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } // 2. check 是否有支付订单 Date currentDate = new Date(); - int currentTime = Utility.convertDate2TimeStamp(currentDate); List list = wxPayOrderMapper.findList(record); String payOrderNo = ""; if (list.size() <= 0) { @@ -98,8 +99,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setCUserId(user.getId()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); - record.setPayTimeStart(currentTime); - record.setPayTimeEnd(currentTime); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); // 支付单号 record.setPayOrderNo(payOrderNo); record.setPayAmount(order.getPayment()); @@ -132,8 +133,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl()); wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型 wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID - wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime)); - wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime + 15 * 60)); // 15分钟结束 + wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate)); + Date futureDate = new Date(); + futureDate.setTime(currentDate.getTime() + 15*60*1000); + wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString()); @@ -165,7 +168,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("paySign", signAgent); logger.info("back to UI: " +returnMap.toString()); - return new ResultData(200, "创建支付订单成功", returnMap); + return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); } else { JSONObject errObj = errorMap.getJSONObject(result_code); return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); @@ -220,6 +223,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } String payOrderNo = paramMap.get("out_trade_no"); + String timEndStr = paramMap.get("time_end"); Long payOrderId = Long.valueOf(payOrderNo); WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); if (payOrder == null) { @@ -238,6 +242,16 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return XmlUtil.parseDto2Xml(resultMap, ""); } + Date timeEnd = null; + + try { + timeEnd = Utility.getDateFromString(timEndStr); + } catch (ParseException e) { + logger.error("解析timeEnd失败"); + timeEnd = new Date(); + } + payOrder.setPayTimeEnd(timeEnd); + // 处理支付成功 handleOrderPaySuccess(payOrder, paramMap.get("transaction_id")); logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); @@ -348,6 +362,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { updateOrder.setOrderId(record.getOrderId()); updateOrder.setUpdateTime(currentDate); updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + updateOrder.setPayTimeEnd(currentDate); updateOrder.setFailReason(record.getFailReason()); wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); } catch (Exception e) { 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 d1915a8f4..1a50cf5d8 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; +import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumOrderStatus; @@ -270,7 +271,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { record.setCUserId(payOrder.getCUserId()); record.setTotalFee(payOrder.getPayAmount()); record.setRefundFee(payOrder.getPayAmount()); - record.setRefundTimeStart((int)(currentDate.getTime()/1000)); + record.setRefundTimeStart(currentDate); record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode()); int sqlRow = wxRefundOrderMapper.insertSelective(record); if(sqlRow != 1) { @@ -315,7 +316,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { try { record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); wxRefundOrderMapper.updateByPrimaryKey(record); - return new ResultData(200, "退款订单申请成功", returnMap); + return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap); } catch (Exception e) { logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); @@ -350,7 +351,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { String result_no = returnMap.get("result_code"); if ("SUCCESS".equals(result_no)) { String refund_id = returnMap.get("refund_id"); - return new ResultData(200, "退款", returnMap); + return new ResultData(Result.SUCCESS, "退款", returnMap); } else { wxRefundOrderMapper.updateByPrimaryKey(record); JSONObject errObj = errorRefundReqMap.getJSONObject(result_no); diff --git a/mallinkService/src/main/java/com/simple/utils/Utility.java b/mallinkService/src/main/java/com/simple/utils/Utility.java index e86068665..26e39c725 100644 --- a/mallinkService/src/main/java/com/simple/utils/Utility.java +++ b/mallinkService/src/main/java/com/simple/utils/Utility.java @@ -526,6 +526,16 @@ public final class Utility { return sf.format(((long) currentSec) * 1000); } + public static String getDataFormatStringYYYYMMDDHHmmss(Date currentDate) { + SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss"); + return sf.format(currentDate); + } + + public static Date getDateFromString(String timeEnd) throws ParseException { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + return sdf.parse(timeEnd); + } + public static String getOrderNo() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdf.format(new Date()); diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 60de75590..03f72127a 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -3,15 +3,15 @@ - + - - + + @@ -32,7 +32,7 @@ - and `tenant_id` = #{tenantId} + and `tenant_id` like concat('%', #{tenantId},'%') diff --git a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml index 7f86d8a5f..f20bf75d5 100644 --- a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml @@ -12,8 +12,8 @@ - - + +