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

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

goblin 帮助前端用店铺券/平台券

parent 8ce909b2
...@@ -4,15 +4,14 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -4,15 +4,14 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.vo.CandyCouponRulesVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.*; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.param.*; import com.liquidnet.service.goblin.param.*;
import com.liquidnet.service.goblin.service.GoblinCouponService; import com.liquidnet.service.goblin.service.GoblinCouponService;
import com.liquidnet.service.goblin.util.GoblinMongoUtils; import com.liquidnet.service.goblin.util.*;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -30,6 +29,8 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -30,6 +29,8 @@ public class GoblinCouponImpl implements GoblinCouponService {
GoblinMongoUtils goblinMongoUtils; GoblinMongoUtils goblinMongoUtils;
@Autowired @Autowired
QueueUtils queueUtils; QueueUtils queueUtils;
@Autowired
GoblinOrderUtils orderUtils;
@Override @Override
public ArrayList<String> getSpuType(String spuId, String storeId) { public ArrayList<String> getSpuType(String spuId, String storeId) {
...@@ -415,8 +416,9 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -415,8 +416,9 @@ public class GoblinCouponImpl implements GoblinCouponService {
GoblinUseResultVo returnVo; GoblinUseResultVo returnVo;
String ucouponId = params.getUcouponId(); String ucouponId = params.getUcouponId();
String platformUcouponId = params.getPlatformUcouponId(); String platformUcouponId = params.getPlatformUcouponId();
vo.setPrice(BigDecimal.ZERO);
//店铺券 //店铺券
if(ucouponId!=null && !ucouponId.equals("")) { if (ucouponId != null && !ucouponId.equals("")) {
List<GoblinUserCouponVo> voList = goblinRedisUtils.getUserCouponVos(params.getUid()); List<GoblinUserCouponVo> voList = goblinRedisUtils.getUserCouponVos(params.getUid());
for (GoblinUserCouponVo itemVo : voList) { for (GoblinUserCouponVo itemVo : voList) {
if (itemVo.getUcouponId().equals(ucouponId)) { if (itemVo.getUcouponId().equals(ucouponId)) {
...@@ -484,7 +486,29 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -484,7 +486,29 @@ public class GoblinCouponImpl implements GoblinCouponService {
} }
} }
} }
}vo.setUcouponId(ucouponId); } else if (platformUcouponId != null && !platformUcouponId.equals("")) {
CandyCouponVo candyCouponVo = orderUtils.getCouponDetails(platformUcouponId);
if (candyCouponVo.getState().equals(1) && (candyCouponVo.getBusiType().equals(0) || candyCouponVo.getBusiType().equals(2))) {
BigDecimal voucherPrice;
switch (candyCouponVo.getCouType()) {
case 1://代金
vo.setPrice(candyCouponVo.getValFace());
break;
case 2://满减
voucherPrice = mathPlatformPrice(candyCouponVo, params.getParam());
if (voucherPrice.compareTo(candyCouponVo.getValOver()) >= 0) {
vo.setPrice(candyCouponVo.getValMinus());
}
break;
case 4://折扣
voucherPrice = mathPlatformPrice(candyCouponVo, params.getParam());
vo.setPrice(voucherPrice.subtract(voucherPrice.multiply(candyCouponVo.getDiscount())));
break;
}
}
}
vo.setUcouponId(ucouponId);
vo.setPlatformUcouponId(platformUcouponId); vo.setPlatformUcouponId(platformUcouponId);
return vo; return vo;
} }
...@@ -492,6 +516,7 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -492,6 +516,7 @@ public class GoblinCouponImpl implements GoblinCouponService {
//用券计算金额 返回优惠金额和类型 //用券计算金额 返回优惠金额和类型
private GoblinUseResultVo mathCouponPrice(GoblinUserCouponVo vo, BigDecimal contentPrice) { private GoblinUseResultVo mathCouponPrice(GoblinUserCouponVo vo, BigDecimal contentPrice) {
GoblinUseResultVo returnVo = GoblinUseResultVo.getNew(); GoblinUseResultVo returnVo = GoblinUseResultVo.getNew();
returnVo.setValue(BigDecimal.ZERO);
if (vo.getTriggers().compareTo(contentPrice) <= 0) { if (vo.getTriggers().compareTo(contentPrice) <= 0) {
if (vo.getType().equals("1")) {//代金券 if (vo.getType().equals("1")) {//代金券
if (vo.getValFace().compareTo(contentPrice) > 0) { if (vo.getValFace().compareTo(contentPrice) > 0) {
...@@ -518,4 +543,27 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -518,4 +543,27 @@ public class GoblinCouponImpl implements GoblinCouponService {
} }
return returnVo; return returnVo;
} }
//计算平台券金额
private BigDecimal mathPlatformPrice(CandyCouponVo candyCouponVo, List<CouponCanUse2Param> param) {
BigDecimal voucherPrice = BigDecimal.ZERO;
for (CandyCouponRulesVo couponRulesVo : candyCouponVo.getUseRules()) {
if (couponRulesVo.getUseScope().equals(101)) {
break;
}
if (couponRulesVo.getUseScope().equals(80)) {
for (CouponCanUse2Param couponCanUse2Param : param) {
String orderVoSpuId = couponCanUse2Param.getSpuId();
String pre = GoblinStatusConst.MarketPreStatus.getPre(orderVoSpuId);
if (pre != null) {
orderVoSpuId = orderVoSpuId.split(pre)[0];
}
if (couponRulesVo.getBusiId().equals(orderVoSpuId)) {
voucherPrice = voucherPrice.add(couponCanUse2Param.getPrice());
}
}
}
}
return voucherPrice;
}
} }
...@@ -36,119 +36,6 @@ public class GoblinOrderUtils { ...@@ -36,119 +36,6 @@ public class GoblinOrderUtils {
@Autowired @Autowired
GoblinRedisUtils redisUtils; GoblinRedisUtils redisUtils;
public AdamRscPolymer01Vo adamAddressEnterMember(String uid, String enterIds, String addressId) {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Accept", "application/json;charset=UTF-8");
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("addressId", addressId);
params.add("entersIds", enterIds);
params.add("uid", uid);
String resultData = HttpUtil.post(adamUrl + "/adam/rsc/inquire/of_buy_ticket", params, header);
ResponseDto<AdamRscPolymer01Vo> vo = JsonUtils.fromJson(resultData, new TypeReference<ResponseDto<AdamRscPolymer01Vo>>() {
});
if (null != vo.getData()) {
return vo.getData();
} else {
return null;
}
} catch (Exception e) {
log.error("获取用户信息,e:{}", e);
e.printStackTrace();
return null;
}
}
//判断 数量限购
public String judgeOrderLimit(String uid, String skuId, int number, int limitCount) {
int buyCount = redisUtils.getSkuCountByUid(uid, skuId);
if (buyCount + number > limitCount) {
return "已超出限购数量";
} else {
int a = redisUtils.incrSkuCountByUid(uid, skuId, number);
return "";
}
}
//判断指定人群购买
public Boolean judgeOrderRose(Boolean isMember, String skuId, String mobile, int buyFactor) {
Boolean result = false;
switch (buyFactor) {
case 0:
result = true;
break;
case 1:
result = isMember;
break;
case 2:
result = redisUtils.getSkuCanBuyByUid(mobile, skuId);
break;
}
return result;
}
/**
* 使用优惠券
*
* @param uCouponId 券id
* @param content 消费内容
* @param totalPrice 订单总价
* @return
*/
public HashMap<String, Object> useCoupon(String uCouponId, String content, BigDecimal totalPrice, String spuId, String uid) {
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");
params.add("uid", uid);
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken());
header.add("Accept", "application/json;charset=UTF-8");
log.debug("url=" + candyUrl + "/candy-coupon/use");
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", 0);
return hashMap;
}
}
public void backCoupon(String uCouponId, String uid) { public void backCoupon(String uCouponId, String uid) {
try { try {
BackCouponParam param = BackCouponParam.getNew(); BackCouponParam param = BackCouponParam.getNew();
...@@ -202,19 +89,4 @@ public class GoblinOrderUtils { ...@@ -202,19 +89,4 @@ public class GoblinOrderUtils {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void desTask(String uid, BigDecimal price) {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Accept", "application/json;charset=UTF-8");
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("score", price.intValue() + "");
params.add("content", "购买商品:");
params.add("uid", uid);
String resultData = HttpUtil.post(stoneUrl + "/user/logs/de2111", params, header);
} catch (Exception e) {
log.error("添加积分失败,e:{}", e);
e.printStackTrace();
}
}
} }
...@@ -123,7 +123,12 @@ public class GoblinOrderUtils { ...@@ -123,7 +123,12 @@ public class GoblinOrderUtils {
} else { } else {
for (String targetId : targetList) { for (String targetId : targetList) {
for (GoblinOrderSku skuOrderVo : goblinOrderSkuList) { for (GoblinOrderSku skuOrderVo : goblinOrderSkuList) {
if (targetId.equals(skuOrderVo.getSpuId())) { String orderVoSpuId = skuOrderVo.getSpuId();
String pre = GoblinStatusConst.MarketPreStatus.getPre(orderVoSpuId);
if(pre!=null){
orderVoSpuId = orderVoSpuId.split(pre)[0];
}
if (targetId.equals(orderVoSpuId)) {
targetPrice = targetPrice.add(skuOrderVo.getSkuPriceActual()); targetPrice = targetPrice.add(skuOrderVo.getSkuPriceActual());
} }
} }
......
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