Bladeren bron

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

Mp server test

See merge request quanshu/mp-server!276
zhong chunping 3 jaren geleden
bovenliggende
commit
003ebf558a

+ 5 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserExchangeController.java

@@ -25,6 +25,7 @@ import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.GoodsStatusEnum;
 import com.qs.mp.common.enums.TicketBoxStatusEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
+import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.user.domain.param.ExchangeOrderParam;
 import com.qs.mp.user.service.IUserExchangeOrderService;
@@ -118,7 +119,10 @@ public class UserExchangeController extends BaseApiController {
         || param.getOrderNum() == 0) {
       return AjaxResult.error("参数缺失");
     }
-    userExchangeOrderService.exchange(userId, param.getGoodsId(), param.getSkuId(), param.getOrderNum());
+    boolean result = userExchangeOrderService.exchange(userId, param.getGoodsId(), param.getSkuId(), param.getOrderNum());
+    if (!result) {
+      return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1021);
+    }
     return AjaxResult.success();
   }
 

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

@@ -27,7 +27,7 @@ public enum ErrorCodeEnum {
   ERROR_CODE_1018(1018, "无权限查看"),
   ERROR_CODE_1019(1019, "盲票未付款"),
   ERROR_CODE_1020(1020, "库存不足"),
-  ERROR_CODE_1021(1021, "豆余额不足"),
+  ERROR_CODE_1021(1021, "豆余额不足"),
   ;
   private int code;
   private String msg;

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

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.annotation.IEnum;
 public enum PrizeStorageInTypeEnum implements IEnum<Integer> {
 
   TICKET_CASHED(1, "奖品兑奖"),
-  COIN_EXCHANGE(2, "豆兑换");
+  COIN_EXCHANGE(2, "豆兑换");
 
 
   private final int value;

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

@@ -15,7 +15,7 @@ public enum TicketPrizeTypeEnum implements IEnum<String> {
 
   GOODS("goods", "商品"),
   COUPON("coupon", "优惠券"),
-  COIN("coin", "豆");
+  COIN("coin", "豆");
 
   private final String value;
   private final String desc;

+ 4 - 2
mp-framework/src/main/java/com/qs/mp/framework/web/exception/GlobalExceptionHandler.java

@@ -1,5 +1,7 @@
 package com.qs.mp.framework.web.exception;
 
+import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.common.utils.http.HttpHelper;
 import javax.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,7 +19,7 @@ import com.qs.mp.common.utils.StringUtils;
 
 /**
  * 全局异常处理器
- * 
+ *
  * @author ygp
  */
 @RestControllerAdvice
@@ -66,7 +68,7 @@ public class GlobalExceptionHandler
     public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request)
     {
         String requestURI = request.getRequestURI();
-        log.error("请求地址'{}',发生未知异常.", requestURI, e);
+        LogUtil.error(log, e, "请求地址:{0},请求参数:{1}发生未知异常.", new Object[]{requestURI, HttpHelper.getBodyString(request)});
         return AjaxResult.error(e.getMessage());
     }
 

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketMapper.java

@@ -15,7 +15,7 @@ import org.apache.ibatis.annotations.Param;
  * @describe 盲票mapper类
  */
 public interface TicketMapper extends BaseMapper<Ticket> {
-  Ticket getRandOne(@Param(Constants.WRAPPER) Wrapper<Ticket> queryWrapper);
+  Ticket getRandOne(@Param("boxId") String boxId, @Param("status") int status);
 
   List<Ticket> listTicket(@Param(Constants.WRAPPER) Wrapper<Ticket> queryWrapper);
 }

+ 2 - 5
mp-service/src/main/java/com/qs/mp/admin/service/ITicketService.java

@@ -1,15 +1,12 @@
 package com.qs.mp.admin.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.excel.TicketExcel;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 
-import org.apache.ibatis.annotations.Param;
-
 /**
  * <p>
  * 盲票 服务类
@@ -22,10 +19,10 @@ public interface ITicketService extends IService<Ticket> {
 
   /**
    * 随机取一条
-   * @param queryWrapper
+   * @param boxId
    * @return
    */
-  Ticket getRandOne(Wrapper<Ticket> queryWrapper);
+  Ticket getRandOne(String boxId);
 
 
   /**

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -152,7 +152,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
           awardsPrize.setPicUrl(coupon.getPicUrl());
           awardsPrize.setValue(coupon.getDiscount());
         } else {
-          awardsPrize.setTitle("豆");
+          awardsPrize.setTitle("豆");
           awardsPrize.setPicUrl("md.jpeg");
         }
         awardsPrizeList.add(awardsPrize);

+ 2 - 2
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java

@@ -37,8 +37,8 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
 	private int pageSize;
 
 	@Override
-	public Ticket getRandOne(Wrapper<Ticket> queryWrapper) {
-		return getBaseMapper().getRandOne(queryWrapper);
+	public Ticket getRandOne(String boxId) {
+		return getBaseMapper().getRandOne(boxId, 1);
 	}
 
 	@Override

+ 2 - 1
mp-service/src/main/java/com/qs/mp/user/service/IUserExchangeOrderService.java

@@ -18,6 +18,7 @@ public interface IUserExchangeOrderService extends IService<UserExchangeOrder> {
    * @param goodsId
    * @param skuId
    * @param orderNum
+   * @return 余额不足返回false,其他抛异常
    */
-  void exchange(Long userId, Long goodsId, Long skuId, int orderNum);
+  boolean exchange(Long userId, Long goodsId, Long skuId, int orderNum);
 }

+ 4 - 3
mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java

@@ -10,7 +10,6 @@ import com.qs.mp.common.enums.GoodsStatusEnum;
 import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
-import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.UserCoin;
 import com.qs.mp.user.domain.UserExchangeOrder;
@@ -53,7 +52,7 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
 
   @Override
   @Transactional
-  public void exchange(Long userId, Long goodsId, Long skuId, int orderNum) {
+  public boolean exchange(Long userId, Long goodsId, Long skuId, int orderNum) {
     int orderAmt = 0;
     Goods goods = goodsService.getById(goodsId);
     GoodsSku goodsSku = new GoodsSku();
@@ -74,7 +73,7 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
     // 盲豆余额校验
     UserCoin userCoin = userCoinService.getById(userId);
     if (null == userCoin.getCoin() || userCoin.getCoin() < orderAmt) {
-      throw new ServiceException(ErrorCodeEnum.ERROR_CODE_1021);
+      return false;
     }
 
     // 生成兑换订单
@@ -118,5 +117,7 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
         .set(Goods::getExchangedQty, goods.getExchangedQty() + orderNum)
         .eq(Goods::getGoodsId, goodsId).eq(Goods::getQuantity, goods.getQuantity()).eq(Goods::getExchangedQty, goods.getExchangedQty()));
     Assert.isTrue(updateGoods, "兑换商品更新GOODS库存失败。goodsId:" + goodsId );
+
+    return true;
   }
 }

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

@@ -325,8 +325,7 @@ public class UserTicketOrderServiceImpl extends
       Ticket ticket;
       if (ticketOrder.getResource() == TicketTypeEnum.ONLINE) {
         // 线上票,要先分配票ticketId
-        ticket = ticketService.getRandOne(new QueryWrapper<Ticket>()
-            .eq("box_id", ticketOrder.getBoxId()).eq("status", TicketStatusEnum.NOT_PAY));
+        ticket = ticketService.getRandOne(ticketOrder.getBoxId());
         orderItem.setTicketId(ticket.getTicketId());
         boolean rst = userTicketOrderItemService.updateById(orderItem);
         Assert.isTrue(rst, "支付回调用户购票订单处理,更新订单明细的盲票ID失败,itemId:" + orderItem.getItemId());

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

@@ -25,10 +25,11 @@
     </sql>
 
     <select id="getRandOne" resultMap="BaseResultMap">
-        select *
-        from mp_ticket
-        ${ew.customSqlSegment}
-        order by rand() limit 1
+        select t1.*
+        from mp_ticket  as t1
+            JOIN  (SELECT ROUND(RAND() * (SELECT MAX(ticket_id) FROM mp_ticket where box_id = #{boxId} AND status = #{status} )) AS id) AS t2
+        WHERE t1.ticket_id >= t2.id and t1.box_id = #{boxId} AND t1.status = #{status}
+        ORDER BY t1.ticket_id LIMIT 1;
     </select>
 
     <select id="listTicket" resultMap="BaseResultMap">