Commit 98ef8ec1 by hanghang.wang

华莱士

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