浏览代码

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

Dev

See merge request quanshu/mp-server!121
zhong chunping 3 年之前
父节点
当前提交
52d8906cb1

+ 7 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -182,12 +182,14 @@ public class TicketBoxMgrController extends BaseApiController {
 		if (totalSize == 0) {
 		if (totalSize == 0) {
 			return AjaxResult.error("选择的盲票组中没有可导出的数据");
 			return AjaxResult.error("选择的盲票组中没有可导出的数据");
 		}
 		}
-		if(totalSize > 1000) {
-			int totalPage = totalSize%1000 == 0?totalSize/1000:totalSize/1000+1;
+		int pageSize = 5000;
+		if(totalSize > pageSize) {
+			int totalPage = totalSize%pageSize == 0 ? totalSize/pageSize : totalSize/pageSize+1;
 			for (int i = 0; i < totalPage; i++) {
 			for (int i = 0; i < totalPage; i++) {
 				LambdaQueryWrapper<Ticket> pageQueryWrapper = new LambdaQueryWrapper<Ticket>();
 				LambdaQueryWrapper<Ticket> pageQueryWrapper = new LambdaQueryWrapper<Ticket>();
 				pageQueryWrapper.eq(Ticket::getBoxId, ids.getIds().get(0));
 				pageQueryWrapper.eq(Ticket::getBoxId, ids.getIds().get(0));
-				pageQueryWrapper.last("limit "+(i+1)+", 1000");
+				pageQueryWrapper.orderByAsc(Ticket::getSerialNo);
+				pageQueryWrapper.last("limit "+(i+1)+", " + pageSize);
 				List<Ticket> list = ticketService.list(pageQueryWrapper);
 				List<Ticket> list = ticketService.list(pageQueryWrapper);
 				if(null != list && list.size() > 0 ) {
 				if(null != list && list.size() > 0 ) {
 					listAll.addAll(list);
 					listAll.addAll(list);
@@ -196,7 +198,7 @@ public class TicketBoxMgrController extends BaseApiController {
 		}else {
 		}else {
 			listAll = ticketService.list(queryWrapper);
 			listAll = ticketService.list(queryWrapper);
 		}
 		}
-		
+
 		if(null != listAll && listAll.size() > 0 ) {
 		if(null != listAll && listAll.size() > 0 ) {
 			for (Ticket ticket : listAll) {
 			for (Ticket ticket : listAll) {
 				if (null != ticket && StringUtils.isNotBlank(ticket.getSerialNo())
 				if (null != ticket && StringUtils.isNotBlank(ticket.getSerialNo())
@@ -211,7 +213,7 @@ public class TicketBoxMgrController extends BaseApiController {
 				}
 				}
 			}
 			}
 		}
 		}
-		
+
 		ExcelUtil<TicketExcel> util = new ExcelUtil<TicketExcel>(TicketExcel.class);
 		ExcelUtil<TicketExcel> util = new ExcelUtil<TicketExcel>(TicketExcel.class);
 		return util.exportExcel(excelList, "盲票导出数据", true);
 		return util.exportExcel(excelList, "盲票导出数据", true);
 	}
 	}

+ 4 - 4
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -158,11 +158,11 @@ public class UserTicketController extends BaseApiController {
   @ApiOperation(value = "查看兑奖奖品" , notes = "根据盲票ID,查看兑奖奖品")
   @ApiOperation(value = "查看兑奖奖品" , notes = "根据盲票ID,查看兑奖奖品")
   public AjaxResult queryHitPrizeList(@RequestBody TicketParam param) {
   public AjaxResult queryHitPrizeList(@RequestBody TicketParam param) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
     Long userId = SecurityUtils.getLoginUser().getUserId();
-    if (StringUtils.isBlank(param.getSerialNo())) {
+    if (StringUtils.isBlank(param.getTicketId())) {
       return AjaxResult.error("参数异常,盲票ID缺失");
       return AjaxResult.error("参数异常,盲票ID缺失");
     }
     }
 
 
-    Ticket ticket = ticketService.getOne(new LambdaQueryWrapper<Ticket>().eq(Ticket::getSerialNo, param.getSerialNo()));
+    Ticket ticket = ticketService.getById(param.getTicketId());
     if (null == ticket) {
     if (null == ticket) {
       return AjaxResult.error("参数异常,盲票不存在");
       return AjaxResult.error("参数异常,盲票不存在");
     }
     }
@@ -184,12 +184,12 @@ public class UserTicketController extends BaseApiController {
   @ApiOperation(value = "兑奖" , notes = "选择奖品兑奖")
   @ApiOperation(value = "兑奖" , notes = "选择奖品兑奖")
   public AjaxResult cashPrize(@RequestBody TicketParam param) {
   public AjaxResult cashPrize(@RequestBody TicketParam param) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
     Long userId = SecurityUtils.getLoginUser().getUserId();
-    if (StringUtils.isBlank(param.getSerialNo()) || StringUtils.isBlank(param.getAwardsId())
+    if (StringUtils.isBlank(param.getTicketId()) || StringUtils.isBlank(param.getAwardsId())
     || StringUtils.isBlank(param.getPrizeId())) {
     || StringUtils.isBlank(param.getPrizeId())) {
       return AjaxResult.error("参数缺失");
       return AjaxResult.error("参数缺失");
     }
     }
 
 
-    Ticket ticket = ticketService.getOne(new LambdaQueryWrapper<Ticket>().eq(Ticket::getSerialNo, param.getSerialNo()));
+    Ticket ticket = ticketService.getById(param.getTicketId());
     if (null == ticket) {
     if (null == ticket) {
       return AjaxResult.error("参数异常,盲票不存在");
       return AjaxResult.error("参数异常,盲票不存在");
     }
     }

+ 6 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketOrderController.java

@@ -161,11 +161,15 @@ public class UserTicketOrderController extends BaseApiController {
       return AjaxResult.error("订单已过期,请重新下单");
       return AjaxResult.error("订单已过期,请重新下单");
     }
     }
     String orderId = userTicketOrderService.submitOrder(userId, orderSettleVO);
     String orderId = userTicketOrderService.submitOrder(userId, orderSettleVO);
-
+    JSONObject jsonObject = new JSONObject();
+    jsonObject.put("orderId", orderId);
+    if (order.getPayAmt() > 0) {
+      jsonObject.put("needPay", 1);
+    }
     // 清除缓存的订单
     // 清除缓存的订单
     redisCache.deleteObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
     redisCache.deleteObject(RedisKey.build(RedisKey.USER_TICKET_ORDER_KEY, userId));
 
 
-    return AjaxResult.success(orderId);
+    return AjaxResult.success(jsonObject);
   }
   }
 
 
 
 

+ 3 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketParam.java

@@ -13,6 +13,9 @@ public class TicketParam {
 	@ApiModelProperty(value = "盲票序列号",required=false)
 	@ApiModelProperty(value = "盲票序列号",required=false)
 	private String serialNo;
 	private String serialNo;
 
 
+	@ApiModelProperty(value = "盲票ID",required=false)
+	private String ticketId;
+
 	@ApiModelProperty(value = "奖项ID",required=false)
 	@ApiModelProperty(value = "奖项ID",required=false)
 	private String awardsId;
 	private String awardsId;
 
 

+ 57 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -1,17 +1,32 @@
 package com.qs.mp.user.service.impl;
 package com.qs.mp.user.service.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
+import com.qs.mp.common.enums.PrizeStorageStatusEnum;
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.domain.UserDeliverOrderItem;
+import com.qs.mp.user.domain.UserPrizeStorage;
+import com.qs.mp.user.domain.UserTicketOrder;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.mapper.UserDeliverOrderMapper;
 import com.qs.mp.user.mapper.UserDeliverOrderMapper;
+import com.qs.mp.user.service.IUserDeliverOrderItemService;
 import com.qs.mp.user.service.IUserDeliverOrderService;
 import com.qs.mp.user.service.IUserDeliverOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.user.service.IUserPrizeStorageService;
+import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -24,9 +39,17 @@ import org.springframework.transaction.annotation.Transactional;
 @Service
 @Service
 public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMapper, UserDeliverOrder> implements IUserDeliverOrderService {
 public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMapper, UserDeliverOrder> implements IUserDeliverOrderService {
 
 
+  protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
   @Autowired
   @Autowired
   private BizIdGenerator bizIdGenerator;
   private BizIdGenerator bizIdGenerator;
 
 
+  @Autowired
+  private IUserDeliverOrderItemService userDeliverOrderItemService;
+
+  @Autowired
+  private IUserPrizeStorageService userPrizeStorageService;
+
   @Override
   @Override
   @Transactional
   @Transactional
   public String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO) {
   public String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO) {
@@ -51,12 +74,46 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
     }
     }
     save(userDeliverOrder);
     save(userDeliverOrder);
 
 
+    for (UserPrizeStorage prizeStorage : orderSettleVO.getPrizeList()) {
+      UserDeliverOrderItem orderItem = new UserDeliverOrderItem();
+      orderItem.setItemId(bizIdGenerator.newId());
+      orderItem.setOrderId(userDeliverOrder.getOrderId());
+      orderItem.setStorageId(prizeStorage.getStorageId());
+      orderItem.setGoodsId(prizeStorage.getGoodsId());
+      orderItem.setSkuId(prizeStorage.getSkuId());
+      orderItem.setProperties(prizeStorage.getProperties());
+      orderItem.setTitle(prizeStorage.getTitle());
+      orderItem.setPicUrl(prizeStorage.getPicUrl());
+      orderItem.setGoodsNum(prizeStorage.getGoodsNum());
+      userDeliverOrderItemService.save(orderItem);
+      userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+          .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
+          .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
+    }
 
 
     return userDeliverOrder.getOrderId();
     return userDeliverOrder.getOrderId();
   }
   }
 
 
   @Override
   @Override
+  @Transactional
   public boolean cancelOrder(String orderId) {
   public boolean cancelOrder(String orderId) {
+    UserDeliverOrder userDeliverOrder = getById(orderId);
+    if (userDeliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
+      LogUtil.warn(logger, "取消提货订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
+          orderId, userDeliverOrder.getStatus());
+      return false;
+    }
+    // 恢复奖品库状态
+    List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+        .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
+    for (UserDeliverOrderItem orderItem : orderItemList) {
+      boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+          .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
+          .eq(UserPrizeStorage::getStorageId, orderItem.getStorageId())
+          .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED));
+      Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
+    }
+
     return false;
     return false;
   }
   }
 
 

+ 10 - 2
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -120,7 +120,11 @@ public class UserTicketOrderServiceImpl extends
     userTicketOrder.setMemo("");
     userTicketOrder.setMemo("");
     userTicketOrder.setResource(TicketTypeEnum.ONLINE);
     userTicketOrder.setResource(TicketTypeEnum.ONLINE);
     userTicketOrder.setCouponInfo(couponIds);
     userTicketOrder.setCouponInfo(couponIds);
-    userTicketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
+    if (orderSettleVO.getPayAmt() > 0) {
+      userTicketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
+    } else {
+      userTicketOrder.setStatus(UserTicketOrderStatusEnum.FINISHED);
+    }
     save(userTicketOrder);
     save(userTicketOrder);
 
 
     // 查询用户的所属经销商,线上票直接查询
     // 查询用户的所属经销商,线上票直接查询
@@ -160,7 +164,11 @@ public class UserTicketOrderServiceImpl extends
     ticketOrder.setMemo("");
     ticketOrder.setMemo("");
     ticketOrder.setResource(TicketTypeEnum.OFFLINE);
     ticketOrder.setResource(TicketTypeEnum.OFFLINE);
     ticketOrder.setCouponInfo(couponIds);
     ticketOrder.setCouponInfo(couponIds);
-    ticketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
+    if (orderSettleVO.getPayAmt() > 0) {
+      ticketOrder.setStatus(UserTicketOrderStatusEnum.NOT_PAY);
+    } else {
+      ticketOrder.setStatus(UserTicketOrderStatusEnum.FINISHED);
+    }
     save(ticketOrder);
     save(ticketOrder);
 
 
     // 查询用户的所属经销商,线上票直接查询
     // 查询用户的所属经销商,线上票直接查询

+ 5 - 5
mp-service/src/main/resources/mapper/admin/TicketMapper.xml

@@ -13,15 +13,15 @@
         <result column="cipher_lucky_num" property="cipherLuckyNum" />
         <result column="cipher_lucky_num" property="cipherLuckyNum" />
         <result column="plain_lucky_num" property="plainLuckyNum" />
         <result column="plain_lucky_num" property="plainLuckyNum" />
         <result column="draw_num" property="drawNum" />
         <result column="draw_num" property="drawNum" />
-        <result column="IS_PHYSICAL" property="isPhysical" />
-        <result column="STATUS" property="status" />
-        <result column="CREATED_TIME" property="createdTime" />
-        <result column="UPDATED_TIME" property="updatedTime" />
+        <result column="is_physical" property="isPhysical" />
+        <result column="status" property="status" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-        ticket_id, box_id, pkg_id, title, serial_no, face_price, cipher_lucky_num, plain_lucky_num, draw_num, IS_PHYSICAL, STATUS, CREATED_TIME, UPDATED_TIME
+        ticket_id, box_id, pkg_id, title, serial_no, face_price, cipher_lucky_num, plain_lucky_num, draw_num, is_physical, status, created_time, updated_time
     </sql>
     </sql>
 
 
     <select id="getRandOne" resultMap="BaseResultMap">
     <select id="getRandOne" resultMap="BaseResultMap">