Commit 305ef211 by tang

添加卡增加cvn2等字段,修改查询订单等bug

parent 8575dbee
......@@ -33,10 +33,10 @@ public class OrderService {
*/
public List<OrderEntity> getOrderList(OrderRequest request){
if(request.getStartDate()!= null && request.getStartDate() != 0){
request.setStartTime(DateUtils.formatDate(new Date(request.getStartDate()*1000),"yyyy-MM-dd") + " 00:00:00");
request.setStartTime(DateUtils.formatDate(new Date(request.getStartDate()),"yyyy-MM-dd") + " 00:00:00");
}
if(request.getEndDate() != null && request.getEndDate() != 0){
request.setEndTime(DateUtils.formatDate(new Date(request.getEndDate()*1000),"yyyy-MM-dd") + " 23:59:59");
request.setEndTime(DateUtils.formatDate(new Date(request.getEndDate()),"yyyy-MM-dd") + " 23:59:59");
}
return orderApiDao.getOrderList(request);
......@@ -57,10 +57,10 @@ public class OrderService {
page.setPageSize(request.getPageSize());
request.setPage(page);
if(request.getStartDate()!= null && request.getStartDate() != 0){
request.setStartTime(DateUtils.formatDate(new Date(request.getStartDate()*1000),"yyyy-MM-dd") + " 00:00:00");
request.setStartTime(DateUtils.formatDate(new Date(request.getStartDate()),"yyyy-MM-dd") + " 00:00:00");
}
if(request.getEndDate() != null && request.getEndDate() != 0){
request.setEndTime(DateUtils.formatDate(new Date(request.getEndDate()*1000),"yyyy-MM-dd") + " 23:59:59");
request.setEndTime(DateUtils.formatDate(new Date(request.getEndDate()),"yyyy-MM-dd") + " 23:59:59");
}
List<OrderEntity> list = orderApiDao.getOrderList(request);
page.setList(list);
......
......@@ -385,7 +385,7 @@ public class PayApiService {
public Map<String, String> getUserBenefit(UserEntity userEntity, JuHeZhongPayRequest request) {
Map<String, String> userBenefit = new HashMap<>();
//用户等级为C,即黄金级别,上级用户不参与分成,直接返回
if(userEntity.getLevel().equals("C")){
if (userEntity.getLevel().equals("C")) {
return userBenefit;
}
//该笔交易的支付方式,获取不同费率
......@@ -393,8 +393,8 @@ public class PayApiService {
//获取该笔交易的金额
String amount = request.getAmount();
HashMap<String, String> map = Maps.newHashMap();
map.put("pay_channel",payChannel);
map.put("id",userEntity.getId());
map.put("pay_channel", payChannel);
map.put("id", userEntity.getId());
//当前用户费率实体
UserRateEntity userRateEntity = payDao.getUpUser(map);
......@@ -409,17 +409,17 @@ public class PayApiService {
}
//获取当前用户的推荐者,只获取了上级和上上级
//上级
UserRateEntity upUser =null;
if(idsList.size()>0){
UserRateEntity upUser = null;
if (idsList.size() > 0) {
String upId = idsList.get(0);
map.put("id",upId);
upUser = payDao.getUpUser(map);
if(upUser != null && upUser.getUserLevel().equals("C")){
map.put("id", upId);
upUser = payDao.getUpUser(map);
if (upUser != null && upUser.getUserLevel().equals("C")) {
//AC1=(A-C1)乘以X=(0.55%-0.5%)乘以X
//当前用户(A,B只有这两种等级会给上级分成),也就是当前用户的费率与上级用户费率的差值
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(userRateEntity.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUser.getUserCode(),benefitResult.toString());
userBenefit.put(upUser.getUserCode(), benefitResult.toString());
}
}
......@@ -437,35 +437,35 @@ public class PayApiService {
//
//上上级
if(idsList.size()>1){
if (idsList.size() > 1) {
String upUpId = idsList.get(1);
map.put("id", upUpId);
UserRateEntity upUpUser = payDao.getUpUser(map);
if(upUpUser != null && upUpUser.getUserLevel().equals("C")){
if (upUpUser != null && upUpUser.getUserLevel().equals("C")) {
//第一种情况
if(userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("E")){
if (userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("E")) {
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(userRateEntity.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUpUser.getUserCode(),benefitResult.toString());
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
}
//第二种情况
if(userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("D")){
if (userEntity.getLevel().equals("E") && upUser.getUserLevel().equals("D")) {
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(upUser.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUpUser.getUserCode(),benefitResult.toString());
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
}
//第三种情况
if(userEntity.getLevel().equals("D") && upUser.getUserLevel().equals("E")){
if (userEntity.getLevel().equals("D") && upUser.getUserLevel().equals("E")) {
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(userRateEntity.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUpUser.getUserCode(),benefitResult.toString());
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
}
//第四种情况
if(userEntity.getLevel().equals("D") && upUser.getUserLevel().equals("D")){
if (userEntity.getLevel().equals("D") && upUser.getUserLevel().equals("D")) {
BigDecimal rateResult = BigDecimal.valueOf(Double.valueOf(upUser.getRate())).subtract(BigDecimal.valueOf(Double.valueOf(upUpUser.getRate())));
BigDecimal benefitResult = rateResult.multiply(BigDecimal.valueOf(Double.valueOf(amount)));
userBenefit.put(upUpUser.getUserCode(),benefitResult.toString());
userBenefit.put(upUpUser.getUserCode(), benefitResult.toString());
}
}
......@@ -791,7 +791,7 @@ public class PayApiService {
payBackDto.setIsUrl("0");
JSONObject dto = new JSONObject();
dto.put("orderId", MakeOrderNum.makeOrderNum()); // 非订单号
dto.put("orderId", orderEntity.getPayCode()); // 非订单号,回调根据此值修改
dto.put("merchantId", ComCode.JFEN_MERCHANT_ID);// 商户号
dto.put("serviceType", "5");// 操作类型 5
dto.put("subMchId", userSubMchId.getSubmchid());// 子商户号
......@@ -808,7 +808,8 @@ public class PayApiService {
payBackDto.setMessage(jsonObject.getString("msg"));
if ("0000".equals(jsonObject.get("code"))) {
this.notifyPay(orderEntity);
// this.notifyPay(orderEntity);
return payBackDto;
} else {
throw new MyException(jsonObject.getString("msg"));
......@@ -835,16 +836,16 @@ public class PayApiService {
//获取结算卡信息
CardEntity cardEntityDebit = userService.getCardInfoByCode(userEntity);
JuhezhongDto dto = new JuhezhongDto();
dto.setOrderId(MakeOrderNum.makeOrderNum());//非订单号
dto.setOrderId(orderEntity.getPayCode());//非订单号,回调根据此值进行修改
dto.setMerchantId(ComCode.MERCHANT_ID);//商户号
dto.setMerchantKey(ComCode.MERCHANT_KEY);
dto.setAmount(Integer.valueOf(request.getAmount()) * 100);//订单金额,单位为分
dto.setTrxType(3);//交易类型,默认传3
dto.setType(cardEntity.getCardType().equals("D") ? 6 : 5);//5 借记卡 只能 D0 6 贷记卡 D0 t1 ,表中 银行卡类型 D储蓄卡 C信用卡'
dto.setBankNo(cardEntity.getCardNo());//支付卡号
dto.setCvn2(request.getCvn2());//安全码
dto.setCvn2(cardEntity.getCvn2());//安全码
dto.setPhone(cardEntity.getCardMobile());//支付卡预留手机号
dto.setExpired(request.getExpireDate());//信用卡有效期(MMYY)
dto.setExpired(cardEntity.getExpireDate());//信用卡有效期(MMYY)
dto.setUserFee(amount < 200 ? Integer.valueOf(ComCode.EXTRA_RATE) : amount);//手续费 单位:分 ,D0 业务必传,商家约定
if (cardEntity.getCardType().equals("C")) {
......@@ -861,17 +862,17 @@ public class PayApiService {
dto.setFrontUrl(ComCode.NOTIFY_CALLBACK_URL);//前台地址url(保留)
dto.setTimestamp(System.currentTimeMillis());
logger.debug("HL4支付请求参数, expireDate: {}, cvn2: {}, cardMobile: {}, " +
"cardNo: {}, settleBankName: {}, settleBankNo: {}, settleBankPhone:{}, " +
"name:{}, certificateCode:{}" ,request.getExpireDate(),request.getCvn2(),
cardEntity.getCardMobile(),cardEntity.getCardNo(),cardEntityDebit.getBankName(),cardEntityDebit.getCardNo(),
cardEntityDebit.getCardMobile(),userDetail.getRealName(),userDetail.getIdCard());
"cardNo: {}, settleBankName: {}, settleBankNo: {}, settleBankPhone:{}, " +
"name:{}, certificateCode:{}", request.getExpireDate(), request.getCvn2(),
cardEntity.getCardMobile(), cardEntity.getCardNo(), cardEntityDebit.getBankName(), cardEntityDebit.getCardNo(),
cardEntityDebit.getCardMobile(), userDetail.getRealName(), userDetail.getIdCard());
JSONObject jsonObject = juHeZhongPayService.quickPay(dto);
logger.debug("HL4支付返回结果信息:{}" + jsonObject.toJSONString());
payBackDto.setMessage(jsonObject.getString("msg"));
if ("0000".equals(jsonObject.get("code"))) {
//订单支付成功,则进行一次查询,修改订单状态
this.notifyPay(orderEntity);
// this.notifyPay(orderEntity);
return payBackDto;
} else {
throw new MyException(jsonObject.getString("msg"));
......@@ -924,7 +925,7 @@ public class PayApiService {
if ("0000".equals(jsonObject.get("returncode"))) {
payBackDto.setIsUrl("0");
payBackDto.setPayChannel(ComCode.PAYCHANNEL_HUANQIUHUIJU);
this.notifyPay(orderEntity);
// this.notifyPay(orderEntity);
return payBackDto;
} else {
orderFail(orderEntity);
......@@ -1090,42 +1091,38 @@ public class PayApiService {
*/
@Transactional(readOnly = false)
public OrderEntity notifyPay(OrderEntity orderEntity) throws Exception {
QuickDto dto = new QuickDto();
dto.setOrderId(orderEntity.getPayCode());
dto.setMerchantId(ComCode.MERCHANT_ID);
dto.setMerchantKey(ComCode.MERCHANT_KEY);
dto.setTimestamp(System.currentTimeMillis());
//当出现收不到回调,会有定时任务进行查询,修改订单状态,因此不立即进行查询操作,立即查询会出现操作频繁
// QuickDto dto = new QuickDto();
// dto.setOrderId(orderEntity.getPayCode());
// dto.setMerchantId(ComCode.MERCHANT_ID);
// dto.setMerchantKey(ComCode.MERCHANT_KEY);
// dto.setTimestamp(System.currentTimeMillis());
//
orderEntity = payDao.getOrder(orderEntity);
JSONObject jsonObject = null;
if (ComCode.PAYCHANNEL_HL3.equals(orderEntity.getPayChannel())) {
dto.setMerchantId(ComCode.INTEGRAL_MERCHANT_ID);
dto.setMerchantKey(ComCode.INTEGRAL_MERCHANT_KEY);
jsonObject = juHeZhongPayIntegralService.query(dto);
} else if (ComCode.PAYCHANNEL_HL1.equals(orderEntity.getPayChannel())) {
jsonObject = juHeZhongPayService.query(dto);
} else if (ComCode.PAYCHANNEL_HL2.equals(orderEntity.getPayChannel())) {
dto.setMerchantId(ComCode.JFEN_MERCHANT_ID);
dto.setMerchantKey(ComCode.JFEN_MERCHANT_KEY);
jsonObject = juHeZhongPayJFenService.query(dto);
} else if (ComCode.PAYCHANNEL_HUANQIUHUIJU.equals(orderEntity.getPayChannel())) {
// JSONObject jsonObject = null;
// if (ComCode.PAYCHANNEL_HL3.equals(orderEntity.getPayChannel())) {
// dto.setMerchantId(ComCode.INTEGRAL_MERCHANT_ID);
// dto.setMerchantKey(ComCode.INTEGRAL_MERCHANT_KEY);
// jsonObject = juHeZhongPayIntegralService.query(dto);
// } else if (ComCode.PAYCHANNEL_HL1.equals(orderEntity.getPayChannel())) {
// jsonObject = juHeZhongPayService.query(dto);
// } else if (ComCode.PAYCHANNEL_HL2.equals(orderEntity.getPayChannel())) {
// dto.setMerchantId(ComCode.JFEN_MERCHANT_ID);
// dto.setMerchantKey(ComCode.JFEN_MERCHANT_KEY);
// jsonObject = juHeZhongPayJFenService.query(dto);
// } else if (ComCode.PAYCHANNEL_HUANQIUHUIJU.equals(orderEntity.getPayChannel())) {
// orderEntity.setPayStatus("2");
// payDao.updateOrderStatus(orderEntity);
// return orderEntity;
// }
//
// logger.debug("查询订单返回结果: {}" + jsonObject.toJSONString());
// 支付成功
//订单已经支付成功,则不进行再次修改,可能存在多次回调,所以进行判断
if (!orderEntity.getPayStatus().equals("2")) {
logger.debug("进入修改订单状态");
orderEntity.setPayStatus("2");
payDao.updateOrderStatus(orderEntity);
return orderEntity;
}
logger.debug("查询订单返回结果: {}" + jsonObject.toJSONString());
// 支付成功
if ("0000".equals(jsonObject.get("code"))) {
//订单已经支付成功,则不进行再次修改,可能存在多次回调,所以进行判断
if (orderEntity.getPayStatus() != "2") {
orderEntity.setPayStatus("2");
payDao.updateOrderStatus(orderEntity);
}
} else { // 支付失败
orderFail(orderEntity);
}
orderEntity = payDao.getOrder(orderEntity);
return orderEntity;
......@@ -1242,12 +1239,16 @@ public class PayApiService {
} else if (ComCode.PAYCHANNEL_HL1.equals(order.getPayChannel())) {
jsonObject = juHeZhongPayService.query(dto);
} else if (ComCode.PAYCHANNEL_HL2.equals(orderEntity.getPayChannel())) {
dto.setMerchantId(ComCode.JFEN_MERCHANT_ID);
dto.setMerchantKey(ComCode.JFEN_MERCHANT_KEY);
jsonObject = juHeZhongPayJFenService.query(dto);
}
if (jsonObject != null) {
// System.out.println("查询订单返回结果:"+jsonObject.toJSONString());
// 支付成功
if ("0000".equals(jsonObject.get("code"))) {
System.out.println("查询订单返回结果:" + jsonObject.toJSONString());
System.out.println("定时任务查询订单返回结果:" + jsonObject.toJSONString());
order.setPayStatus("2");
payDao.updateOrderStatus(order);
} else { // 支付失败
......
......@@ -341,6 +341,11 @@ public class UserApiController {
if(!regex.matcher(request.getCardMobile()).matches()){
throw new MyException("手机号码格式不正确");
}
if(request.getCardType().equals("C")){
if (StringUtils.isBlank(request.getCvn2())|| StringUtils.isBlank(request.getExpireDate())){
throw new MyException("信用卡信息需补全");
}
}
// 根据手机号 + 使用场景 + 验证码查询
request.setMobile(request.getCardMobile());
// IdentityCodeEntity identityCodeEntity = userService.getIdentifyCode(request);
......
......@@ -42,6 +42,10 @@ public class UserRequest extends Request {
private String cardCode;
private String expireDate;//信用卡到期时间
private String cvn2;//信用卡校验码
public String getMobile() {
......@@ -299,4 +303,20 @@ public class UserRequest extends Request {
public void setCardCode(String cardCode) {
this.cardCode = cardCode;
}
public String getExpireDate() {
return expireDate;
}
public void setExpireDate(String expireDate) {
this.expireDate = expireDate;
}
public String getCvn2() {
return cvn2;
}
public void setCvn2(String cvn2) {
this.cvn2 = cvn2;
}
}
......@@ -41,6 +41,10 @@ public class CardEntity extends BaseEntity implements Serializable {
private String isOpenCard = "1";
private String expireDate;//信用卡到期时间
private String cvn2;//信用卡校验码
public CardEntity() {
}
......@@ -53,11 +57,13 @@ public class CardEntity extends BaseEntity implements Serializable {
this.isDebit = isDebit;
}
public CardEntity(String code, String userCode, String cardType, String cardNo, String cardMobile, String belongBank, String cardBank, String cardPlace, String isDebit, String subMerchantId, String cardSrc, String type, String status, String province, String city) {
public CardEntity(String code, String userCode, String cardType, String cardNo, String expireDate, String cvn2, String cardMobile, String belongBank, String cardBank, String cardPlace, String isDebit, String subMerchantId, String cardSrc, String type, String status, String province, String city) {
this.setCode(code);
this.userCode = userCode;
this.cardType = cardType;
this.cardNo = cardNo;
this.expireDate = expireDate;
this.cvn2 = cvn2;
this.cardMobile = cardMobile;
this.belongBank = belongBank;
this.cardBank = cardBank;
......@@ -241,4 +247,21 @@ public class CardEntity extends BaseEntity implements Serializable {
public void setIsOpenCard(String isOpenCard) {
this.isOpenCard = isOpenCard;
}
public String getExpireDate() {
return expireDate;
}
public void setExpireDate(String expireDate) {
this.expireDate = expireDate;
}
public String getCvn2() {
return cvn2;
}
public void setCvn2(String cvn2) {
this.cvn2 = cvn2;
}
}
......@@ -226,7 +226,7 @@ public class UserApiService {
if(request.getCardSrc()!= null){
cardSrc = request.getCardSrc().replace(Global.getConfig("sys.pre.url"), "");
}
CardEntity cardEntity = new CardEntity(code, request.getSubMerchantCode(), request.getCardType(), request.getCardNo(), request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getProvince()+request.getCity(), "N", subMerchantId, cardSrc, type, status, request.getProvince(), request.getCity());
CardEntity cardEntity = new CardEntity(code, request.getSubMerchantCode(), request.getCardType(), request.getCardNo(),request.getExpireDate(),request.getCvn2(), request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getProvince()+request.getCity(), "N", subMerchantId, cardSrc, type, status, request.getProvince(), request.getCity());
userDao.addNewCard(cardEntity);
}
......@@ -266,7 +266,7 @@ public class UserApiService {
CardEntity cardStatusEntity = new CardEntity(request.getSubMerchantCode(), "N");
userDao.updateCardStatus(cardStatusEntity);
logger.debug("修改完银行卡信息");
CardEntity cardEntity = new CardEntity(IdGen.randomBase62(64), request.getSubMerchantCode(), "D", request.getCardNo(), request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getCardPlace(), "Y", subMerchantId, "", type, status, request.getProvince(), request.getCity());
CardEntity cardEntity = new CardEntity(IdGen.randomBase62(64), request.getSubMerchantCode(), "D", request.getCardNo(), request.getExpireDate(), request.getCvn2(),request.getCardMobile(), request.getBelongBank(), request.getCardBank(), request.getCardPlace(), "Y", subMerchantId, "", type, status, request.getProvince(), request.getCity());
userDao.addNewCard(cardEntity);
......
......@@ -4,6 +4,7 @@
<select id="getOrderList" resultType="com.thinkgem.jeesite.modules.pay.entity.OrderEntity">
SELECT
DISTINCT o.`code`,
o.pay_code,
o.pay_no,
o.pay_status,
......@@ -20,10 +21,10 @@
WHERE o.del_flag = 0
AND o.user_code = #{subMerchantCode}
<if test="payChannel != null and payChannel != ''">
AND o.pay_channel = #{payChannel}
AND o.pay_method = #{payChannel}
</if>
<if test="payMethod != null and payMethod != ''">
AND o.pay_channel = #{payMethod}
AND o.pay_method = #{payMethod}
</if>
<if test="payStatus != null and payStatus != ''">
AND o.pay_status = #{payStatus}
......@@ -59,7 +60,7 @@
WHERE o.del_flag = 0
AND o.user_code = #{subMerchantCode}
<if test="payChannel != null and payChannel != ''">
AND o.pay_channel = #{payChannel}
AND o.pay_method = #{payChannel}
</if>
<if test="payStatus != null and payStatus != ''">
AND o.pay_status = #{payStatus}
......
......@@ -362,6 +362,8 @@
user_code,
card_type,
card_no,
expire_date,
cvn2,
card_mobile,
belong_bank,
card_bank,
......@@ -378,7 +380,7 @@
del_flag
)
VALUES
(#{code}, #{userCode}, #{cardType}, #{cardNo}, #{cardMobile}, #{belongBank}, #{cardBank}, #{cardPlace}, #{isDebit}, #{subMerchantId}, #{cardSrc}, #{type}, #{status}, #{province}, #{city}, #{createdUser}, #{modifiedUser}, #{delFlag})
(#{code}, #{userCode}, #{cardType}, #{cardNo}, #{expireDate}, #{cvn2}, #{cardMobile}, #{belongBank}, #{cardBank}, #{cardPlace}, #{isDebit}, #{subMerchantId}, #{cardSrc}, #{type}, #{status}, #{province}, #{city}, #{createdUser}, #{modifiedUser}, #{delFlag})
</insert>
<insert id="addFeedback">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment