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

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

Merge branch 'hjc_coupon' into dev_coupon

# Conflicts:
#	liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/src/main/java/com/liquidnet/service/goblin/controller/GoblinFrontController.java
#	liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/utils/GoblinOrderUtils.java
parents 8cc44247 9dc07321
package com.liquidnet.service.goblin.param;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
@Api
@Data
public class CouponCanUse2Param implements Serializable, Cloneable {
@ApiModelProperty(dataType = "String", name = "spuId", value = "spuId",example = "1",required = true)
@NotNull @NotBlank
private String spuId;
@ApiModelProperty(dataType = "Number", name = "price", value = "当前spu总价",example = "10",required = true)
@NotNull @NotBlank
private BigDecimal price;
private static final CouponCanUse2Param obj = new CouponCanUse2Param();
public static CouponCanUse2Param getNew() {
try {
return (CouponCanUse2Param) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CouponCanUse2Param();
}
}
package com.liquidnet.service.goblin.param;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Api
@Data
public class CouponCanUseParam implements Serializable, Cloneable {
@ApiModelProperty(name = "param", value = "对象",required = true)
@NotNull @NotBlank
private List<CouponCanUse2Param> param;
@ApiModelProperty(dataType = "String", name = "uid", value = "用户id",example = "10",required = true)
@NotNull @NotBlank
private String uid;
private static final CouponCanUseParam obj = new CouponCanUseParam();
public static CouponCanUseParam getNew() {
try {
return (CouponCanUseParam) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CouponCanUseParam();
}
}
...@@ -4,6 +4,7 @@ import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo; import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo; import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo;
import com.liquidnet.service.goblin.param.BackCouponParam; import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.goblin.param.CouponCanUseParam;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -28,6 +29,8 @@ public interface GoblinCouponService { ...@@ -28,6 +29,8 @@ public interface GoblinCouponService {
//可用券列表 [价格] [spuId逗号隔开] [uid] //可用券列表 [价格] [spuId逗号隔开] [uid]
List<GoblinUserCouponVo> useList(BigDecimal totalPrice, String spuId, String uid); List<GoblinUserCouponVo> useList(BigDecimal totalPrice, String spuId, String uid);
List<GoblinUserCouponVo> useList2(CouponCanUseParam param);
//使用券 [券id] [消费内容] [价格] [spuId逗号隔开] //使用券 [券id] [消费内容] [价格] [spuId逗号隔开]
GoblinUseResultVo useCoupon(String ucouponId,String content, BigDecimal totalPrice, String spuId, String uid); GoblinUseResultVo useCoupon(String ucouponId,String content, BigDecimal totalPrice, String spuId, String uid);
......
#eurekaServer配置
eureka:
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
#configServer配置
spring:
cloud:
config:
# uri: http://39.107.71.112:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
discovery:
enabled: true
service-id: liquidnet-support-config
...@@ -7,6 +7,7 @@ import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo; ...@@ -7,6 +7,7 @@ import com.liquidnet.service.goblin.dto.vo.GoblinStoreCouponVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo; import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo; import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo;
import com.liquidnet.service.goblin.param.BackCouponParam; import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.goblin.param.CouponCanUseParam;
import com.liquidnet.service.goblin.service.GoblinCouponService; import com.liquidnet.service.goblin.service.GoblinCouponService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils; import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.ObjectUtil; import com.liquidnet.service.goblin.util.ObjectUtil;
...@@ -201,6 +202,16 @@ public class GoblinCouponController { ...@@ -201,6 +202,16 @@ public class GoblinCouponController {
return ResponseDto.success(goblinCouponService.useList(totalPrice, spuId, uid)); return ResponseDto.success(goblinCouponService.useList(totalPrice, spuId, uid));
} }
@PostMapping("useList2")
@ApiOperation("可用券列表2")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<List<GoblinUserCouponVo>> useList2(@RequestBody CouponCanUseParam param) {
if (param.getUid() == null) {
param.setUid(CurrentUtil.getCurrentUid());
}
return ResponseDto.success(goblinCouponService.useList2(param));
}
@PostMapping("useCoupon") @PostMapping("useCoupon")
@ApiOperation("用券") @ApiOperation("用券")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
......
...@@ -29,10 +29,6 @@ import java.util.List; ...@@ -29,10 +29,6 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/front") @RequestMapping("/front")
public class GoblinFrontController { public class GoblinFrontController {
@Autowired
private RedisUtil redisUtil;
@Autowired
private GoblinRedisUtils goblinRedisUtils;
@Autowired @Autowired
private GoblinFrontServiceImpl goblinFrontService; private GoblinFrontServiceImpl goblinFrontService;
......
...@@ -7,6 +7,8 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -7,6 +7,8 @@ import com.liquidnet.service.base.constant.MQConst;
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.param.BackCouponParam; import com.liquidnet.service.goblin.param.BackCouponParam;
import com.liquidnet.service.goblin.param.CouponCanUse2Param;
import com.liquidnet.service.goblin.param.CouponCanUseParam;
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.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils; import com.liquidnet.service.goblin.util.GoblinRedisUtils;
...@@ -229,6 +231,44 @@ public class GoblinCouponImpl implements GoblinCouponService { ...@@ -229,6 +231,44 @@ public class GoblinCouponImpl implements GoblinCouponService {
return returnList; return returnList;
} }
@Override
public List<GoblinUserCouponVo> useList2(CouponCanUseParam param) {
List<GoblinUserCouponVo> voList = goblinRedisUtils.getUserCouponVos(param.getUid());
List<GoblinUserCouponVo> returnList = ObjectUtil.getGoblinUserCouponVo();
BigDecimal totalPrice = BigDecimal.ZERO;
for (CouponCanUse2Param param2 : param.getParam()) {
totalPrice = totalPrice.add(param2.getPrice());
}
LocalDateTime now = LocalDateTime.now();
for (GoblinUserCouponVo vo : voList) {
//判断券状态 和 触发金额
if (vo.getDuedAt().isAfter(now) && vo.getState().equals(1)) {//&& vo.getTriggers().compareTo(totalPrice) <= 0
if (vo.getUseScope().equals("0") && vo.getTriggers().compareTo(totalPrice) <= 0) {
returnList.add(vo);
} else {
List<String> spuIds = goblinRedisUtils.getStoreCouponSpuIds(vo.getStoreCouponId());
if (spuIds == null) {
break;
}
//判断是否在可用商品内
BigDecimal contentPrice = BigDecimal.ZERO;
for (String item : spuIds) {
for (CouponCanUse2Param param2 : param.getParam()) {
if (param2.getSpuId().equals(item)) {
contentPrice = contentPrice.add(param2.getPrice());
}
}
}
if(vo.getTriggers().compareTo(contentPrice) <= 0){
returnList.add(vo);
}
}
}
}
returnList.sort(Comparator.comparing(GoblinUserCouponVo::getState));
return returnList;
}
@Override @Override
public GoblinUseResultVo useCoupon(String ucouponId, String content, BigDecimal totalPrice, String spuId, String uid) { public GoblinUseResultVo useCoupon(String ucouponId, String content, BigDecimal totalPrice, String spuId, String uid) {
List<GoblinUserCouponVo> voList = goblinRedisUtils.getUserCouponVos(uid); List<GoblinUserCouponVo> voList = goblinRedisUtils.getUserCouponVos(uid);
......
...@@ -316,16 +316,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService { ...@@ -316,16 +316,7 @@ public class GoblinOrderServiceImpl implements IGoblinOrderService {
//商铺券 //商铺券
BigDecimal storeVoucherPrice = BigDecimal.ZERO; BigDecimal storeVoucherPrice = BigDecimal.ZERO;
if (storeVoucherCode != null && !storeVoucherCode.equals("")) { if (storeVoucherCode != null && !storeVoucherCode.equals("")) {
String spuIds = ""; GoblinUseResultVo storeCouponVo = orderUtils.useStoreCoupon(storeVoucherCode, "购买商品[" + orderCode + "]", storeTotalPrice, goblinOrderSkuList, uid);
for (GoblinOrderSkuParam item : storeParam.getGoblinOrderSkuParamArrayList()) {
String pre = GoblinStatusConst.MarketPreStatus.getPre(item.getSpuId());
if (pre != null) {
spuIds = spuIds.concat(item.getSpuId().split(pre)[0] + ",");
} else {
spuIds = spuIds.concat(item.getSpuId() + ",");
}
}
GoblinUseResultVo storeCouponVo = orderUtils.useStoreCoupon(storeVoucherCode, "购买商品[" + orderCode + "]", storeTotalPrice, spuIds, uid);
String typeVoucher; String typeVoucher;
if (storeCouponVo != null) { if (storeCouponVo != null) {
storeVoucherPrice = storeCouponVo.getValue(); storeVoucherPrice = storeCouponVo.getValue();
......
...@@ -17,6 +17,8 @@ import com.liquidnet.service.goblin.entity.GoblinBackOrder; ...@@ -17,6 +17,8 @@ import com.liquidnet.service.goblin.entity.GoblinBackOrder;
import com.liquidnet.service.goblin.entity.GoblinBackOrderLog; import com.liquidnet.service.goblin.entity.GoblinBackOrderLog;
import com.liquidnet.service.goblin.entity.GoblinOrderOperationLog; import com.liquidnet.service.goblin.entity.GoblinOrderOperationLog;
import com.liquidnet.service.goblin.entity.GoblinOrderSku; import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.entity.GoblinOrderSku;
import com.liquidnet.service.goblin.param.CouponCanUse2Param;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -213,7 +215,7 @@ public class GoblinOrderUtils { ...@@ -213,7 +215,7 @@ public class GoblinOrderUtils {
} }
} }
public GoblinUseResultVo useStoreCoupon(String ucouponId, String content, BigDecimal totalPrice, String spuId, String uid) { public GoblinUseResultVo useStoreCoupon(String ucouponId, String content, BigDecimal totalPrice, List<GoblinOrderSku> goblinOrderSkuList, String uid) {
try { try {
List<GoblinUserCouponVo> voList = redisUtils.getUserCouponVos(uid); List<GoblinUserCouponVo> voList = redisUtils.getUserCouponVos(uid);
GoblinUseResultVo returnVo = GoblinUseResultVo.getNew(); GoblinUseResultVo returnVo = GoblinUseResultVo.getNew();
...@@ -247,13 +249,19 @@ public class GoblinOrderUtils { ...@@ -247,13 +249,19 @@ public class GoblinOrderUtils {
break; break;
} else { } else {
List<String> spuIds = redisUtils.getStoreCouponSpuIds(vo.getStoreCouponId()); List<String> spuIds = redisUtils.getStoreCouponSpuIds(vo.getStoreCouponId());
if (spuId == null) { if (spuIds == null) {
continue; break;
} }
//判断是否在可用商品内 //判断是否在可用商品内
List<String> spuList = Arrays.asList(spuId.split(",")); BigDecimal contentPrice = BigDecimal.ZERO;
for (String item : spuIds) { for (String item : spuIds) {
if (spuList.contains(item)) { for (GoblinOrderSku param : goblinOrderSkuList) {
if (param.getSpuId().equals(item)) {
contentPrice = contentPrice.add(param.getSkuPriceActual());
}
}
}
if (vo.getTriggers().compareTo(contentPrice) <= 0) {
if (vo.getType().equals("1")) {//代金券 if (vo.getType().equals("1")) {//代金券
returnVo.setValue(vo.getValFace()); returnVo.setValue(vo.getValFace());
returnVo.setCouType(vo.getType()); returnVo.setCouType(vo.getType());
...@@ -274,8 +282,7 @@ public class GoblinOrderUtils { ...@@ -274,8 +282,7 @@ public class GoblinOrderUtils {
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(), queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_COUPON.getKey(),
SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId())); SqlMapping.get("goblin_user_coupon.updateState", vo.getState(), vo.getUsedFor(), LocalDateTime.now(), vo.getUcouponId()));
} }
break;
}
} }
} }
break; break;
......
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