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

Commit e8c686fc authored by 胡佳晨's avatar 胡佳晨

提交 接口文档 出货 绑定订单

parent fc7f5267
...@@ -55,6 +55,7 @@ public class GoblinRedisConst { ...@@ -55,6 +55,7 @@ public class GoblinRedisConst {
public static final String REDIS_GOBLIN_ORDER_SKU = PREFIX.concat("orderSku:");//用户sku购买数量 key:$orderSkuId public static final String REDIS_GOBLIN_ORDER_SKU = PREFIX.concat("orderSku:");//用户sku购买数量 key:$orderSkuId
public static final String REDIS_GOBLIN_ORDER_UN_PAY = PREFIX.concat("order:un:pay:");//未支付订单id列表 key:$randomKey public static final String REDIS_GOBLIN_ORDER_UN_PAY = PREFIX.concat("order:un:pay:");//未支付订单id列表 key:$randomKey
public static final String REDIS_GOBLIN_ORDER_LIST = PREFIX.concat("order:id:list:");//用户订单id列表 key:$uid public static final String REDIS_GOBLIN_ORDER_LIST = PREFIX.concat("order:id:list:");//用户订单id列表 key:$uid
public static final String REDIS_GOBLIN_ORDER_MASTER = PREFIX.concat("order:masterCode:");//用户订单id列表 key:$masterCode
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
/** /**
* SKU剩余库存 * SKU剩余库存
......
...@@ -29,6 +29,9 @@ public class GoblinOrderParam { ...@@ -29,6 +29,9 @@ public class GoblinOrderParam {
private String showUrl; private String showUrl;
@ApiModelProperty(value = "returnUrl") @ApiModelProperty(value = "returnUrl")
private String returnUrl; private String returnUrl;
@ApiModelProperty(value = "用户id")
private String uid;
@ApiModelProperty(value = "商品相关参数集合") @ApiModelProperty(value = "商品相关参数集合")
private List<GoblinOrderStoreParam> goblinOrderStoreParamList; private List<GoblinOrderStoreParam> goblinOrderStoreParamList;
......
...@@ -8,11 +8,14 @@ import com.liquidnet.service.goblin.param.SyncOrderParam; ...@@ -8,11 +8,14 @@ import com.liquidnet.service.goblin.param.SyncOrderParam;
public interface IGoblinOrderService { public interface IGoblinOrderService {
ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param); ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param,String uid);
ResponseDto<GoblinPayInnerResultVo> payAgain(PayAgainParam param); ResponseDto<GoblinPayInnerResultVo> payAgain(PayAgainParam param);
String syncOrder(SyncOrderParam syncOrderParam); String syncOrder(SyncOrderParam syncOrderParam);
ResponseDto<Integer> checkOrderResult(String orderId); ResponseDto<Integer> checkOrderResult(String orderId);
ResponseDto<Integer> checkOrderResultMaterCode(String materCode);
} }
package com.liquidnet.service.goblin.controller; package com.liquidnet.service.goblin.controller;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinFrontSelectGoodVo; import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinSelfMarketingVo; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.dto.vo.GoblinShowStoreInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinZhengzaiGoodVo;
import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService; import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService;
import com.liquidnet.service.goblin.service.IGoblinOrderService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -22,6 +21,8 @@ public class GoblinAppZhengzaiController { ...@@ -22,6 +21,8 @@ public class GoblinAppZhengzaiController {
@Autowired @Autowired
IGoblinAppZhengzaiService goblinAppZhengzaiService; IGoblinAppZhengzaiService goblinAppZhengzaiService;
@Autowired
IGoblinOrderService goblinOrderService;
@GetMapping("market/list") @GetMapping("market/list")
@ApiOperation("正在下单-活动列表") @ApiOperation("正在下单-活动列表")
...@@ -49,5 +50,44 @@ public class GoblinAppZhengzaiController { ...@@ -49,5 +50,44 @@ public class GoblinAppZhengzaiController {
return ResponseDto.success(goblinAppZhengzaiService.getSpuList(marketId, storeId)); return ResponseDto.success(goblinAppZhengzaiService.getSpuList(marketId, storeId));
} }
@PostMapping("fc7bce6d6c2213b866f76493f92224b7")
@ApiOperation("正在下单-下单")
public ResponseDto<GoblinPayInnerResultVo> checkOrder(@RequestBody GoblinOrderParam param) {
if (param.getUid() == null) {
param.setUid("zhengzai");
}
return goblinOrderService.checkOrder(param, param.getUid());
}
@PostMapping("checkPayment")
@ApiOperation("订单状态")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "masterCode", value = "masterCode", example = "1"),
})
public ResponseDto<Integer> checkOrderResultMasterCode(@RequestParam("masterCode") @Valid String masterCode) {
return goblinOrderService.checkOrderResultMaterCode(masterCode);
}
@PostMapping("checkPayment")
@ApiOperation("正在下单-出货")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "masterCode", value = "masterCode", example = "1"),
})
public ResponseDto<Integer> orderPush(@RequestParam("masterCode") @Valid String masterCode) {
return goblinOrderService.checkOrderResultMaterCode(masterCode);
}
@PostMapping("checkPayment")
@ApiOperation("正在下单-绑定订单号")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "masterCode", value = "masterCode", example = "1"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "uid", example = "1"),
})
public ResponseDto<Integer> orderBind(@RequestParam("masterCode") @Valid String masterCode,
@RequestParam("uid") @Valid String uid) {
return goblinOrderService.checkOrderResultMaterCode(masterCode);
}
} }
package com.liquidnet.service.goblin.controller; package com.liquidnet.service.goblin.controller;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.codec.vo.EncryptedReq; import com.liquidnet.service.base.codec.vo.EncryptedReq;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam; import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
...@@ -25,15 +26,17 @@ public class GoblinOrderController { ...@@ -25,15 +26,17 @@ public class GoblinOrderController {
@PostMapping("pre") @PostMapping("pre")
@ApiOperation("下单") @ApiOperation("下单")
public ResponseDto<GoblinPayInnerResultVo> getZhengzaiMarketList(@RequestBody EncryptedReq<GoblinOrderParam> param) { public ResponseDto<GoblinPayInnerResultVo> checkOrder(@RequestBody EncryptedReq<GoblinOrderParam> param) {
GoblinOrderParam payOrderParam = param.getData(); GoblinOrderParam payOrderParam = param.getData();
return goblinAppOrderService.checkOrder(payOrderParam); String uid = CurrentUtil.getCurrentUid();
return goblinAppOrderService.checkOrder(payOrderParam,uid);
} }
@PostMapping("fc7bce6d6c2213b866f76493f92224b7") @PostMapping("fc7bce6d6c2213b866f76493f92224b7")
@ApiOperation("fc7bce6d6c2213b866f76493f92224b7") @ApiOperation("fc7bce6d6c2213b866f76493f92224b7")
public ResponseDto<GoblinPayInnerResultVo> getZhengzaiMarketList(@RequestBody GoblinOrderParam param) { public ResponseDto<GoblinPayInnerResultVo> checkOrder(@RequestBody GoblinOrderParam param) {
return goblinAppOrderService.checkOrder(param); String uid = CurrentUtil.getCurrentUid();
return goblinAppOrderService.checkOrder(param,uid);
} }
@PostMapping("syncOrder") @PostMapping("syncOrder")
...@@ -59,4 +62,14 @@ public class GoblinOrderController { ...@@ -59,4 +62,14 @@ public class GoblinOrderController {
public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @Valid String orderId) { public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @Valid String orderId) {
return goblinAppOrderService.checkOrderResult(orderId); return goblinAppOrderService.checkOrderResult(orderId);
} }
@PostMapping("checkPaymentMaster")
@ApiOperation("订单状态[主订单号]")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "masterCode", value = "masterCode", example = "1"),
})
public ResponseDto<Integer> checkOrderResultMasterCode(@RequestParam("masterCode") @Valid String masterCode) {
return goblinAppOrderService.checkOrderResultMaterCode(masterCode);
}
} }
...@@ -55,8 +55,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -55,8 +55,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
private String synUrl; private String synUrl;
@Override @Override
public ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param) { public ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param, String uid) {
String uid = CurrentUtil.getCurrentUid();
List<String> skuAndPreListAndNumber = CollectionUtil.arrayListString(); List<String> skuAndPreListAndNumber = CollectionUtil.arrayListString();
List<GoblinOrderSqlParam> orderSqlParams = ObjectUtil.getGoblinOrderSqlParamArrayListList(); List<GoblinOrderSqlParam> orderSqlParams = ObjectUtil.getGoblinOrderSqlParamArrayListList();
...@@ -83,7 +82,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -83,7 +82,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
} else { } else {
addressId = StringUtils.join(param.getAddressIds(), ","); addressId = StringUtils.join(param.getAddressIds(), ",");
} }
AdamRscPolymer01Vo userVo = orderUtils.adamAddressEnterMember(uid, null, addressId); AdamRscPolymer01Vo userVo = null;
if (noZhengzaiOrder(uid)) {
userVo = orderUtils.adamAddressEnterMember(uid, null, addressId);
}
AdamAddressesVo addressesVo; AdamAddressesVo addressesVo;
boolean isMember; boolean isMember;
if (userVo == null) { if (userVo == null) {
...@@ -117,10 +119,12 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -117,10 +119,12 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
int surplusGeneral = redisUtils.decrSkuStock(pre, skuId, number); int surplusGeneral = redisUtils.decrSkuStock(pre, skuId, number);
skuAndPreListAndNumber.add(skuId + "," + pre + "," + number); skuAndPreListAndNumber.add(skuId + "," + pre + "," + number);
//判断限购 //判断限购
if (noZhengzaiOrder(uid)) {
String res1 = orderUtils.judgeOrderLimit(uid, skuId, number, limitCount); String res1 = orderUtils.judgeOrderLimit(uid, skuId, number, limitCount);
if (!res1.equals("")) { if (!res1.equals("")) {
throw new Exception("已超出限购数量"); throw new Exception("已超出限购数量");
} }
}
//库存回滚 //库存回滚
if (surplusGeneral < 0) { if (surplusGeneral < 0) {
throw new Exception("已售罄"); throw new Exception("已售罄");
...@@ -152,8 +156,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -152,8 +156,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
String pre = array[1]; String pre = array[1];
int number = Integer.parseInt(array[2]); int number = Integer.parseInt(array[2]);
redisUtils.incrSkuStock(pre, skuId, number); redisUtils.incrSkuStock(pre, skuId, number);
if (noZhengzaiOrder(uid)) {
redisUtils.decrSkuCountByUid(uid, skuId, number); redisUtils.decrSkuCountByUid(uid, skuId, number);
} }
}
log.error("回滚库存"); log.error("回滚库存");
if (e.getMessage() == null) { if (e.getMessage() == null) {
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常 return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
...@@ -276,12 +282,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -276,12 +282,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
GoblinOrderAttr orderAttr = GoblinOrderAttr.getNew(); GoblinOrderAttr orderAttr = GoblinOrderAttr.getNew();
orderAttr.setOrderAttrId(IDGenerator.nextTimeId2()); orderAttr.setOrderAttrId(IDGenerator.nextTimeId2());
orderAttr.setOrderId(orderId); orderAttr.setOrderId(orderId);
if (!writeOffCode.equals("EMPTY")) {
orderAttr.setExpressContacts(addressesVo.getName()); orderAttr.setExpressContacts(addressesVo.getName());
orderAttr.setExpressAddress(addressesVo.getProvince() + "," + addressesVo.getCounty() + "," + addressesVo.getCity()); orderAttr.setExpressAddress(addressesVo.getProvince() + "," + addressesVo.getCounty() + "," + addressesVo.getCity());
orderAttr.setExpressAddressDetail(addressesVo.getAddress()); orderAttr.setExpressAddressDetail(addressesVo.getAddress());
orderAttr.setExpressPhone(addressesVo.getPhone()); orderAttr.setExpressPhone(addressesVo.getPhone());
orderAttr.setExpressType(1); orderAttr.setExpressType(1);
orderAttr.setCreatedAt(now); orderAttr.setCreatedAt(now);
}
//返回值 //返回值
GoblinOrderPreParam preParam = GoblinOrderPreParam.getNew(); GoblinOrderPreParam preParam = GoblinOrderPreParam.getNew();
preParam.setPriceActual(storeOrder.getPriceActual()); preParam.setPriceActual(storeOrder.getPriceActual());
...@@ -392,11 +400,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -392,11 +400,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
orderVo.setOrderAttrVo(orderAttrVo); orderVo.setOrderAttrVo(orderAttrVo);
orderVo.setOrderSkuVoIds(goblinOrderSkuIdList); orderVo.setOrderSkuVoIds(goblinOrderSkuIdList);
redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo); redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo);
redisUtils.setMasterCode(preParam.getOrderMasterCode(), preParam.getOrderIdList().substring(1));
mongoUtils.insertGoblinStoreOrderVo(orderVo); mongoUtils.insertGoblinStoreOrderVo(orderVo);
//redis 添加未支付列表 //redis 添加未支付列表
redisUtils.addUnPayOrder(orderVo.getOrderId()); redisUtils.addUnPayOrder(orderVo.getOrderId());
//redis 订单列表 //redis 订单列表
if (noZhengzaiOrder(uid)) {
redisUtils.addOrderList(uid, orderVo.getOrderId()); redisUtils.addOrderList(uid, orderVo.getOrderId());
}
//mysql 执行sql //mysql 执行sql
String sqlData = SqlMapping.gets(sqls, sqlDataSku, sqlDataOrder, sqlDataAttr); String sqlData = SqlMapping.gets(sqls, sqlDataSku, sqlDataOrder, sqlDataAttr);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(), sqlData); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(), sqlData);
...@@ -585,7 +596,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -585,7 +596,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue()); logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue()); logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue());
logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc()); logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc());
logVo.setOperationId(orderVo.getUserId()); logVo.setOperationId(uid);
logVo.setOperationName(orderVo.getUserName()); logVo.setOperationName(orderVo.getUserName());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue()); logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
logVo.setCreatedAt(LocalDateTime.now()); logVo.setCreatedAt(LocalDateTime.now());
...@@ -629,8 +640,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -629,8 +640,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
// ); // );
// } // }
//加分 //加分
if (noZhengzaiOrder(uid)) {
orderUtils.doTask(uid, priceActual); orderUtils.doTask(uid, priceActual);
} }
}
return "success"; return "success";
} }
...@@ -656,4 +669,30 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -656,4 +669,30 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
} }
} }
} }
@Override
public ResponseDto<Integer> checkOrderResultMaterCode(String materCode) {
String[] orderIds = redisUtils.getMasterCode(materCode);
if (orderIds == null) {
return ResponseDto.failure("订单不存在");
} else {
for (String orderId : orderIds) {
GoblinStoreOrderVo storeOrderVo = redisUtils.getGoblinOrder(orderId);
String returnCheckData = HttpUtil.get(checkUrl + "?code=" + storeOrderVo.getPayCode(), null);
ResponseDto<SyncOrderParam> syncOrderDtoParam = JsonUtils.fromJson(returnCheckData, new TypeReference<ResponseDto<SyncOrderParam>>() {
});
if (syncOrderDtoParam.getData().getStatus() == 1) {
//处理订单
syncOrder(syncOrderDtoParam.getData());
} else {
return ResponseDto.success(0);
}
}
return ResponseDto.success(1);
}
}
private boolean noZhengzaiOrder(String uid) {
return !uid.equals("zhengzai");
}
} }
...@@ -571,4 +571,21 @@ public class GoblinRedisUtils { ...@@ -571,4 +571,21 @@ public class GoblinRedisUtils {
redisUtil.set(redisKey, list); redisUtil.set(redisKey, list);
} }
//主订单下包含的子订单
public void setMasterCode(String masterCode,String orderIds){
String redisKey = GoblinRedisConst.REDIS_GOBLIN_ORDER_MASTER.concat(masterCode);
redisUtil.set(redisKey, orderIds);
}
public String[] getMasterCode(String masterCode){
String redisKey = GoblinRedisConst.REDIS_GOBLIN_ORDER_MASTER.concat(masterCode);
Object obj =redisUtil.get(redisKey);
if(obj==null){
return null;
}else{
return ((String)obj).split(",");
}
}
} }
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