소스 검색

Merge branch 'dev' into 'mp-server-test'

预付票购买

See merge request quanshu/mp-server!677
jiang hao 3 년 전
부모
커밋
c492aac9f1

+ 21 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -55,6 +55,8 @@ import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import javax.validation.Valid;
 
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -197,6 +199,9 @@ public class ChannelOrderController extends BaseApiController {
    */
   @PostMapping("/order/settle")
   @ApiOperation(value = "订单结算" , notes = "购物车里点结算或者单个盲票组商品上点立即购买")
+  @ApiResponses(
+          @ApiResponse(code = 200, message = "success", response = ChannelOrderSettleVO.class)
+  )
   public AjaxResult settle(@Valid @RequestBody ChannelOrderParam param) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
     Long channelId = SecurityUtils.getLoginUser().getChannelId();
@@ -231,11 +236,26 @@ public class ChannelOrderController extends BaseApiController {
       }
     } else {
       TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
-      orderAmt += ticketBox.getPkgSalePrice() * param.getOrderNum();
+      if (param.getIsPre() == 1) {
+        // 预购票金额计算处理
+        orderAmt = ticketBox.getPkgPrePrice() * param.getOrderNum();
+        // 设置类型
+        if (TicketTypeEnum.OFFLINE.equals(ticketBox.getType())) {
+          orderSettleVO.setType(ChannelOrderTypeEnum.OFFLINE_PRE);
+        } else {
+          orderSettleVO.setType(ChannelOrderTypeEnum.ONLINE_PRE);
+        }
+      } else {
+        // 非预购票金额计算处理
+        orderAmt += ticketBox.getPkgSalePrice() * param.getOrderNum();
+        // 设置类型
+        orderSettleVO.setType(ChannelOrderTypeEnum.RETAIL);
+      }
       ChannelCartVO cartVO = mapperFacade.map(ticketBox, ChannelCartVO.class);
       cartVO.setOrderNum(param.getOrderNum());
       orderSettleVO.getItems().add(cartVO);
       pkgNum += param.getOrderNum();
+
     }
 
 

+ 1 - 1
mp-common/src/main/java/com/qs/mp/common/enums/ChannelOrderTypeEnum.java

@@ -12,7 +12,7 @@ import com.qs.mp.common.json.EnumValueDeserializer;
 @JSONType(deserializer = EnumValueDeserializer.class)
 public enum ChannelOrderTypeEnum implements IEnum<Integer> {
 
-    RETAIL(1,"零售票"),
+    RETAIL(1,"普通票"),
     OFFLINE_PRE(2,"线下预购票"),
     ONLINE_PRE(3,"线上预购票");
 

+ 1 - 1
mp-service/src/main/java/com/qs/mp/channel/domain/ChannelOrder.java

@@ -77,7 +77,7 @@ public class ChannelOrder implements Serializable {
   @ApiModelProperty("实付金额")
   private Integer payAmt;
 
-  @ApiModelProperty("订单类型1零售票,2预购票")
+  @ApiModelProperty("订单类型1普通票,2线下预购票,3线上预付票")
   @TableField("type")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private ChannelOrderTypeEnum type;

+ 3 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/param/ChannelOrderParam.java

@@ -21,4 +21,7 @@ public class ChannelOrderParam {
 
 	@ApiModelProperty(value = "收货地址ID",required=false)
 	private Long addrId;
+
+	@ApiModelProperty("是否预付票:0否,1是")
+	private Integer isPre;
 }

+ 4 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelOrderSettleVO.java

@@ -1,5 +1,6 @@
 package com.qs.mp.channel.domain.vo;
 
+import com.qs.mp.common.enums.ChannelOrderTypeEnum;
 import com.qs.mp.user.domain.UserAddr;
 import java.util.ArrayList;
 import java.util.List;
@@ -60,4 +61,7 @@ public class ChannelOrderSettleVO {
    */
   @ApiModelProperty("盲票包数")
   private Integer pkgNum = 0;
+
+  @ApiModelProperty("订单类型1普通票,2线下预购票,3线上预付票")
+  private ChannelOrderTypeEnum type;
 }

+ 7 - 4
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -12,7 +12,7 @@ import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.param.ChannelOrderCancelParam;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.admin.service.ITicketPackageService;
-import com.qs.mp.common.enums.PayOrderStatusEnum;
+import com.qs.mp.common.enums.*;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.pay.service.IPayOrderService;
 import com.qs.mp.pay.service.IWalletService;
@@ -29,9 +29,6 @@ import com.qs.mp.channel.service.IChannelOrderDetailService;
 import com.qs.mp.channel.service.IChannelOrderItemService;
 import com.qs.mp.channel.service.IChannelOrderService;
 import com.qs.mp.common.core.domain.AjaxResult;
-import com.qs.mp.common.enums.ChannelOrderStatusEnum;
-import com.qs.mp.common.enums.TicketBoxStatusEnum;
-import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.pay.domain.PayOrder;
@@ -114,6 +111,11 @@ public class ChannelOrderServiceImpl extends
       item.setFacePrice(ticketBox.getFacePrice());
       item.setOrderNum(channelCartVO.getOrderNum());
       item.setPkgSalePrice(ticketBox.getPkgSalePrice());
+      // 预付票处理
+      if (Objects.nonNull(orderSettleVO.getType()) && !orderSettleVO.getType().equals(ChannelOrderTypeEnum.RETAIL)) {
+          item.setPkgSalePrice(ticketBox.getPkgPrePrice());
+      }
+
       orderItemList.add(item);
       // 累计商品数,拼接标题
       prodNum += channelCartVO.getOrderNum();
@@ -155,6 +157,7 @@ public class ChannelOrderServiceImpl extends
     channelOrder.setCity(addr.getCity());
     channelOrder.setArea(addr.getArea());
     channelOrder.setAddress(addr.getAddr());
+    channelOrder.setType(orderSettleVO.getType());
 
     channelOrderService.save(channelOrder);
     channelOrderItemService.saveBatch(orderItemList);