提交 | 用户 | age
|
251add
|
1 |
package com.yc.abc.service; |
F |
2 |
|
|
3 |
import com.abc.pay.client.JSON; |
|
4 |
import com.abc.pay.client.ebus.PaymentResult; |
|
5 |
import com.yc.abc.entity.OrderEntity; |
|
6 |
import com.yc.api.bean.MatGroupEntity; |
|
7 |
import com.yc.api.bean.ProducParmBean; |
|
8 |
import com.yc.api.bean.T120330; |
|
9 |
import com.yc.exception.ApplicationException; |
|
10 |
import com.yc.sdk.shopping.entity.MatCodeEntity; |
|
11 |
import com.yc.service.BaseService; |
|
12 |
import com.yc.service.grid.GridServiceIfc; |
|
13 |
import org.apache.commons.lang3.StringUtils; |
|
14 |
import org.apache.logging.log4j.core.impl.ReusableLogEventFactory; |
|
15 |
import org.slf4j.Logger; |
|
16 |
import org.slf4j.LoggerFactory; |
|
17 |
import org.springframework.beans.factory.annotation.Autowired; |
|
18 |
import org.springframework.dao.DataAccessException; |
|
19 |
import org.springframework.dao.EmptyResultDataAccessException; |
|
20 |
import org.springframework.jdbc.core.BeanPropertyRowMapper; |
|
21 |
import org.springframework.stereotype.Service; |
81ff30
|
22 |
import org.springframework.transaction.annotation.Transactional; |
251add
|
23 |
|
81ff30
|
24 |
import java.io.UnsupportedEncodingException; |
251add
|
25 |
import java.util.ArrayList; |
81ff30
|
26 |
import java.util.Base64; |
251add
|
27 |
import java.util.List; |
F |
28 |
import java.util.Map; |
|
29 |
|
|
30 |
@Service |
|
31 |
public class AbcPayServiceImpl extends BaseService implements AbcPayServiceIfc { |
|
32 |
|
|
33 |
@Autowired |
|
34 |
GridServiceIfc mGridServiceIfc; |
|
35 |
private final Logger log = LoggerFactory.getLogger(this.getClass()); |
|
36 |
|
|
37 |
@Override |
|
38 |
public OrderEntity getOrder(String docCode) { |
|
39 |
try { |
|
40 |
return this.jdbcTemplate.queryForObject("set nocount on\n" + |
35603c
|
41 |
" select a.doccode as orderNo,a.SumAmount as amount,a.cltCode,a.cltName,b.companyName,a.onlinePaymentOneQRForAllUnid,a.onlinePaymentReturnCode \n" + |
F |
42 |
" from t150101H a join oCompany b on a.CompanyID=b.companyid where DocCode=?", new BeanPropertyRowMapper<>(OrderEntity.class), docCode); |
251add
|
43 |
}catch (EmptyResultDataAccessException e){ |
F |
44 |
return null; |
|
45 |
} |
|
46 |
} |
35603c
|
47 |
|
F |
48 |
@Override |
|
49 |
public void save150101OrderInfo(JSON json, String qrCodeUnid) { |
|
50 |
String sql="set nocount on\n" + |
|
51 |
" declare @ReturnCode varchar(20)=?,@ErrorMessage varchar(200)=?,@PaymentURL varchar(200)=?,@qrCodeUnid varchar(50)=?" + |
|
52 |
" update a set a.OnlinePaymentReturnCode=@ReturnCode,a.OnlinePaymentErrorMessage=@ErrorMessage,a.OnlinePaymentURL=@PaymentURL,a.OnlinePaymentOneQRForAllUnid=@qrCodeUnid from t150101H a where a.docCode=?"; |
|
53 |
jdbcTemplate.update(sql,json.GetKeyValue("ReturnCode"),json.GetKeyValue("ErrorMessage"),json.GetKeyValue("PaymentURL"),qrCodeUnid,json.GetKeyValue("OrderNo")); |
|
54 |
} |
|
55 |
|
81ff30
|
56 |
@Transactional(rollbackFor = Exception.class) |
251add
|
57 |
@Override |
F |
58 |
public void save150101Log(PaymentResult paymentResult) { |
|
59 |
String sql = "set nocount on\n" + |
81ff30
|
60 |
" declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=? \n" + |
251add
|
61 |
//写日志 |
F |
62 |
//不存在才执行 |
|
63 |
" if not exists( select 1 from t150101Log where RefDoccode=@RefDoccode) \n" + |
|
64 |
" begin \n " + |
81ff30
|
65 |
" insert into t150101Log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) \n" + |
251add
|
66 |
" end\n"; |
F |
67 |
this.jdbcTemplate.update(sql, |
|
68 |
paymentResult.getValue("MerchantID"), |
|
69 |
paymentResult.getValue("TrxType"), |
|
70 |
paymentResult.getValue("OrderNo"), |
|
71 |
paymentResult.getValue("Amount"), |
|
72 |
paymentResult.getValue("BatchNo"), |
|
73 |
paymentResult.getValue("VoucherNo"), |
|
74 |
paymentResult.getValue("HostDate"), |
|
75 |
paymentResult.getValue("HostTime"), |
|
76 |
paymentResult.getValue("MerchantRemarks"), |
|
77 |
paymentResult.getValue("PayType"), |
|
78 |
paymentResult.getValue("NotifyType"), |
|
79 |
paymentResult.getValue("iRspRef"), |
|
80 |
paymentResult.getValue("bank_type"), |
81ff30
|
81 |
paymentResult.getValue("ThirdOrderNo"),null |
251add
|
82 |
); |
F |
83 |
} |
81ff30
|
84 |
private String updaePaySql(){ |
251add
|
85 |
StringBuilder sql = new StringBuilder(); |
F |
86 |
|
|
87 |
sql.append("set nocount on\n" + |
|
88 |
" declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=?,@isUpdateLog int = 0 ,@isUpdateDocCode int = 0,@CurrentDocCodeStatus int = 0 \n" + |
|
89 |
//写日志 |
|
90 |
//不存在才执行 |
81ff30
|
91 |
" if exists( select 1 from t150101log where RefDoccode=@RefDoccode) \n" + |
251add
|
92 |
" begin \n " + |
81ff30
|
93 |
" update a set a.MerchantID=@MerchantID,a.RefDoccode=@RefDoccode,a.Amount=@Amount,a.BatchNo=@BatchNo,a.VoucherNo=@VoucherNo,a.HostDate=@HostDate,a.HostTime=@HostTime,a.MerchantRemarks=@MerchantRemarks,a.PayType=@PayType,a.NotifyType=@NotifyType,a.iRspRef=@iRspRef,a.bank_type=@bank_type,a.ThirdOrderNo=@ThirdOrderNo,a.refFormid=150101,a.refFormType=496,a.InsertTime=getDate(),a.status=@status from t150101log a where a.RefDoccode=@RefDoccode\n" + |
F |
94 |
" end else \n" + |
|
95 |
" begin\n" + |
251add
|
96 |
" insert into t150101log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) \n" + |
81ff30
|
97 |
" end" + |
251add
|
98 |
" select @isUpdateLog = @@rowcount \n" + |
81ff30
|
99 |
" declare @cltCode varchar(50),@cltName varchar(50) ,@FormId int, @DocStatusValue int,@PreDocStatus int,@PostDocStatus int,@Memo varchar(50), @LinkDocInfo varchar(50)\n " + |
251add
|
100 |
//取cltCode,cltName |
F |
101 |
" select @cltCode=cltCode,@cltName=cltName,@FormId = FormId,@DocStatusValue = DocStatus from t150101H where docCode=@RefDoccode \n" + |
|
102 |
//执行150101过账 |
|
103 |
" select @PreDocStatus = PreDocStatus,@PostDocStatus = a.PostDocStatus from gform a where a.formid = @FormId \n") |
|
104 |
.append(" if isnull(@DocStatusValue,0) = isnull(@PreDocStatus,0) \n" |
|
105 |
+ " begin \n" |
|
106 |
+ " update a set DocStatus = @PostDocStatus,PostCode=@CltCode,PostName=@CltName,PostDate=getdate() \n" + |
|
107 |
" from t150101H a where a.DocCode = @RefDoccode \n" |
|
108 |
+ " exec p150101Post @UserCode = @cltCode,@UserName = @cltName, \n" |
|
109 |
+ " @DocCode = @RefDoccode,@FormID = @FormId,\n" |
|
110 |
+ " @DocStatusValue = @DocStatusValue,@ButtonType ='提交', \n" |
|
111 |
+ " @Memo=@Memo output ,@LinkDocInfo = @LinkDocInfo output \n" + |
|
112 |
" select @isUpdateDocCode = 1 \n" |
81ff30
|
113 |
+ " end \n" ); |
251add
|
114 |
return sql.toString(); |
F |
115 |
} |
81ff30
|
116 |
@Transactional(rollbackFor = Exception.class) |
251add
|
117 |
@Override |
81ff30
|
118 |
public void update150101LogByCallBack(PaymentResult paymentResult) { |
251add
|
119 |
|
81ff30
|
120 |
this.jdbcTemplate.update(updaePaySql(), |
251add
|
121 |
paymentResult.getValue("MerchantID"), |
F |
122 |
paymentResult.getValue("TrxType"), |
|
123 |
paymentResult.getValue("OrderNo"), |
|
124 |
paymentResult.getValue("Amount"), |
|
125 |
paymentResult.getValue("BatchNo"), |
|
126 |
paymentResult.getValue("VoucherNo"), |
|
127 |
paymentResult.getValue("HostDate"), |
|
128 |
paymentResult.getValue("HostTime"), |
|
129 |
paymentResult.getValue("MerchantRemarks"), |
|
130 |
paymentResult.getValue("PayType"), |
|
131 |
paymentResult.getValue("NotifyType"), |
|
132 |
paymentResult.getValue("iRspRef"), |
|
133 |
paymentResult.getValue("bank_type"), |
|
134 |
paymentResult.getValue("ThirdOrderNo"),"03" |
|
135 |
); |
|
136 |
|
81ff30
|
137 |
} |
F |
138 |
@Transactional(rollbackFor = Exception.class) |
|
139 |
@Override |
|
140 |
public void update150101LogByQuery(JSON paymentResult,String merchantID,String trxType) { |
|
141 |
|
|
142 |
this.jdbcTemplate.update(updaePaySql(), |
|
143 |
merchantID, |
|
144 |
trxType, |
|
145 |
paymentResult.GetKeyValue("OrderNo"), |
|
146 |
paymentResult.GetKeyValue("OrderAmount"), |
|
147 |
paymentResult.GetKeyValue("BatchNo"), |
|
148 |
paymentResult.GetKeyValue("VoucherNo"), |
|
149 |
paymentResult.GetKeyValue("OrderDate"), |
|
150 |
paymentResult.GetKeyValue("OrderTime"), |
|
151 |
paymentResult.GetKeyValue("MerchantRemarks"), |
|
152 |
paymentResult.GetKeyValue("PayTypeID"), |
|
153 |
paymentResult.GetKeyValue("NotifyType"), |
|
154 |
paymentResult.GetKeyValue("iRspRef"), |
|
155 |
paymentResult.GetKeyValue("PayTypeID"), |
|
156 |
paymentResult.GetKeyValue("ThirdOrderNo"), |
|
157 |
paymentResult.GetKeyValue("Status") |
|
158 |
); |
|
159 |
|
|
160 |
} |
|
161 |
@Transactional(rollbackFor = Exception.class) |
|
162 |
@Override |
|
163 |
public void save150101LogByQrCode(JSON paymentResult,String merchantID) { |
|
164 |
String sql="set nocount on\n" + |
|
165 |
" declare @MerchantID varchar(50)=?,@TrxType varchar(50)=?,@RefDoccode varchar(150)=?,@Amount money=?,@BatchNo varchar(50)=?,@VoucherNo varchar(50)=?,@HostDate varchar(50)=?,@HostTime varchar(50)=?,@MerchantRemarks varchar(150)=?,@PayType varchar(50)=?,@NotifyType varchar(50)=?,@iRspRef varchar(50)=?,@bank_type varchar(50)=?,@ThirdOrderNo varchar(50)=?,@status varchar(10)=?,@isUpdateLog int = 0 ,@isUpdateDocCode int = 0,@CurrentDocCodeStatus int = 0 \n" + |
|
166 |
//写日志 |
|
167 |
//不存在才执行 |
|
168 |
" if not exists( select 1 from t150101log where RefDoccode=@RefDoccode) \n" + |
|
169 |
" begin \n " + |
|
170 |
" insert into t150101log(MerchantID,TrxType,RefDoccode,Amount,BatchNo,VoucherNo,HostDate,HostTime,MerchantRemarks,PayType,NotifyType,iRspRef,bank_type,ThirdOrderNo,refFormid,refFormType,InsertTime,status) values(@MerchantID,@TrxType,@RefDoccode,@Amount,@BatchNo,@VoucherNo,@HostDate,@HostTime,@MerchantRemarks,@PayType,@NotifyType,@iRspRef,@bank_type,@ThirdOrderNo,150101,496,getDate(),@status) end\n" ; |
|
171 |
jdbcTemplate.update(sql, |
|
172 |
merchantID, |
251add
|
173 |
paymentResult.GetKeyValue("TrxType"), |
F |
174 |
paymentResult.GetKeyValue("OrderNo"), |
|
175 |
paymentResult.GetKeyValue("OrderAmount"), |
|
176 |
paymentResult.GetKeyValue("BatchNo"), |
|
177 |
paymentResult.GetKeyValue("VoucherNo"), |
|
178 |
paymentResult.GetKeyValue("OrderDate"), |
|
179 |
paymentResult.GetKeyValue("OrderTime"), |
|
180 |
paymentResult.GetKeyValue("MerchantRemarks"), |
|
181 |
paymentResult.GetKeyValue("PayTypeID"), |
|
182 |
paymentResult.GetKeyValue("NotifyType"), |
|
183 |
paymentResult.GetKeyValue("iRspRef"), |
|
184 |
paymentResult.GetKeyValue("PayTypeID"), |
|
185 |
paymentResult.GetKeyValue("ThirdOrderNo"), |
|
186 |
paymentResult.GetKeyValue("Status") |
|
187 |
); |
81ff30
|
188 |
} |
F |
189 |
|
|
190 |
@Override |
|
191 |
public List<String> getPayOrderNoByLog() { |
|
192 |
String sql="set nocount on\n" + |
|
193 |
" select refdoccode from t150101log where isnull(status,'')=''"; |
|
194 |
return jdbcTemplate.queryForList(sql,String.class); |
251add
|
195 |
} |
F |
196 |
} |