记得上下班打卡 | git大法好,push需谨慎

Commit f6f0e133 authored by 张国柄's avatar 张国柄

会员API:

 +会员订单状态查询API;
 会员下单调整:支付中心调用失败不生成订单;
parent 8d12e6ee
......@@ -9,7 +9,7 @@ import lombok.Data;
@ApiModel(value = "AdamAddressesVo", description = "收获地址")
@Data
public class AdamAddressesVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final long serialVersionUID = -3096308044365829079L;
@ApiModelProperty(position = 10, value = "收获地址ID[64]")
private String addressesId;
@ApiModelProperty(position = 11, value = "姓名[30]")
......
......@@ -9,7 +9,7 @@ import lombok.Data;
@ApiModel(value = "AdamEntersVo", description = "入场人")
@Data
public class AdamEntersVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final long serialVersionUID = -9143065766410946012L;
@ApiModelProperty(position = 10, value = "入场人ID[64]")
private String entersId;
@ApiModelProperty(position = 11, value = "入场人名称[50]")
......
......@@ -9,7 +9,7 @@ import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeAdminVo", description = "会员码兑换")
@Data
public class AdamMemberCodeVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final long serialVersionUID = -2822442493419088086L;
@ApiModelProperty(position = 0, value = "会员码")
private String code;
@ApiModelProperty(position = 1, value = "会员类型id")
......
......@@ -11,9 +11,8 @@ import java.util.List;
@ApiModel(value = "AdamMemberOrderVo", description = "订单详情展示")
@Data
public class AdamMemberOrderVo implements Serializable {
private static final long serialVersionUID = 5258094625450569125L;
public class AdamMemberOrderVo implements Serializable, Cloneable {
private static final long serialVersionUID = -1606153856097622877L;
@ApiModelProperty(position = 0, value = "订单号")
private String orderNo;
@ApiModelProperty(position = 1, value = "用户uid")
......@@ -28,12 +27,14 @@ public class AdamMemberOrderVo implements Serializable {
private String memberPriceId;
@ApiModelProperty(position = 6, value = "购买天数")
private Integer days;
@ApiModelProperty(position = 7, value = "订单状态:0未支付 1已支付 2已超时 5已退款")
@ApiModelProperty(position = 7, value = "订单状态:0-未支付,1-已支付,2-已关闭,5-已退款")
private Integer state;
@ApiModelProperty(position = 8, value = "会员号")
private String memberNo;
@ApiModelProperty(position = 9, value = "支付类型")
private String payChannel;
@ApiModelProperty(position = 9, value = "支付终端", allowableValues = "app,wap,js,applet")
private String deviceFrom;
@ApiModelProperty(position = 9, value = "支付方式", allowableValues = "alipay,wepay")
private String payType;
@ApiModelProperty(position = 10, value = "支付单号")
private String payNo;
@ApiModelProperty(position = 11, value = "支付时间")
......@@ -53,7 +54,7 @@ public class AdamMemberOrderVo implements Serializable {
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
private static AdamMemberOrderVo getNew() {
public static AdamMemberOrderVo getNew() {
try {
return (AdamMemberOrderVo) obj.clone();
} catch (CloneNotSupportedException e) {
......@@ -75,7 +76,8 @@ public class AdamMemberOrderVo implements Serializable {
mqList.add(orderVo.getDays());
mqList.add(orderVo.getState());
mqList.add(orderVo.getMemberNo());
mqList.add(orderVo.getPayChannel());
mqList.add(orderVo.getDeviceFrom());
mqList.add(orderVo.getPayType());
mqList.add(orderVo.getPayNo());
mqList.add(orderVo.getPaymentAt());
mqList.add(orderVo.getCreatedAt());
......
......@@ -15,7 +15,7 @@ import java.util.List;
@ApiModel(value = "AdamMemberVo", description = "会员")
@Data
public class AdamMemberVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final long serialVersionUID = -3480288014645762321L;
@ApiModelProperty(position = 0, value = "会员ID[50]")
private String memberId;
@ApiModelProperty(position = 1, value = "会员名称[50]", example = "摩登天空会员卡")
......
......@@ -9,7 +9,7 @@ import java.io.Serializable;
@ApiModel(value = "AdamUserMemberVo", description = "会员用户信息")
@Data
public class AdamUserMemberVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final long serialVersionUID = 9027553500608702757L;
@ApiModelProperty(position = 11, value = "用户ID")
private String uid;
@ApiModelProperty(position = 12, value = "会员类型ID")
......
......@@ -19,6 +19,7 @@ liquidnet:
database-name: dev_ln_scene
url-pay:
pay: http://testpay.zhengzai.tv
check: http://testpay.zhengzai.tv/order/verify
callback: https://zuul.zhengzai.tv/adam/member/order/callback
aliyun:
accessKeyId:
......
......@@ -19,6 +19,7 @@ liquidnet:
database-name: test_ln_scene
url-pay:
pay: http://testpay.zhengzai.tv
check: http://testpay.zhengzai.tv/order/verify
callback: https://zuul.zhengzai.tv/adam/member/order/callback
aliyun:
accessKeyId:
......
......@@ -257,7 +257,8 @@ create table adam_member_order
days int default 0 comment '购买天数',
state tinyint comment '订单状态',
member_no varchar(20) comment '会员号',
pay_channel varchar(20) comment '支付渠道',
device_from varchar(20) comment '支付终端:app,wap,js,applet',
pay_type varchar(20) comment '支付方式:alipay,wepay',
pay_no varchar(64) comment '支付订单',
birthday date default null comment '用户生日',
payment_at datetime default null comment '支付时间',
......
package com.liquidnet.service.adam.controller;
import com.fasterxml.jackson.databind.JsonNode;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
......@@ -12,7 +14,6 @@ import com.liquidnet.service.adam.dto.vo.AdamMemberOrderPreviewVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.IAdamRealNameService;
......@@ -20,13 +21,16 @@ import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.PayResultVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.List;
@ApiSupport(order = 10031)
......@@ -35,6 +39,8 @@ import java.util.List;
@RestController
@RequestMapping("member/order")
public class AdamMemberOrderController {
@Autowired
Environment env;
@Autowired
IAdamMemberOrderService adamMemberOrderService;
@Autowired
......@@ -117,8 +123,7 @@ public class AdamMemberOrderController {
@ApiOperation(value = "会员订单详情")
@GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@PathVariable String orderNo) {
String currentUid = CurrentUtil.getCurrentUid();
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(currentUid, orderNo);
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(CurrentUtil.getCurrentUid(), orderNo);
return ResponseDto.success(memberOrderInfo);
}
......@@ -131,4 +136,25 @@ public class AdamMemberOrderController {
log.warn(JsonUtils.toJson(dto));
}
}
@ApiOperation(value = "会员订单状态")
@GetMapping("check")
public ResponseDto<Integer> checkOrderResult(@RequestParam @NotNull String orderNo) {
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(CurrentUtil.getCurrentUid(), orderNo);
if (null == memberOrderInfo) {
return ResponseDto.failure(ErrorMapping.get("10210"));
}
try {
String rst = HttpUtil.get(env.getProperty("liquidnet.url-pay.check") + "?code=" + memberOrderInfo.getPayNo(), null);
JsonNode rstJNode = JsonUtils.fromJson(rst, JsonNode.class);
int status = Integer.parseInt(rstJNode.get("status").asText("0"));
return ResponseDto.success(status == 1 ? status : 0);
} catch (Exception e) {
log.error("支付中心:会员订单状态查询失败:{}", orderNo, e);
return ResponseDto.failure(ErrorMapping.get("10211"));
}
}
}
......@@ -33,6 +33,8 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import java.math.BigDecimal;
......@@ -101,6 +103,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(AdamMemberOrderParam param) {
String memberId = param.getMemberId();
String memberPriceId = param.getMemberPriceId();
......@@ -109,8 +112,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
// 验证会员是否有效
AdamMemberVo adamMemberVo = adamMemberService.queryMemberInfo();
if (!adamMemberVo.getMemberId().equals(memberId)) {
// result.setState(0);
// return result;
return ResponseDto.failure(ErrorMapping.get("10201"));
}
// 验证价格是否有效
......@@ -124,8 +125,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
}
if (null == priceVo) {
// result.setState(0);
// return result;
return ResponseDto.failure(ErrorMapping.get("10202"));
}
......@@ -145,7 +144,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setCreatedAt(createdAt);
orderVo.setMemberName(adamMemberVo.getName());
orderVo.setMode(param.getMode());
orderVo.setPayChannel(param.getPayType());
orderVo.setDeviceFrom(param.getDeviceFrom());
orderVo.setPayType(param.getPayType());
orderVo.setState(AdamMemberConst.STATUS_UNPAID);
orderVo.setUid(CurrentUtil.getCurrentUid());
orderVo.setPrice(param.getPrice());
......@@ -153,13 +153,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setVersion(CurrentUtil.getCliVersion());
orderVo.setSource(CurrentUtil.getCliSource());
mongoTemplate.insert(orderVo, AdamMemberOrderVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(orderVo.getUid()), orderNo, orderVo);
// 创建订单
int buyType = param.getMode();
// 判断购买情况
// 调取对应支付接口
LinkedMultiValueMap<String, String> payParam = new LinkedMultiValueMap<>();
payParam.add("type", AdamMemberConst.TYPE_VIP);
......@@ -179,26 +172,26 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
if (null != param.getProductId()) {
payParam.add("product_id", param.getProductId());
}
// Map payResult = null;
// switch (buyType) {
// case 0:
// payParam.add("detail", "正在现场 - 购买会员");
// payResult = this.callPayServer(param.getPayChannel(), payParam);
// result.setOrderNo((String) payResult.get("order_id"));
// break;
// case 1:
// payParam.add("detail", "正在现场 - 购买会员码");
// payResult = this.callPayServer(param.getPayChannel(), payParam);
// result.setOrderNo((String) payResult.get("order_id"));
// break;
// }
payParam.add("detail", buyType == 0 ? "正在现场 - 购买会员" : "正在现场 - 购买会员码");
Map payResult = this.callPayServer(param.getDeviceFrom(), param.getPayType(), payParam);
payParam.add("detail", param.getMode() == 0 ? "正在现场 - 购买会员" : "正在现场 - 购买会员码");
AdamMemberOrderResult result = AdamMemberOrderResult.getNew();
try {
Map payResult = this.callPayServer(param.getDeviceFrom(), param.getPayType(), payParam);
result.setCode((String) payResult.get("code"));
result.setPayData(payResult.get("pay_data"));
orderVo.setPayNo(result.getCode());
} catch (Exception e) {
log.error("调用支付中心接口异常", e);
return ResponseDto.failure(ErrorMapping.get("10203"));
}
mongoTemplate.insert(orderVo, AdamMemberOrderVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(orderVo.getUid()), orderNo, orderVo);
result.setOrderNo(orderVo.getOrderNo());
result.setCode((String) payResult.get("code"));
result.setPayData(payResult.get("pay_data"));
result.setShowUrl(param.getShowUrl());
result.setReturnUrl(param.getReturnUrl());
return ResponseDto.success(result);
......@@ -257,9 +250,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setPrice(BigDecimal.valueOf(0));
if (AdamMemberConst.SUB_TYPE_USE_VIP_CODE == type) {// 会员码
orderVo.setPayChannel(AdamMemberConst.VIP_CODE);
orderVo.setPayType(AdamMemberConst.VIP_CODE);
} else if (AdamMemberConst.SUB_TYPE_USE_GIFT_CODE == type) {// 礼包码
orderVo.setPayChannel(AdamMemberConst.GIFT_CODE);
orderVo.setPayType(AdamMemberConst.GIFT_CODE);
}
// 创建用户使用兑换码的订单
......@@ -327,9 +320,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
*/
private Map callPayServer(String deviceFrom, String payType, LinkedMultiValueMap<String, String> payParam) {
String url = env.getProperty("liquidnet.url-pay.pay") + "/" + deviceFrom + "/" + payType;
log.info("HttpUtil.resquest.url:{},param:{}", url, JsonUtils.toJson(payParam));
log.debug("HttpUtil.resquest.url:{},param:{}", url, JsonUtils.toJson(payParam));
String json = HttpUtil.post(url, payParam);
log.info("HttpUtil.response.body:{}", json);
log.debug("HttpUtil.response.body:{}", json);
return JsonUtils.fromJson(json, Map.class);
}
......@@ -428,7 +421,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
// 更新订单信息
orderVo.setPayChannel(result.getPaymentType());
orderVo.setPaymentAt(DateUtil.format(result.getPaymentAt(), DateUtil.Formatter.yyyyMMddHHmmss));
orderVo.setState(AdamMemberConst.STATUS_PAID);
orderVo.setPayNo(result.getCode());
......
......@@ -19,11 +19,15 @@
10201=会员信息有误,请联系客服
10202=会员价格有误,请联系客服
10203=
10203=支付信息有误,请联系客服
10204=
10205=当前账号已是会员,无法兑换
10206=兑换码已使用,请核实
10207=兑换码不可用,请核实
10208=
10209=
10210=订单不存在
10211=订单状态查询失败
......
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