PickPayBiz.java
5.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.cjs.site.biz.user.pick;
import com.cjs.site.dao.user.pick.OutpropApplyPayDao;
import com.cjs.site.dao.user.pick.PickPackDao;
import com.cjs.site.model.union.CreateQrCode;
import com.cjs.site.model.union.UnionResponse;
import com.cjs.site.model.user.pick.OutpropApplyPayInfo;
import com.cjs.site.model.user.pick.OutpropApplyPickInfo;
import com.cjs.site.model.user.pick.PickPackInfo;
import com.cjs.site.util.lang.DateEnum;
import com.cjs.site.util.lang.DateUtil;
import com.cjs.site.util.lang.JsonUtil;
import com.cjs.site.util.union.UnionConstants;
import com.cjs.site.util.union.UnionPayUtil;
import com.cjs.site.util.web.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import javax.servlet.http.HttpSession;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by bruce on 2019-05-06 17:22
*/
@Service
public class PickPayBiz {
@Autowired
private OutpropApplyPayDao outpropApplyPayDao;
@Autowired
private PickPackDao pickPackDao;
@Autowired
private PickBiz pickBiz;
@Autowired
@Qualifier("transactionManagerOracle")
private DataSourceTransactionManager transactionManager;
public Map<String, Object> createOrder(HttpSession session) {
String pickType = (String)session.getAttribute("pickType");
OutpropApplyPickInfo pickInfo = (OutpropApplyPickInfo)session.getAttribute("pickInfo");
System.out.println("---------------------------" + pickType);
System.out.println("---------------------------" + JsonUtil.toJson(pickInfo));
Map<String, Object> result = new HashMap<String, Object>();
result.put("code", true);
String userId = ActionUtil.getUser().getUserId();
List<PickPackInfo> applyList = pickPackDao.queryUserPosition(userId);
int pickTotal = 0;
for (PickPackInfo apply : applyList) {
pickTotal += apply.getCurrentAmount();
}
// BigDecimal totalAmount = new BigDecimal("0.01").multiply(new BigDecimal(DateUtil.getTrustCycle())).
// multiply(new BigDecimal(pickTotal)).add(new BigDecimal("6"));
BigDecimal totalAmount = new BigDecimal("0.01");//调试接口代码写死
result.put("totalAmount", totalAmount);
String pickNo = pickBiz.createPickNo();
try {
CreateQrCode createQrCode = new CreateQrCode();
createQrCode.setQrCodeId(UnionPayUtil.getQrCodeId());
createQrCode.setBillNo(createQrCode.getQrCodeId());
createQrCode.setTotalAmount(String.valueOf(totalAmount.multiply(BigDecimal.valueOf(100)).intValue()));
createQrCode.setRequestTimestamp(DateUtil.getNow());
createQrCode.setBillDate(DateUtil.getNow(DateEnum.DATE));
createQrCode.setSrcReserve(pickNo);
@SuppressWarnings("unchecked")
Map<String, String> mapTypes = JsonUtil.fromJson(JsonUtil.toJson(createQrCode), Map.class);
String json = UnionPayUtil.sendPost(UnionConstants.CREATE_ORDER, mapTypes);
UnionResponse response = JsonUtil.fromJson(json, UnionResponse.class);
if (response != null && response.getErrCode().equals(UnionConstants.SUCCESS_CODE)) {
result.put("qrCode", UnionPayUtil.createQrCode(createQrCode.getQrCodeId()));
insertPickPay(userId, createQrCode.getBillNo(), pickNo);
} else {
result.put("code", false);
result.put("msg", response.getErrMsg());
}
} catch (Exception e) {
result.put("code", false);
result.put("msg", e.getMessage());
}
return result;
}
public Boolean isValidNotify(Map<String, String> result) {
if (UnionPayUtil.checkSign(result)) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = transactionManager.getTransaction(def);
try {
OutpropApplyPayInfo info = outpropApplyPayDao.selectByTradeNo(result.get("billNo"));
if (!info.getStatus().equals("2")) {
OutpropApplyPayInfo update = new OutpropApplyPayInfo();
update.setTradeNo(result.get("srcReserve"));
update.setStatus("2");
outpropApplyPayDao.update(update);
//todo 更新库存,生成提货单<包含提货类型,提货人,提货日期,保价费>
}
transactionManager.commit(status);
return true;
} catch (Exception e) {
transactionManager.rollback(status);
}
}
return false;
}
private void insertPickPay(String clientId, String tradeNo, String applyNo) {
OutpropApplyPayInfo insert = new OutpropApplyPayInfo();
insert.setCreatedAt(DateUtil.getNow());
insert.setClientId(clientId);
insert.setStatus("1");
insert.setTradeNo(tradeNo);
insert.setApplyNo(applyNo);
outpropApplyPayDao.insert(insert);
}
}