## Opt - 迁移分享注册流程-适配商城专区邮费&多商品数量
This commit is contained in:
parent
3a2f7c4f26
commit
1a4357ba26
|
@ -2,6 +2,7 @@ package com.hzs.retail.sale.controller.api;
|
|||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.hzs.common.core.annotation.RepeatSubmit;
|
||||
import com.hzs.common.core.config.BdConfig;
|
||||
import com.hzs.common.core.constant.CacheConstants;
|
||||
|
@ -21,6 +22,7 @@ import com.hzs.common.domain.member.ext.CuMemberAccountExt;
|
|||
import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.wares.BdWares;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.security.service.MemberTokenService;
|
||||
import com.hzs.common.security.utils.SecurityUtils;
|
||||
|
@ -38,6 +40,7 @@ import com.hzs.sale.shopping.vo.ShoppingCartVO;
|
|||
import com.hzs.sale.wares.service.IBdWaresService;
|
||||
import com.hzs.sale.wares.service.IBdWaresSpecsSkuService;
|
||||
import com.hzs.system.base.IAreaServiceApi;
|
||||
import com.hzs.system.config.IAwardsServiceApi;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import com.hzs.system.config.dto.GradeDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -82,6 +85,8 @@ public class ApiRetailOrderController {
|
|||
IGradeServiceApi iGradeServiceApi;
|
||||
@DubboReference
|
||||
IAreaServiceApi iAreaServiceApi;
|
||||
@DubboReference
|
||||
IAwardsServiceApi iAwardsServiceApi;
|
||||
@Autowired
|
||||
private MemberTokenService memberTokenService;
|
||||
|
||||
|
@ -200,6 +205,82 @@ public class ApiRetailOrderController {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询邮费
|
||||
*
|
||||
* @param postageParam 邮费入参
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/query-reg-order-postage")
|
||||
public AjaxResult queryRegOrderPostage(@RequestBody RetailOrderPostageParam postageParam) {
|
||||
// 当前会员ID
|
||||
postageParam.setPkCreator(SecurityUtils.getUserId());
|
||||
|
||||
if (ESpecialArea.RETAIL_REGISTER.getValue() == postageParam.getSpecialArea()) {
|
||||
// 注册包邮
|
||||
return AjaxResult.success(RetailOrderPostageVO.builder()
|
||||
.postage(BigDecimal.ZERO)
|
||||
.build());
|
||||
} else {
|
||||
CuMember buyMember;
|
||||
if (StringUtils.isNotEmpty(postageParam.getBuyMemberCode())) {
|
||||
// 购买人不为空,则需要查询重新赋一下
|
||||
buyMember = iMemberServiceApi.getRetailMember(null, postageParam.getBuyMemberCode()).getData();
|
||||
if (null == buyMember) {
|
||||
return AjaxResult.error("会员编号不存在");
|
||||
}
|
||||
} else {
|
||||
buyMember = iMemberServiceApi.getRetailMember(SecurityUtils.getUserId(), null).getData();
|
||||
}
|
||||
|
||||
// 查询邮费
|
||||
RetailOrderParam orderParam = BeanUtil.copyProperties(postageParam, RetailOrderParam.class);
|
||||
// 购物车中获取商品信息
|
||||
BigDecimal orderAmount = BigDecimal.ZERO;
|
||||
List<OrderItemsParam> orderItemsParams = new ArrayList<>();
|
||||
for (FansConfirmOrderWaresParam waresParam : postageParam.getWaresList()) {
|
||||
// 遍历sku
|
||||
// 产品价格等map
|
||||
Map<Long, BdWaresSpecsSkuExt> skuMap = iBdWaresSpecsSkuService.queryWaresSpecsSkuList(waresParam.getSkuList().stream().map(FansConfirmOrderSkuParam::getPkWaresSku).collect(Collectors.toList()));
|
||||
|
||||
// 查询商品
|
||||
BdWares bdWares = iBdWaresService.getWares(waresParam.getPkWares());
|
||||
|
||||
// 缓存数据
|
||||
List<WaresItemsParam> itemsParamList = new ArrayList<>(waresParam.getSkuList().size());
|
||||
// 遍历产品信息
|
||||
for (FansConfirmOrderSkuParam skuParam : waresParam.getSkuList()) {
|
||||
BdWaresSpecsSkuExt specsSku = skuMap.get(skuParam.getPkWaresSku());
|
||||
orderAmount = orderAmount.add(specsSku.getPrice().multiply(new BigDecimal(skuParam.getQuantity() * waresParam.getQuantity())));
|
||||
|
||||
itemsParamList.add(WaresItemsParam.builder()
|
||||
.pkWaresSpecsSku(skuParam.getPkWaresSku().intValue())
|
||||
.quantity(skuParam.getQuantity())
|
||||
.build());
|
||||
}
|
||||
orderItemsParams.add(OrderItemsParam.builder()
|
||||
.waresCode(bdWares.getWaresCode())
|
||||
.quantity(waresParam.getQuantity())
|
||||
.waresItemsParamList(itemsParamList)
|
||||
.build());
|
||||
}
|
||||
if(ObjectUtil.isEmpty(buyMember)){
|
||||
buyMember = new CuMember();
|
||||
List<BdGrade> gradeList = iGradeServiceApi.getRetailGradeList().getData();
|
||||
// Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
buyMember.setPkSettleGrade(gradeList.get(0).getPkId());
|
||||
buyMember.setPkSettleCountry(1);
|
||||
buyMember.setPkAwards(1);
|
||||
}
|
||||
orderParam.setOrderItemsParams(orderItemsParams);
|
||||
iRetailOrderService.createSaOrderItems(orderParam, null, buyMember, null, null);
|
||||
|
||||
return AjaxResult.success(RetailOrderPostageVO.builder()
|
||||
.postage(orderParam.getPostage())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认注册订单
|
||||
*
|
||||
|
@ -618,7 +699,7 @@ public class ApiRetailOrderController {
|
|||
* @param source 数据来源
|
||||
* @return
|
||||
*/
|
||||
@RepeatSubmit
|
||||
// @RepeatSubmit
|
||||
@PostMapping("/fans-confirm-order")
|
||||
public AjaxResult fansConfirmOrder(@RequestBody RetailOrderRegisterParam registerParam,
|
||||
@RequestHeader("Source") Integer source) {
|
||||
|
@ -627,7 +708,8 @@ public class ApiRetailOrderController {
|
|||
// 会员ID
|
||||
registerParam.setPkCreator(SecurityUtils.getUserId());
|
||||
// 新零售注册专区
|
||||
registerParam.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue());
|
||||
// registerParam.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue());
|
||||
registerParam.setSpecialArea(registerParam.getSpecialArea());
|
||||
// 系统类型
|
||||
registerParam.setSystemType(SecurityUtils.getSystemType());
|
||||
|
||||
|
@ -683,6 +765,16 @@ public class ApiRetailOrderController {
|
|||
.build());
|
||||
}
|
||||
registerParam.setOrderItemsParams(orderItemsParams);
|
||||
// if (ESpecialArea.RETAIL_REPURCHASE.getValue() == registerParam.getSpecialArea()) {
|
||||
// CuMember buyMember = iMemberServiceApi.getRetailMember(SecurityUtils.getUserId(), null).getData();
|
||||
// if(ObjectUtil.isEmpty(buyMember)){
|
||||
// buyMember = new CuMember();
|
||||
// buyMember.setPkSettleGrade(gradeList.get(0).getPkId());
|
||||
// buyMember.setPkSettleCountry(1);
|
||||
// buyMember.setPkAwards(1);
|
||||
// }
|
||||
// iRetailOrderService.createSaOrderItems(registerParam, null, buyMember, null, null);
|
||||
// }
|
||||
CuMemberShare memberShare = memberTokenService.getLoginMember().getCuMemberShare();
|
||||
registerParam.setCuMemberShare(memberShare);
|
||||
// registerParam.setPkCreator(memberShare.getPkParent());
|
||||
|
@ -690,7 +782,7 @@ public class ApiRetailOrderController {
|
|||
String str = iRetailOrderService.confirmRegOrder(registerParam, gradeList);
|
||||
// redis 拿金额
|
||||
SaOrderExt saOrder = redisService.getCacheObject(CacheConstants.RETAIL_TEMP_ORDER + registerParam.getPkCreator() + registerParam.getOrderCode());
|
||||
return confirmSharedOrderReturn(str, registerParam.getPkCreator(), registerParam.getShopList(), registerParam.getOrderCode(), saOrder.getOrderAmount());
|
||||
return confirmSharedOrderReturn(str, registerParam.getPkCreator(), registerParam.getShopList(), registerParam.getOrderCode(), saOrder.getOrderAmount().add(saOrder.getPostage()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -109,6 +109,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
CuMember newMember = new CuMember();
|
||||
newMember.setMemberName(registerParam.getMemberName());
|
||||
newMember.setPhone(registerParam.getPhone());
|
||||
newMember.setPkSettleGrade(gradeList.get(0).getPkId());
|
||||
newMember.setPkSettleCountry(1);
|
||||
newMember.setPkAwards(1);
|
||||
// 封装订单信息
|
||||
SaOrderExt saOrderExt = this.createSaOrder(registerParam, gradeList, newMember);
|
||||
|
||||
|
@ -214,6 +217,9 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
}
|
||||
}
|
||||
}
|
||||
}else if(ESpecialArea.RETAIL_REPURCHASE.getValue() == orderParam.getSpecialArea()){
|
||||
// saOrderExt.setOrderAmount(saOrderExt.getOrderAmount().add(orderParam.getPostage()));
|
||||
saOrderExt.setPostage(orderParam.getPostage());
|
||||
}
|
||||
|
||||
return saOrderExt;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.hzs.retail.sale.param;
|
|||
import com.hzs.common.core.constant.CountryConstants;
|
||||
import com.hzs.common.core.enums.EDelivery;
|
||||
import com.hzs.common.core.enums.ETransportType;
|
||||
import com.hzs.sale.order.param.FansConfirmOrderWaresParam;
|
||||
import com.hzs.sale.shopping.vo.ShoppingCartRedis;
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -66,4 +67,10 @@ public class RetailOrderPostageParam implements Serializable {
|
|||
*/
|
||||
private Integer tranType = ETransportType.LAND.getValue();
|
||||
|
||||
|
||||
/**
|
||||
* 商品列表
|
||||
*/
|
||||
private List<FansConfirmOrderWaresParam> waresList;
|
||||
|
||||
}
|
||||
|
|
|
@ -94,7 +94,7 @@ public class ApiBdWaresController extends BaseController {
|
|||
*/
|
||||
@GetMapping("/list-wares-share")
|
||||
public AjaxResult listWaresShare(WaresShareParam param) {
|
||||
param.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue());
|
||||
// param.setSpecialArea(ESpecialArea.RETAIL_REGISTER.getValue());
|
||||
param.setIsMakerGift(EWaresType.ORDINARY.getValue());
|
||||
param.setPkCountry(CountryConstants.CHINA_COUNTRY);
|
||||
|
||||
|
|
|
@ -106,7 +106,9 @@ public class PayController {
|
|||
if (EPayStatus.PAID.getValue() == onlinePayment.getPayStatus()) {
|
||||
return AjaxResult.error("该订单已支付");
|
||||
}
|
||||
|
||||
if(ObjectUtil.isEmpty(onlinePayment.getPayMoney())){
|
||||
return AjaxResult.error("当前订单已经发起过支付,如需再次购买,请重新下单!");
|
||||
}
|
||||
// 同一业务订单多次使用不同支付数据,以最新一次为准
|
||||
onlinePayment.setPayChannel(payChannel.getValue());
|
||||
onlinePayment.setPayType(payType.getValue());
|
||||
|
|
|
@ -70,8 +70,11 @@ public class PayServiceImpl implements IPayService {
|
|||
log.error("支付信息不存在或已支付");
|
||||
return false;
|
||||
}
|
||||
|
||||
String redisKey = CacheConstants.ONLINE_PAY_KEY + businessCode;
|
||||
try {
|
||||
if(!redisService.lockKeyOnce(redisKey, 10)){
|
||||
return false;
|
||||
}
|
||||
if (!PayUtil.checkAmount(onlinePayment.getBusinessMoney(), payMoney)) {
|
||||
// 业务金额 大于 实际支付金额
|
||||
log.error("业务金额大于实际支付金额,支付编号:{}, 支付金额:{}", onlinePayment.getPaymentCode(), payMoney);
|
||||
|
@ -106,6 +109,8 @@ public class PayServiceImpl implements IPayService {
|
|||
.set(TOnlinePayment::getCallbackStatus, ECallbackStatus.FAIL.getValue())
|
||||
.set(TOnlinePayment::getCallbackInfo, e.getMessage())
|
||||
);
|
||||
} finally {
|
||||
redisService.unlock(redisKey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue