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

Commit 1be7948e authored by 胡佳晨's avatar 胡佳晨

提交 下单接口 未完成

parent 4d7ba024
......@@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class GoblinStoreOrder implements Serializable {
public class GoblinStoreOrder implements Serializable,Cloneable {
private static final long serialVersionUID = 1L;
......@@ -286,5 +286,13 @@ public class GoblinStoreOrder implements Serializable {
private String comment;
private static final GoblinStoreOrder obj = new GoblinStoreOrder();
public static GoblinStoreOrder getNew() {
try {
return (GoblinStoreOrder) obj.clone();
} catch (CloneNotSupportedException e) {
return new GoblinStoreOrder();
}
}
}
......@@ -42,6 +42,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-candy-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
......
......@@ -21,7 +21,7 @@ import java.util.List;
@RestController
@Api(tags = "活动-内部接口调用")
@RequestMapping("inner")
public class GoblinZhengzaiController {
public class GoblinInnerZhengzaiController {
@Autowired
IGoblinZhengzaiService goblinZhengzaiService;
......
......@@ -16,6 +16,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinOrderSpuParam;
import com.liquidnet.service.goblin.dto.manage.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.entity.GoblinStoreOrder;
import com.liquidnet.service.goblin.service.IGoblinAppOrderService;
import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService;
import com.liquidnet.service.goblin.util.*;
......@@ -24,8 +25,9 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
@Service
@Slf4j
......@@ -115,8 +117,9 @@ public class GoblinAppOrderServiceImpl implements IGoblinAppOrderService {
return ResponseDto.failure(res1);//乱七八糟异常
}
//下单
ResponseDto<GoblinPayInnerResultVo> resultData = order(param, skuVo, uid, isMember, addressesVo, orderMasterCode, orderId, orderCode, storeId, number, pre, spuParam.getPlatVoucherCode());
isDownGeneral = false;
return null;
return resultData;
}
}//GoblinOrderSkuParam
}//GoblinOrderSpuParam
......@@ -144,4 +147,88 @@ public class GoblinAppOrderServiceImpl implements IGoblinAppOrderService {
}
}
}
private ResponseDto<GoblinPayInnerResultVo> order(GoblinOrderParam param, GoblinGoodsSkuInfoVo skuInfoVo, String uid, boolean isMember, AdamAddressesVo addressesVo, String orderMasterCode, String orderId, String orderCode, String storeId, int number, String pre, String platVoucherCode) throws Exception {
LinkedList<String> sqls = CollectionUtil.linkedListString();
Map token = CurrentUtil.getTokenClaims();
String headerCliSource = CurrentUtil.getHeaderCliSource(), headerCliVersion = CurrentUtil.getHeaderCliVersion();
String source = headerCliSource == null ? "" : headerCliSource;
String version = headerCliVersion == null ? "" : headerCliVersion;
LocalDateTime now = LocalDateTime.now();
//价格判断
BigDecimal price = skuInfoVo.getPrice();
BigDecimal priceBase = skuInfoVo.getPrice();
if (pre != null) {
priceBase = redisUtils.getGoodsSkuInfoVo(skuInfoVo.getSkuId().split(pre)[0]).getPrice();
if (isMember) {
priceBase = skuInfoVo.getPriceMember();
}
}
if (isMember) {
price = skuInfoVo.getPriceMember();
}
BigDecimal voucherMarket = priceBase.subtract(price).multiply(BigDecimal.valueOf(number));
BigDecimal voucherPrice = BigDecimal.ZERO;
if (platVoucherCode != null && platVoucherCode != "") {
HashMap<String, Object> hashMap = orderUtils.useCoupon(platVoucherCode, "购买商品spu", priceBase.multiply(BigDecimal.valueOf(number)), "");//todo
voucherPrice = (BigDecimal) hashMap.get("voucher");
Integer typeVoucher = (Integer) hashMap.get("type");
if (typeVoucher.equals(-1)) {
throw new Exception("券不可用");
}
}
//生成订单
GoblinStoreOrder storeOrder = GoblinStoreOrder.getNew();
storeOrder.setMasterOrderCode(orderMasterCode);
storeOrder.setOrderId(orderId);
storeOrder.setStoreId(storeId);
storeOrder.setOrderCode(orderCode);
storeOrder.setUserId(uid);
storeOrder.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
storeOrder.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
storeOrder.setPriceTotal(priceBase.multiply(BigDecimal.valueOf(number)));
storeOrder.setPriceActual(storeOrder.getPriceTotal().subtract(voucherMarket).subtract(voucherPrice));
storeOrder.setPriceRefund(BigDecimal.ZERO);
storeOrder.setPreSalePrice(BigDecimal.ZERO);
storeOrder.setPriceExpress(BigDecimal.ZERO);//todo 快递费
storeOrder.setPriceModify(BigDecimal.ZERO);
storeOrder.setPricePoint((BigDecimal.ZERO));
storeOrder.setPriceCoupon(voucherPrice);
storeOrder.setPriceRedEnvelope((BigDecimal.ZERO));
storeOrder.setPriceVoucher(voucherMarket.add(voucherPrice));
storeOrder.setStatus(0);
storeOrder.setStatusPreSale(0);
storeOrder.setStatusEvaluation(0);
storeOrder.setRedEnvelopeCode("");
storeOrder.setUcouponId(platVoucherCode);
storeOrder.setUsePoint((BigDecimal.ZERO));
storeOrder.setPayType(param.getPayType());
storeOrder.setCancelReason("");
storeOrder.setPreDepositPay(0);
storeOrder.setSource(source);
storeOrder.setVersion(version);
storeOrder.setOrderType(0);
storeOrder.setLotteryStatus("0");
storeOrder.setWriteOffCode("");//todo
storeOrder.setPayCountdownMinute(5);
storeOrder.setIpAddress(CurrentUtil.getCliIpAddr());
storeOrder.setCreatedAt(now);
// storeOrder.setMailNo();
// storeOrder.setDeliveryTime();
// storeOrder.setLogisticsCompany();
// storeOrder.setLogisticsCode();
// storeOrder.setPayTime();
// storeOrder.setCancelTime();
// storeOrder.setModifyTime();
// storeOrder.setEvaluationTime();
// storeOrder.setPreSaleTime();
// storeOrder.setRecommendedId();
// storeOrder.setSRecommendedId();
// storeOrder.setCrowdfundingId();
// storeOrder.setPayCode();
// storeOrder.setPayStoreId();
return null;
}
}
......@@ -2,10 +2,12 @@ package com.liquidnet.service.goblin.util;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil;
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.vo.AdamRscPolymer01Vo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -13,13 +15,16 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.util.HashMap;
@Component
@Slf4j
public class GoblinOrderUtils {
@Value("${liquidnet.adam.url}")
@Value("${liquidnet.service.adam.url}")
private String adamUrl;
@Value("${liquidnet.candy.url}")
@Value("${liquidnet.service.candy.url}")
private String candyUrl;
@Value("${liquidnet.service.stone.url}")
private String stoneUrl;
......@@ -58,4 +63,63 @@ public class GoblinOrderUtils {
return "";
}
}
/**
* 使用优惠券
*
* @param uCouponId 券id
* @param content 消费内容
* @param totalPrice 订单总价
* @return
*/
public HashMap<String, Object> useCoupon(String uCouponId, String content, BigDecimal totalPrice, String spuId) {
HashMap<String, Object> hashMap = CollectionUtil.mapStringObject();
try {
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("uCouponId", uCouponId);
params.add("content", content);
params.add("totalPrice", totalPrice.toString());
params.add("goodId", spuId);
params.add("performanceId", null);
params.add("timeId", null);
params.add("ticketId", null);
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
String returnData = HttpUtil.post(candyUrl + "/candy-coupon/use", params, header);
ResponseDto<CandyUseResultVo> innerReturnVo = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<CandyUseResultVo>>() {
});
CandyUseResultVo candyUseResultVo = innerReturnVo.getData();
Integer type = candyUseResultVo.getCouType();
BigDecimal value = candyUseResultVo.getValue();
BigDecimal voucher = BigDecimal.ZERO;
switch (type) {
case -1:
voucher = BigDecimal.valueOf(-1);
break;
case 1:
voucher = voucher.add(value);
break;
case 2:
voucher = voucher.add(value);
break;
case 3:
voucher = voucher.add(totalPrice);
break;
case 4:
voucher = totalPrice.subtract(totalPrice.multiply(value));
break;
default:
voucher = BigDecimal.ZERO;
break;
}
hashMap.put("type", type);
hashMap.put("voucher", voucher.setScale(2, BigDecimal.ROUND_HALF_UP));
return hashMap;
} catch (Exception e) {
log.error("用券ERROR:{}", e);
hashMap.put("type", -1);
hashMap.put("voucher", -1);
return hashMap;
}
}
}
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