Commit 98ef8ec1 by hanghang.wang

华莱士

parent 5254e436
...@@ -40,7 +40,7 @@ public class SpellGroupOrderController { ...@@ -40,7 +40,7 @@ public class SpellGroupOrderController {
@ApiOperation(value = "查询配送费", notes = "查询配送费", produces = "application/json") @ApiOperation(value = "查询配送费", notes = "查询配送费", produces = "application/json")
@ApiAnnotation(logMessage = "querySaasMallDeliveryAmount") @ApiAnnotation(logMessage = "querySaasMallDeliveryAmount")
@PostMapping("/querySaasMallDeliveryAmount") @PostMapping("/querySaasMallDeliveryAmount")
public BaseResponse querySaasMallDeliveryAmount(@LogParams @RequestBody QueryDeliveryTemplateRequest request) { public BaseResponse querySaasMallDeliveryAmount(@Validated @LogParams @RequestBody QueryDeliveryTemplateRequest request) {
return spellGroupOrderService.queryDeliveryAmount(request); return spellGroupOrderService.queryDeliveryAmount(request);
} }
......
package cn.freemud.entities.dto.delivery; package cn.freemud.entities.dto.delivery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
...@@ -9,18 +10,26 @@ import javax.validation.constraints.NotNull; ...@@ -9,18 +10,26 @@ import javax.validation.constraints.NotNull;
* @author wanghanghang * @author wanghanghang
* @title: QueryDeliveryTemplateRequest * @title: QueryDeliveryTemplateRequest
* @projectName order-group * @projectName order-group
* @description: TODO * @description: 查询商城快递费用request
* @date 2021/4/20上午11:03 * @date 2021/4/20上午11:03
*/ */
@Data @Data
public class QueryDeliveryTemplateRequest { public class QueryDeliveryTemplateRequest {
@NotEmpty
@ApiModelProperty(value = "商户号")
private String partnerId; private String partnerId;
@NotEmpty
@ApiModelProperty(value = "城市号")
private String province; private String province;
@NotNull
@ApiModelProperty(value = "订单金额")
private Integer orderAmount; private Integer orderAmount;
@NotNull
@ApiModelProperty(value = "商品数量")
private Integer count; private Integer count;
} }
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.util.List; import java.util.List;
...@@ -16,35 +18,36 @@ import java.util.List; ...@@ -16,35 +18,36 @@ import java.util.List;
*/ */
@Data @Data
public class CreateSpellGroupOrderReq { public class CreateSpellGroupOrderReq {
@NotEmpty(message = "商户号 不能为空")
@ApiModelProperty(value = "商户号")
private String partnerId;
@NotEmpty(message = "sessionId 不能为空") @NotEmpty(message = "sessionId 不能为空")
@ApiModelProperty(value = "sessionId")
private String sessionId; private String sessionId;
/** /**
* 参与拼团编号->团编号 * 参与拼团编号->团编号
*/ */
@ApiModelProperty(value = "参与拼团编号")
private String spellGroupCode; private String spellGroupCode;
@NotEmpty(message = "门店ID 不能为空") @NotEmpty(message = "门店ID 不能为空")
@ApiModelProperty(value = "门店ID")
private String storeId; private String storeId;
@NotEmpty(message = "商户号 不能为空")
private String partnerId;
@Builder.Default
private String menuType = "saasmall";
/** /**
* 渠道类型 OrderChannelType * 渠道类型 OrderChannelType
*/ */
@ApiModelProperty(value = "渠道类型")
private String channelType = "saasmall"; private String channelType = "saasmall";
/*下单渠道必填,根据此字段的值判断是自营或第三方,来走不同的状态机 详细见 orderClientType枚举*/
private Integer orderClient;
/** /**
* 下单支付渠道类型 * 下单支付渠道类型
*/ */
@NotNull(message = "下单支付渠道类型不能为空") @NotNull(message = "下单支付渠道类型不能为空")
@ApiModelProperty(value = "下单支付渠道类型")
private Byte payChannelType; private Byte payChannelType;
/** /**
...@@ -53,57 +56,36 @@ public class CreateSpellGroupOrderReq { ...@@ -53,57 +56,36 @@ public class CreateSpellGroupOrderReq {
@Builder.Default @Builder.Default
private Integer orderType = 3; private Integer orderType = 3;
/**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
@Builder.Default @Builder.Default
@ApiModelProperty(value = "订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单")
private Integer marketingType = 2; private Integer marketingType = 2;
/** @NotEmpty(message = "收货地址 不能为空")
* 收货地址ID @ApiModelProperty(value = "收货地址")
*/
// @NotEmpty(message = "收货地址ID不能为空")
// private String receiveId;
/**
* 收货地址
*/
private String receiveAddress; private String receiveAddress;
/**
* 收货用户名 @NotEmpty(message = "收货用户名 不能为空")
*/ @ApiModelProperty(value = "收货用户名")
private String receiveUsername; private String receiveUsername;
/**
* 收货电话 @NotEmpty(message = "收货电话 不能为空")
*/
@Pattern(regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号码格式不正确") @Pattern(regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号码格式不正确")
@ApiModelProperty(value = "收货电话")
private String receiveMobile; private String receiveMobile;
/**
* 收货人性别 sexType 1 男 2 女 0 未知
*/
private Integer sex;
/**
* 拼团活动号
*/
@NotEmpty(message = "拼团活动号不能为空") @NotEmpty(message = "拼团活动号不能为空")
@ApiModelProperty(value = "拼团活动号")
private String activityCode; private String activityCode;
/**
* 拼团商品集合,本次只会传入一条
*/
@NotNull(message = "拼团商品信息不能为空") @NotNull(message = "拼团商品信息不能为空")
@ApiModelProperty(value = "拼团商品集合")
private List<SpellGroupProduct> spellGroupProductList; private List<SpellGroupProduct> spellGroupProductList;
/** /**
* 订单备注,预留字段
*/
private String orderRemark;
/**
* 城市编号。用于查询配送费 * 城市编号。用于查询配送费
*/ */
@NotEmpty(message = "城市编号不能为空")
@ApiModelProperty(value = "城市编号")
private String province; private String province;
/** /**
......
...@@ -8,18 +8,25 @@ import cn.freemud.entities.vo.CreateSpellGroupOrderReq; ...@@ -8,18 +8,25 @@ import cn.freemud.entities.vo.CreateSpellGroupOrderReq;
* @author wanghanghang * @author wanghanghang
* @title: SpellGroupOrderService * @title: SpellGroupOrderService
* @projectName order-group * @projectName order-group
* @description: TODO * @description: 拼团service
* @date 2021/4/15下午9:01 * @date 2021/4/15下午9:01
*/ */
public interface SpellGroupOrderService { public interface SpellGroupOrderService {
/** /**
* 创建拼团订单 * 创建拼团订单
*
* @param createSpellGroupOrderReq * @param createSpellGroupOrderReq
* @return * @return
*/ */
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq); BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq);
public BaseResponse queryDeliveryAmount(QueryDeliveryTemplateRequest request); /**
* 查询商城运费
*
* @param request
* @return
*/
BaseResponse queryDeliveryAmount(QueryDeliveryTemplateRequest request);
} }
...@@ -108,82 +108,78 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService { ...@@ -108,82 +108,78 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
@Override @Override
public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) { public BaseResponse createSpellGroupOrder(CreateSpellGroupOrderReq createSpellGroupOrderReq) {
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
/*校验用户信息*/ AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(createSpellGroupOrderReq.getSessionId());
String sessionId = createSpellGroupOrderReq.getSessionId();
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN); return ResponseUtil.error(ResponseResult.NOT_LOGIN);
} }
/*初始化service业务DTO类,后续数据转换依据createSpellGroupOrderDto*/ /*初始化service业务DTO类,后续数据收集以及转换依据CreateSpellGroupOrderDto*/
CreateSpellGroupOrderDto createSpellGroupOrderDto = new CreateSpellGroupOrderDto(); CreateSpellGroupOrderDto createSpellGroupOrderDto = new CreateSpellGroupOrderDto();
BeanUtils.copyProperties(createSpellGroupOrderReq, createSpellGroupOrderDto); BeanUtils.copyProperties(createSpellGroupOrderReq, createSpellGroupOrderDto);
createSpellGroupOrderDto.setUserId(userLoginInfoDto.getMemberId()); createSpellGroupOrderDto.setUserId(userLoginInfoDto.getMemberId());
createSpellGroupOrderDto.setNickName(userLoginInfoDto.getNickName()); createSpellGroupOrderDto.setNickName(userLoginInfoDto.getNickName());
/*团id不为空,调用促销查询团是否关闭,关闭之后给提示不可下单*/ /*团id不为空,查询团信息,校验团状态是否正常.调用促销查询团是否关闭,关闭之后给提示不可下单*/
//查询团信息,校验团状态是否正常
if(!StringUtils.isEmpty(createSpellGroupOrderReq.getSpellGroupCode())){ if(!StringUtils.isEmpty(createSpellGroupOrderReq.getSpellGroupCode())){
QuerySpellGroupVo querySpellGroupVo = spellGroupOrderDataManager.queryByGroupId(createSpellGroupOrderDto.getSpellGroupCode(), QuerySpellGroupVo querySpellGroupVo = spellGroupOrderDataManager.queryByGroupId(createSpellGroupOrderDto.getSpellGroupCode(),
createSpellGroupOrderDto.getUserId(),createSpellGroupOrderDto.getActivityCode(),createSpellGroupOrderDto.getPartnerId()); createSpellGroupOrderDto.getUserId(),createSpellGroupOrderDto.getActivityCode(),createSpellGroupOrderDto.getPartnerId());
if(querySpellGroupVo == null){ if(querySpellGroupVo == null){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_WORK_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_WORK_ERROR);
} }
//只有组团中的拼团才可创建拼团订单
if(querySpellGroupVo.getGroup().getGroupStatus() != 0){ if(querySpellGroupVo.getGroup().getGroupStatus() != 0){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_STATUS_IS_NOT_NORMAL); return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_GROUP_STATUS_IS_NOT_NORMAL);
} }
//当前用户是否已参与此团
if(querySpellGroupVo.getIsJoin() == 1){ if(querySpellGroupVo.getIsJoin() == 1){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_ISJOIN_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_ISJOIN_ERROR);
} }
} }
/*---------团开启 则继续执行-------*/ /*获取门店信息,拼单虚拟门店,无需校验。方便后续取值门店名称以及门店英文名称*/
/*获取门店信息,拼单虚拟门店,无需校验*/
StoreResponse storeResponse = spellGroupOrderDataManager.getStoreInfo(createSpellGroupOrderReq.getPartnerId(), createSpellGroupOrderReq.getStoreId(), trackingNo); StoreResponse storeResponse = spellGroupOrderDataManager.getStoreInfo(createSpellGroupOrderReq.getPartnerId(), createSpellGroupOrderReq.getStoreId(), trackingNo);
if(storeResponse == null || storeResponse.getBizVO() == null){ if(storeResponse == null || storeResponse.getBizVO() == null){
return ResponseUtil.error(ResponseResult.STORE_ITEM_QUERY_ERROR); return ResponseUtil.error(ResponseResult.STORE_ITEM_QUERY_ERROR);
} }
//门店信息->转换至DTO /*门店信息->转换至DTO*/
createSpellGroupOrderDto.setStoreResponse(storeResponse); createSpellGroupOrderDto.setStoreResponse(storeResponse);
/*查询配送地址等信息->转换至DTO*/ /*前端传入地址等信息->转换至DTO*/
spellGroupOrderAdapter.convertToReceiveAddress(createSpellGroupOrderDto); spellGroupOrderAdapter.convertToReceiveAddress(createSpellGroupOrderDto);
/*查询商品信息*/ /*查询拼团商品信息->转换至DTO*/
List<ProductInfo> productInfosDto = spellGroupOrderDataManager.queryProductInfos(createSpellGroupOrderDto); List<ProductInfo> productInfosDto = spellGroupOrderDataManager.queryProductInfos(createSpellGroupOrderDto);
if(productInfosDto == null){ if(productInfosDto == null){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_PRODUCT_INFOS_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_PRODUCT_INFOS_ERROR);
} }
createSpellGroupOrderDto.setProducts(productInfosDto); createSpellGroupOrderDto.setProducts(productInfosDto);
/*商品信息查询促销,获取商品价格等信息 转换结算信息*/ /*根据商品信息查询促销,获取商品价格等信息->转换促销结算信息*/
CalculationDiscountRequestDto calculationDiscountRequestDto = spellGroupOrderAdapter.convertToCalculationDiscountRequestDto(createSpellGroupOrderDto, userLoginInfoDto); CalculationDiscountRequestDto calculationDiscountRequestDto = spellGroupOrderAdapter.convertToCalculationDiscountRequestDto(createSpellGroupOrderDto, userLoginInfoDto);
ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = spellGroupOrderDataManager.queryCalculationDiscount(calculationDiscountRequestDto); ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto = spellGroupOrderDataManager.queryCalculationDiscount(calculationDiscountRequestDto);
if(activityCalculationDiscountResponseDto == null){ if(activityCalculationDiscountResponseDto == null){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_CALCULATION_DISCOUNT_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_CALCULATION_DISCOUNT_ERROR);
} }
//促销和产品给出规则,如果促销返回的价格是商品原价,则表示库存不足或者活动关闭 == 拼团的商品价格,肯定比商品原价低 //促销和产品给出规则,如果促销返回的价格是商品原价,则表示库存不足或者活动关闭 肯定:拼团的商品价格,肯定比商品原价低
if (activityCalculationDiscountResponseDto.getResult().getTotalAmount().equals(productInfosDto.get(0).getOriginalPrice())) { if (activityCalculationDiscountResponseDto.getResult().getTotalAmount().equals(productInfosDto.get(0).getOriginalPrice())) {
// todo return ResponseUtil.error(ResponseResult.SPELL_GROUP_ACTIVITE_AMOUNT_ERROR); // todo return ResponseUtil.error(ResponseResult.SPELL_GROUP_ACTIVITE_AMOUNT_ERROR);
} }
createSpellGroupOrderDto.setActivityCalculationDiscountResponseDto(activityCalculationDiscountResponseDto); createSpellGroupOrderDto.setActivityCalculationDiscountResponseDto(activityCalculationDiscountResponseDto);
//转换费用信息->查询配送费 /*转换request->查询快递费用信息->转换dto*/
QueryDeliveryTemplateRequest queryDeliveryTemplateRequest = spellGroupOrderAdapter.convertToQueryDeliveryTemplateRequest(createSpellGroupOrderDto); QueryDeliveryTemplateRequest queryDeliveryTemplateRequest = spellGroupOrderAdapter.convertToQueryDeliveryTemplateRequest(createSpellGroupOrderDto);
QueryDeliveryTemplateResponse queryDeliveryTemplateResponse = spellGroupOrderDataManager.queryDeliveryTemplate(queryDeliveryTemplateRequest); QueryDeliveryTemplateResponse queryDeliveryTemplateResponse = spellGroupOrderDataManager.queryDeliveryTemplate(queryDeliveryTemplateRequest);
if(queryDeliveryTemplateResponse == null ){ if(queryDeliveryTemplateResponse == null ){
return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_DELIVERYTEMPLATE_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_QUERY_DELIVERYTEMPLATE_ERROR);
} }
//转换类存入费用信息->配送费
createSpellGroupOrderDto.setDeliveryTemplateInfoVo(queryDeliveryTemplateResponse.getData()); createSpellGroupOrderDto.setDeliveryTemplateInfoVo(queryDeliveryTemplateResponse.getData());
//DTO转换为订单Request信息 /*createSpellGroupOrderDto转换为订单Request信息*/
com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest createOrderRequest = spellGroupOrderAdapter.convertToCreateOrderRequest(createSpellGroupOrderDto, userLoginInfoDto); com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest createOrderRequest = spellGroupOrderAdapter.convertToCreateOrderRequest(createSpellGroupOrderDto, userLoginInfoDto);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> response = orderSdkService.createOrder(createOrderRequest, trackingNo); com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderInfoReqs> response = orderSdkService.createOrder(createOrderRequest, trackingNo);
CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(response); CreateOrderResponse createOrderResponse = orderSdkAdapter.convent2NEWOrderInfoReqs(response);
if (createOrderResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderResponse.getErrcode().toString()) || createOrderResponse.getData() == null) { if (createOrderResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderResponse.getErrcode().toString()) || createOrderResponse.getData() == null) {
return ResponseUtil.error(ResponseResult.SPELL_GROUP_CREAT_ORDER_ERROR); return ResponseUtil.error(ResponseResult.SPELL_GROUP_CREAT_ORDER_ERROR);
} }
//调用活动库存 /*调用活动库存*/
BaseOrderResponse baseOrderResponse = updateActivityStock(createOrderResponse.getData(), createSpellGroupOrderDto); BaseOrderResponse baseOrderResponse = updateActivityStock(createOrderResponse.getData(), createSpellGroupOrderDto);
if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) { if (!RESPONSE_SUCCESS.equals(baseOrderResponse.getErrcode())) {
return ResponseUtil.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null); return ResponseUtil.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg(), null);
} }
//创建支付 /*创建支付*/
CreatePrepayRequestDto createPrepayRequestDto = spellGroupOrderAdapter.convertToCreatePrepayRequest(userLoginInfoDto, createOrderResponse.getData(), trackingNo); CreatePrepayRequestDto createPrepayRequestDto = spellGroupOrderAdapter.convertToCreatePrepayRequest(userLoginInfoDto, createOrderResponse.getData(), trackingNo);
return orderService.createPrepayOrder(createPrepayRequestDto); return orderService.createPrepayOrder(createPrepayRequestDto);
} }
......
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