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

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

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

parent fc7f5267
......@@ -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_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_MASTER = PREFIX.concat("order:masterCode:");//用户订单id列表 key:$masterCode
/* ----------------------------------------------------------------- */
/**
* SKU剩余库存
......
......@@ -29,6 +29,9 @@ public class GoblinOrderParam {
private String showUrl;
@ApiModelProperty(value = "returnUrl")
private String returnUrl;
@ApiModelProperty(value = "用户id")
private String uid;
@ApiModelProperty(value = "商品相关参数集合")
private List<GoblinOrderStoreParam> goblinOrderStoreParamList;
......
......@@ -8,11 +8,14 @@ import com.liquidnet.service.goblin.param.SyncOrderParam;
public interface IGoblinOrderService {
ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param);
ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param,String uid);
ResponseDto<GoblinPayInnerResultVo> payAgain(PayAgainParam param);
String syncOrder(SyncOrderParam syncOrderParam);
ResponseDto<Integer> checkOrderResult(String orderId);
ResponseDto<Integer> checkOrderResultMaterCode(String materCode);
}
package com.liquidnet.service.goblin.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.dto.vo.GoblinFrontSelectGoodVo;
import com.liquidnet.service.goblin.dto.vo.GoblinSelfMarketingVo;
import com.liquidnet.service.goblin.dto.vo.GoblinShowStoreInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinZhengzaiGoodVo;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService;
import com.liquidnet.service.goblin.service.IGoblinOrderService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -22,6 +21,8 @@ public class GoblinAppZhengzaiController {
@Autowired
IGoblinAppZhengzaiService goblinAppZhengzaiService;
@Autowired
IGoblinOrderService goblinOrderService;
@GetMapping("market/list")
@ApiOperation("正在下单-活动列表")
......@@ -49,5 +50,44 @@ public class GoblinAppZhengzaiController {
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;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.codec.vo.EncryptedReq;
import com.liquidnet.service.goblin.dto.manage.GoblinOrderParam;
......@@ -25,15 +26,17 @@ public class GoblinOrderController {
@PostMapping("pre")
@ApiOperation("下单")
public ResponseDto<GoblinPayInnerResultVo> getZhengzaiMarketList(@RequestBody EncryptedReq<GoblinOrderParam> param) {
public ResponseDto<GoblinPayInnerResultVo> checkOrder(@RequestBody EncryptedReq<GoblinOrderParam> param) {
GoblinOrderParam payOrderParam = param.getData();
return goblinAppOrderService.checkOrder(payOrderParam);
String uid = CurrentUtil.getCurrentUid();
return goblinAppOrderService.checkOrder(payOrderParam,uid);
}
@PostMapping("fc7bce6d6c2213b866f76493f92224b7")
@ApiOperation("fc7bce6d6c2213b866f76493f92224b7")
public ResponseDto<GoblinPayInnerResultVo> getZhengzaiMarketList(@RequestBody GoblinOrderParam param) {
return goblinAppOrderService.checkOrder(param);
public ResponseDto<GoblinPayInnerResultVo> checkOrder(@RequestBody GoblinOrderParam param) {
String uid = CurrentUtil.getCurrentUid();
return goblinAppOrderService.checkOrder(param,uid);
}
@PostMapping("syncOrder")
......@@ -59,4 +62,14 @@ public class GoblinOrderController {
public ResponseDto<Integer> checkOrderResult(@RequestParam("orderId") @Valid String 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 {
private String synUrl;
@Override
public ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param) {
String uid = CurrentUtil.getCurrentUid();
public ResponseDto<GoblinPayInnerResultVo> checkOrder(GoblinOrderParam param, String uid) {
List<String> skuAndPreListAndNumber = CollectionUtil.arrayListString();
List<GoblinOrderSqlParam> orderSqlParams = ObjectUtil.getGoblinOrderSqlParamArrayListList();
......@@ -83,7 +82,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
} else {
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;
boolean isMember;
if (userVo == null) {
......@@ -117,10 +119,12 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
int surplusGeneral = redisUtils.decrSkuStock(pre, skuId, number);
skuAndPreListAndNumber.add(skuId + "," + pre + "," + number);
//判断限购
if (noZhengzaiOrder(uid)) {
String res1 = orderUtils.judgeOrderLimit(uid, skuId, number, limitCount);
if (!res1.equals("")) {
throw new Exception("已超出限购数量");
}
}
//库存回滚
if (surplusGeneral < 0) {
throw new Exception("已售罄");
......@@ -152,8 +156,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
String pre = array[1];
int number = Integer.parseInt(array[2]);
redisUtils.incrSkuStock(pre, skuId, number);
if (noZhengzaiOrder(uid)) {
redisUtils.decrSkuCountByUid(uid, skuId, number);
}
}
log.error("回滚库存");
if (e.getMessage() == null) {
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
......@@ -276,12 +282,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
GoblinOrderAttr orderAttr = GoblinOrderAttr.getNew();
orderAttr.setOrderAttrId(IDGenerator.nextTimeId2());
orderAttr.setOrderId(orderId);
if (!writeOffCode.equals("EMPTY")) {
orderAttr.setExpressContacts(addressesVo.getName());
orderAttr.setExpressAddress(addressesVo.getProvince() + "," + addressesVo.getCounty() + "," + addressesVo.getCity());
orderAttr.setExpressAddressDetail(addressesVo.getAddress());
orderAttr.setExpressPhone(addressesVo.getPhone());
orderAttr.setExpressType(1);
orderAttr.setCreatedAt(now);
}
//返回值
GoblinOrderPreParam preParam = GoblinOrderPreParam.getNew();
preParam.setPriceActual(storeOrder.getPriceActual());
......@@ -392,11 +400,14 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
orderVo.setOrderAttrVo(orderAttrVo);
orderVo.setOrderSkuVoIds(goblinOrderSkuIdList);
redisUtils.setGoblinOrder(orderVo.getOrderId(), orderVo);
redisUtils.setMasterCode(preParam.getOrderMasterCode(), preParam.getOrderIdList().substring(1));
mongoUtils.insertGoblinStoreOrderVo(orderVo);
//redis 添加未支付列表
redisUtils.addUnPayOrder(orderVo.getOrderId());
//redis 订单列表
if (noZhengzaiOrder(uid)) {
redisUtils.addOrderList(uid, orderVo.getOrderId());
}
//mysql 执行sql
String sqlData = SqlMapping.gets(sqls, sqlDataSku, sqlDataOrder, sqlDataAttr);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_CREATE_PAY.getKey(), sqlData);
......@@ -585,7 +596,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
logVo.setSkuPriceActual(orderSkuVo.getSkuPriceActual().multiply(new BigDecimal(100)).longValue());
logVo.setStatus(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getValue());
logVo.setRemark(GoblinStatusConst.Status.ORDER_LOG_STATUS_11.getDesc());
logVo.setOperationId(orderVo.getUserId());
logVo.setOperationId(uid);
logVo.setOperationName(orderVo.getUserName());
logVo.setOperationType(GoblinStatusConst.Type.OPERATION_TYPE_1.getValue());
logVo.setCreatedAt(LocalDateTime.now());
......@@ -629,8 +640,10 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
// );
// }
//加分
if (noZhengzaiOrder(uid)) {
orderUtils.doTask(uid, priceActual);
}
}
return "success";
}
......@@ -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 {
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