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

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

提交 下单接口 未完成

parent 4d7ba024
...@@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode; ...@@ -18,7 +18,7 @@ import lombok.EqualsAndHashCode;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class GoblinStoreOrder implements Serializable { public class GoblinStoreOrder implements Serializable,Cloneable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -286,5 +286,13 @@ public class GoblinStoreOrder implements Serializable { ...@@ -286,5 +286,13 @@ public class GoblinStoreOrder implements Serializable {
private String comment; 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 @@ ...@@ -42,6 +42,12 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-candy-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
......
...@@ -21,7 +21,7 @@ import java.util.List; ...@@ -21,7 +21,7 @@ import java.util.List;
@RestController @RestController
@Api(tags = "活动-内部接口调用") @Api(tags = "活动-内部接口调用")
@RequestMapping("inner") @RequestMapping("inner")
public class GoblinZhengzaiController { public class GoblinInnerZhengzaiController {
@Autowired @Autowired
IGoblinZhengzaiService goblinZhengzaiService; IGoblinZhengzaiService goblinZhengzaiService;
......
...@@ -16,6 +16,7 @@ import com.liquidnet.service.goblin.dto.manage.GoblinOrderSpuParam; ...@@ -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.manage.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo; import com.liquidnet.service.goblin.dto.vo.GoblinGoodsInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo; 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.IGoblinAppOrderService;
import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService; import com.liquidnet.service.goblin.service.IGoblinAppZhengzaiService;
import com.liquidnet.service.goblin.util.*; import com.liquidnet.service.goblin.util.*;
...@@ -24,8 +25,9 @@ import org.apache.commons.lang.StringUtils; ...@@ -24,8 +25,9 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.List; import java.time.LocalDateTime;
import java.util.*;
@Service @Service
@Slf4j @Slf4j
...@@ -115,8 +117,9 @@ public class GoblinAppOrderServiceImpl implements IGoblinAppOrderService { ...@@ -115,8 +117,9 @@ public class GoblinAppOrderServiceImpl implements IGoblinAppOrderService {
return ResponseDto.failure(res1);//乱七八糟异常 return ResponseDto.failure(res1);//乱七八糟异常
} }
//下单 //下单
ResponseDto<GoblinPayInnerResultVo> resultData = order(param, skuVo, uid, isMember, addressesVo, orderMasterCode, orderId, orderCode, storeId, number, pre, spuParam.getPlatVoucherCode());
isDownGeneral = false; isDownGeneral = false;
return null; return resultData;
} }
}//GoblinOrderSkuParam }//GoblinOrderSkuParam
}//GoblinOrderSpuParam }//GoblinOrderSpuParam
...@@ -144,4 +147,88 @@ public class GoblinAppOrderServiceImpl implements IGoblinAppOrderService { ...@@ -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; ...@@ -2,10 +2,12 @@ package com.liquidnet.service.goblin.util;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil; 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.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.AdamRscPolymer01Vo; import com.liquidnet.service.adam.dto.vo.AdamRscPolymer01Vo;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -13,13 +15,16 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -13,13 +15,16 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.util.HashMap;
@Component @Component
@Slf4j @Slf4j
public class GoblinOrderUtils { public class GoblinOrderUtils {
@Value("${liquidnet.adam.url}") @Value("${liquidnet.service.adam.url}")
private String adamUrl; private String adamUrl;
@Value("${liquidnet.candy.url}") @Value("${liquidnet.service.candy.url}")
private String candyUrl; private String candyUrl;
@Value("${liquidnet.service.stone.url}") @Value("${liquidnet.service.stone.url}")
private String stoneUrl; private String stoneUrl;
...@@ -58,4 +63,63 @@ public class GoblinOrderUtils { ...@@ -58,4 +63,63 @@ public class GoblinOrderUtils {
return ""; 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