Parcourir la source

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

Mp server test

See merge request quanshu/mp-server!216
zhong chunping il y a 3 ans
Parent
commit
29bf62304c

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

@@ -113,10 +113,10 @@ public class CouponMgrController extends BaseApiController {
 	@PostMapping(value = "/detail")
 	public AjaxResult getCouponDetail(@RequestBody JSONObject jsonObject) {
 		String couponId = jsonObject.getString("couponId");
-	    if (StringUtils.isBlank(couponId)){
-	      return error(ErrorCodeEnum.ERROR_CODE_1001);
-	    }
-	    Coupon coupon = couponService.getById(Long.valueOf(couponId));
+		if (StringUtils.isBlank(couponId)){
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+		Coupon coupon = couponService.getById(Long.valueOf(couponId));
 		if(null == coupon) {
 			 return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}

+ 37 - 50
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java

@@ -1,6 +1,5 @@
 package com.qs.mp.web.controller.api.admin;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -16,23 +15,24 @@ import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.GoodsStatusEnum;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import ma.glasnost.orika.MapperFacade;
-
 import java.net.URLDecoder;
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-
+import ma.glasnost.orika.MapperFacade;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -165,7 +165,8 @@ public class GoodsMgrController extends BaseApiController {
 			goods.setSkuProp(getSkuProp(skuList));
 			goodsService.saveGoods(goods, skuList);
 		} catch (Exception e) {
-			return AjaxResult.error("商品'" + goods.getTitle() + "'新增失败" + e.getMessage());
+			LogUtil.error(logger, e, "商品新增失败。");
+			return AjaxResult.error("商品'" + goods.getTitle() + "'新增失败");
 		}
 		return AjaxResult.success("商品'" + goods.getTitle() + "'新增成功");
 	}
@@ -223,60 +224,46 @@ public class GoodsMgrController extends BaseApiController {
 			goods.setSkuProp(getSkuProp(skuList));
 			goodsService.updateGoods(goods, skuList);
 		} catch (Exception e) {
-			return AjaxResult.error("商品'" + goods.getTitle() + "'新增失败" + e.getMessage());
+			LogUtil.error(logger, e, "商品更新失败。");
+			return AjaxResult.error("商品'" + goods.getTitle() + "'更新失败");
 		}
-		return AjaxResult.success("商品'" + goods.getTitle() + "'新成功");
+		return AjaxResult.success("商品'" + goods.getTitle() + "'新成功");
 	}
 
 	// 获取商品的sku
 	public String getSkuProp(List<GoodsSku> skuList) {
-		List<Map<String,Object>> skuMapList = new ArrayList<Map<String,Object>>();
-		if(null != skuList && skuList.size() > 0) {
-			for(GoodsSku sku : skuList) {
-				if(null != sku && StringUtils.isNotBlank(sku.getProperties())) {
-					String[] skuAry = sku.getProperties().split(";");
-					if(null != skuAry && skuAry.length > 0) {
-						for (int i = 0; i < skuAry.length; i++) {
-							String item = skuAry[i];
-							String[] itemAry = item.split(":");
-							if(null != itemAry && itemAry.length > 1) {
-								String key = itemAry[0];
-								Object value = itemAry[1];
-								Map<String,Object> map = new HashMap<String,Object>();
-								map.put(key,value);
-								skuMapList.add(map);
-							}
-						}
+		if (CollectionUtils.isEmpty(skuList)) {
+			return null;
+		}
+		LinkedHashMap<String, HashSet<String>> skuProp = new LinkedHashMap<>();
+		for (GoodsSku sku : skuList) {
+			if (StringUtils.isNotBlank(sku.getProperties())) {
+				String[] skuAry = sku.getProperties().split(";");
+				for (int i = 0; i < skuAry.length; i++) {
+					String item = skuAry[i];
+					String[] itemAry = item.split(":");
+					String key = itemAry[0];
+					String value = itemAry[1];
+					HashSet<String> valueSet = skuProp.get(key);
+					if (null == valueSet) {
+						valueSet = new HashSet<>();
+						skuProp.put(key, valueSet);
 					}
+					valueSet.add(value);
 				}
 			}
 		}
-		if(null != skuMapList && skuMapList.size() > 0) {
-			// 合并key相同的Map
-			Map<String,Object> map = skuMapList.stream().flatMap(m -> m.entrySet().stream())
-		              .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> getObjValue(a,b)));
-			
-			List<Map<String,Object>> mapList=new ArrayList<>(); 
-			for (Map.Entry<String, Object> entry : map.entrySet()) {
-				String key = entry.getKey();
-				Object value = entry.getValue();
-				Map<String, Object> mapObj = new HashMap<String, Object>();
-				mapObj.put("name", key);
-				if (value instanceof List<?>) {
-					mapObj.put("value", value);
-				} else {
-					List<Object> list = new ArrayList<>();
-					list.add(value + "");
-					mapObj.put("value", list);
-				}
-				mapList.add(mapObj);
-			}
-			return JSONArray.toJSONString(mapList);
+		List<JSONObject> skuPropList = new ArrayList<>();
+		for (String key : skuProp.keySet()) {
+			JSONObject jsonObject = new JSONObject();
+			jsonObject.put("name", key);
+			jsonObject.put("value", skuProp.get(key));
+			skuPropList.add(jsonObject);
 		}
-		return null;
+		return JSONObject.toJSONString(skuPropList);
 	}
-	
-	
+
+
 	private Object getObjValue(Object a, Object b){
 		boolean isa = (a instanceof List<?>);
 		boolean isb = (b instanceof List<?>);

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

@@ -75,7 +75,8 @@ public class UserExchangeController extends BaseApiController {
     startPage();
     List<Goods> goodsList = goodsService.list(new LambdaQueryWrapper<Goods>()
         .eq(null != goods.getCategoryId() && 0 != goods.getCategoryId(), Goods::getCategoryId, goods.getCategoryId())
-        .eq(Goods::getStatus, GoodsStatusEnum.PUT_ON));
+        .eq(Goods::getStatus, GoodsStatusEnum.PUT_ON)
+        .eq(Goods::getExchangeShow, 1));
     List<GoodsListVO> goodsListVOList = mapperFacade.mapAsList(goodsList, GoodsListVO.class);
     TableDataInfo rspData = getDataTable(goodsList);
     rspData.setRows(goodsListVOList);

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

@@ -119,14 +119,7 @@ public class UserTicketController extends BaseApiController {
       return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1017);
     }*/
 
-    // 已付款的盲票,需要校验当前用户是否有权限查看
-    /*if (ticket.getStatus() == TicketStatusEnum.ACTIVATED) {
-      Long userId = SecurityUtils.getLoginUser().getUserId();
-      UserTicketOrderItem orderItem = userTicketOrderItemService.queryFinishedOrderItem(userId, ticket.getTicketId());
-      if (null == orderItem) {
-        return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1018);
-      }
-    }*/
+
 
     TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
 
@@ -176,6 +169,12 @@ public class UserTicketController extends BaseApiController {
     if (ticket.getStatus() != TicketStatusEnum.ACTIVATED) {
       return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1019);
     }
+    // 已付款的盲票,需要校验当前用户是否有权限查看
+    UserTicketOrderItem orderItem = userTicketOrderItemService.queryFinishedOrderItem(userId, ticket.getTicketId());
+    if (null == orderItem) {
+      return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1018);
+    }
+
     List<TicketAwardsPrize> ticketAwardsPrizes = userHitPrizeService.listPrize(ticket, userId);
     JSONObject jsonObject = new JSONObject();
     jsonObject.put("prizeList", ticketAwardsPrizes);

+ 10 - 0
mp-admin/src/test/java/com/qs/mp/service/ServiceImplTest.java

@@ -3,6 +3,7 @@ package com.qs.mp.service;
 import com.qs.mp.MpApplication;
 import com.qs.mp.admin.service.ITicketBoxSerialService;
 import com.qs.mp.framework.service.IWxUrlLinkService;
+import com.qs.mp.quartz.task.TicketBoxTask;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +31,9 @@ public class ServiceImplTest {
   @Autowired
   private ITicketBoxSerialService ticketBoxSerialService;
 
+  @Autowired
+  private TicketBoxTask ticketBoxTask;
+
   @Test
   public void testGenerateQrCode() {
     System.out.println(wxUrlLinkService.generateCode("pages/index/index", "id=1", "wx8533800e393dbd6b"));
@@ -55,6 +59,12 @@ public class ServiceImplTest {
   }
 
 
+  @Test
+  public void testCheckTicketBox() {
+    ticketBoxTask.checkPrize("954112676047486977");
+
+  }
+
 
   public static void main(String[] args) {
     /*int n = 500;

+ 3 - 0
mp-common/src/main/java/com/qs/mp/common/enums/SiteTypeEnum.java

@@ -1,13 +1,16 @@
 package com.qs.mp.common.enums;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.annotation.JSONType;
 import com.baomidou.mybatisplus.annotation.IEnum;
+import com.qs.mp.common.json.EnumValueDeserializer;
 
 /**
  *
  * 经销商门店类型
  *
  */
+@JSONType(deserializer = EnumValueDeserializer.class)
 public enum SiteTypeEnum implements IEnum<Integer> {
 
   STREET_STORE(1, "临街门店"),

+ 5 - 2
mp-framework/src/main/java/com/qs/mp/framework/config/SecurityConfig.java

@@ -111,7 +111,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                     "/api/v1/mp/channel/invite/register",
                     "/api/v1/mp/wx/urlschema/generate",
                     "/api/v1/mp/wx/code/generate",
-                    "/api/v1/mp/user/ticket/queryLuckyNum").anonymous()
+                    "/api/v1/mp/user/ticket/queryLuckyNum",
+                    "/api/v1/mp/user/mall/ticket/detail",
+                    "/api/v1/mp/user/mall/ticket/list",
+                    "/api/v1/mp/user/exchange/goods/list",
+                    "/api/v1/mp/user/exchange/goods/detail").anonymous()
                 .antMatchers(
                         HttpMethod.GET,
                         "/",
@@ -129,7 +133,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
                 .antMatchers("/service/notify/**").anonymous()
-                .antMatchers("/api/v1/mp/user/mall/**").anonymous()
 
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

+ 164 - 0
mp-quartz/src/main/java/com/qs/mp/quartz/task/TicketBoxTask.java

@@ -0,0 +1,164 @@
+package com.qs.mp.quartz.task;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.Ticket;
+import com.qs.mp.admin.domain.TicketAwards;
+import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.service.ITicketAwardsService;
+import com.qs.mp.admin.service.ITicketBoxService;
+import com.qs.mp.admin.service.ITicketService;
+import com.qs.mp.common.annotation.Log;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.common.utils.RSAUtil;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.service.IUserTicketOrderService;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.stream.Collectors;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+/**
+ * 检查票组出奖率
+ * @author zhongcp
+ * @Date 2022/3/17
+ */
+@Component("ticketBoxTask")
+public class TicketBoxTask {
+
+  protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
+
+  @Autowired
+  private ITicketService ticketService;
+
+  @Autowired
+  private ITicketAwardsService ticketAwardsService;
+
+  @Autowired
+  private ITicketBoxService ticketBoxService;
+
+  private final int PAGE_SIZE = 100;
+
+  /**
+   * 检查票组中奖分布任务
+   */
+  public void checkPrize(String boxId) {
+    LogUtil.info(logger, "...票组奖品分布检测任务开始...");
+
+    TicketBox ticketBox = ticketBoxService.getById(boxId);
+    List<TicketAwards> ticketAwardsList = ticketAwardsService.list(new LambdaQueryWrapper<TicketAwards>().eq(TicketAwards::getBoxId, boxId));
+    Map<String, TicketAwards> ticketAwardsMap = new HashMap<>();
+    for (TicketAwards ticketAward : ticketAwardsList) {
+      ticketAwardsMap.put(ticketAward.getName(), ticketAward);
+    }
+
+    List<Ticket> listAll = new ArrayList<Ticket>();
+    // 首先查询要导出的数据总数
+    LambdaQueryWrapper<Ticket> queryWrapper = new LambdaQueryWrapper<Ticket>();
+    queryWrapper.eq(Ticket::getBoxId, boxId);
+    int totalSize = ticketService.count(queryWrapper);
+    if (totalSize == 0) {
+      LogUtil.info(logger, "票组票数为0,boxId:{0}", boxId);
+    }
+
+    if(totalSize > PAGE_SIZE) {
+      int totalPage = totalSize%PAGE_SIZE == 0 ? totalSize/PAGE_SIZE : totalSize/PAGE_SIZE+1;
+      for (int i = 0; i < totalPage; i++) {
+        LambdaQueryWrapper<Ticket> pageQueryWrapper = new LambdaQueryWrapper<Ticket>();
+        pageQueryWrapper.select(Ticket::getSerialNo, Ticket::getDrawNum, Ticket::getCipherLuckyNum, Ticket::getPkgId);
+        pageQueryWrapper.eq(Ticket::getBoxId, boxId);
+        pageQueryWrapper.last("limit "+ (i*PAGE_SIZE) +", " + PAGE_SIZE);
+        List<Ticket> list = ticketService.list(pageQueryWrapper);
+        if(null != list && list.size() > 0 ) {
+          listAll.addAll(list);
+        }
+      }
+    }else {
+      listAll = ticketService.list(queryWrapper);
+    }
+
+    HashMap<String, HashMap<String, Integer>> pkgAwardsMap = new HashMap<>();
+    if(null != listAll && listAll.size() > 0 ) {
+      listAll.sort(Comparator.comparing(Ticket::getSerialNo));
+      for (Ticket ticket : listAll) {
+        JSONArray jsonArray = JSONArray.parseArray(ticket.getDrawNum());
+        for (int i = 0; i < jsonArray.size(); i++) {
+          JSONObject jo = jsonArray.getJSONObject(i);
+          String luckyNum = RSAUtil.decrypt(ticket.getCipherLuckyNum());
+//          LogUtil.info(logger, "num:{0},luckyNum:{1}", new Object[]{jo.get("num"), luckyNum});
+          if (jo.get("num") == Integer.valueOf(luckyNum)) {
+            HashMap<String, Integer> awardsMap = pkgAwardsMap.get(ticket.getPkgId());
+            if (awardsMap == null) {
+              awardsMap = new HashMap<>();
+              pkgAwardsMap.put(ticket.getPkgId(), awardsMap);
+            }
+            Integer awardsNum = awardsMap.get(jo.getString("name"));
+            if (null == awardsNum) {
+              awardsNum = 0;
+            }
+            awardsNum += 1;
+            awardsMap.put(jo.getString("name"), awardsNum);
+          }
+        }
+      }
+    }
+    LogUtil.info(logger, "票包奖品分布:{0}", JSONObject.toJSONString(pkgAwardsMap));
+    // 奖级累计中奖数量
+    Map<String, Integer> totalAwardsMap = new HashMap<>();
+    for (String key : pkgAwardsMap.keySet()) {
+      HashMap<String, Integer> awardsMap = pkgAwardsMap.get(key);
+
+      int sumAwardsNum = 0;
+      for (String subKey : awardsMap.keySet()) {
+        sumAwardsNum += awardsMap.get(subKey);
+        Integer totalAwardsNum = totalAwardsMap.get(subKey);
+        if (totalAwardsNum == null) {
+          totalAwardsNum = 0;
+        }
+        totalAwardsNum += awardsMap.get(subKey);
+        totalAwardsMap.put(subKey, totalAwardsNum);
+      }
+      Assert.isTrue(sumAwardsNum == ticketBox.getPkgUnit(), "票包的中奖数和票包张数不匹配。总中奖数:" + sumAwardsNum + ",票包张数:" + ticketBox.getPkgUnit());
+      // 检查票包每个奖项的中奖率是否和整体票组中奖率一致
+      for (String subKey : awardsMap.keySet()) {
+        BigDecimal hitRate = new BigDecimal(awardsMap.get(subKey) * 100).divide(new BigDecimal(sumAwardsNum), 4, RoundingMode.DOWN);
+        // 误差率
+        BigDecimal misRate = ticketAwardsMap.get(subKey).getHitRate().subtract(hitRate).divide(hitRate, 2, RoundingMode.HALF_UP);
+        if (misRate.abs().compareTo(new BigDecimal(0.01)) > 0) {
+          LogUtil.error(logger, "中奖率与整个票组的中奖率误差大于0.01,pkgId:{0},票包奖项:{1},数量:{2},票包中奖率:{3},票组中奖率:{4}",
+              new Object[]{key, subKey, awardsMap.get(subKey), hitRate, ticketAwardsMap.get(subKey).getHitRate()});
+        }
+      }
+      Map<String, Integer> treeMap = new TreeMap<>((str1, str2) -> str1.compareTo(str2));
+      treeMap.putAll(awardsMap);
+      LogUtil.info(logger, "票包{0}奖级分布情况:{1}", new Object[]{key, treeMap});
+    }
+    // 排序
+    Map<String, Integer> resultMap = new TreeMap<>((str1, str2) -> str1.compareTo(str2));
+    resultMap.putAll(totalAwardsMap);
+    for (String key : resultMap.keySet()) {
+      int realNum = resultMap.get(key);
+      LogUtil.info(logger, "奖级{0}数量为{1}", new Object[]{key, realNum});
+      if(realNum != ticketAwardsMap.get(key).getQuantity()) {
+        LogUtil.error(logger, "实际中奖数(" + realNum + ")和票组中奖数(" + ticketAwardsMap.get(key).getQuantity() + ")不等" );
+      }
+    }
+    LogUtil.info(logger, "...票组奖品分布检测任务结束...");
+  }
+}

+ 5 - 5
mp-service/src/main/java/com/qs/mp/admin/domain/vo/CouponVO.java

@@ -24,22 +24,22 @@ import lombok.Data;
 @Data
 public class CouponVO {
 
-	
+
 	/**
 	 * 盲票购买优惠券使用范围限制列表
 	 */
 	private List<TicketBox> ticketBoxList;
-	
+
 	/**
 	 * 经销商门店优惠券使用范围限制列表
 	 */
 	private List<Channel> channelList;
-	
-	
+
+
   /**
    * 主键
    */
-  private String couponId;
+  private Long couponId;
 
   /**
    * 标题

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

@@ -80,7 +80,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
     UserCoupon userCoupon = new UserCoupon();
     userCoupon.setId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userCoupon.setUserId(userId);
-    userCoupon.setVerifyCode(bizIdGenerator.newId());
+    userCoupon.setVerifyCode(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userCoupon.setCouponId(coupon.getCouponId());
     if (coupon.getDueDays() > 0) {
       userCoupon.setValidStart(DateUtils.getToday());

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

@@ -114,13 +114,20 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
     // 创建奖级
     List<TicketAwards> ticketAwardsList = new ArrayList<>();
     List<TicketAwardsPrize> awardsPrizeList = new ArrayList<>();
-    for (TicketAwardsParam awardsParam : param.getAwardsList()) {
+    BigDecimal sumHitRate = BigDecimal.ZERO;
+    for (int i = 0; i < param.getAwardsList().size(); i ++) {
+      TicketAwardsParam awardsParam = param.getAwardsList().get(i);
       TicketAwards ticketAwards = mapperFacade.map(awardsParam, TicketAwards.class);
       ticketAwards.setAwardsId(bizIdGenerator.newId());
       ticketAwards.setBoxId(ticketBox.getBoxId());
-      BigDecimal hitRate = new BigDecimal(awardsParam.getQuantity()).divide(
-          new BigDecimal(ticketBox.getQuantity()), 4, RoundingMode.DOWN);
-      ticketAwards.setHitRate(hitRate);
+      if (i == param.getAwardsList().size() - 1) {
+        ticketAwards.setHitRate(new BigDecimal(100).subtract(sumHitRate));
+      } else {
+        BigDecimal hitRate = new BigDecimal(awardsParam.getQuantity() * 100).divide(
+            new BigDecimal(ticketBox.getQuantity()), 4, RoundingMode.DOWN);
+        sumHitRate.add(hitRate);
+        ticketAwards.setHitRate(hitRate);
+      }
       ticketAwardsList.add(ticketAwards);
 
       for (TicketAwardsPrizeParam prizeParam : awardsParam.getPrizeList()) {

+ 9 - 8
mp-service/src/main/java/com/qs/mp/framework/service/impl/AppTokenServiceImpl.java

@@ -45,17 +45,17 @@ public class AppTokenServiceImpl implements IAppTokenService {
     AppToken token = null;
 //    if (StringUtils.isBlank(appInfo)) {
       token = selectByPrimaryKey(appId);
-      if (null == token) {
+    /*  if (null == token) {
         LogUtil.error(logger, "app_token记录不存在,appId:{0}", appId);
         throw new ServiceException();
       }
-      /*updateCache = true;
+      updateCache = true;
     } else {
       token = JSON.parseObject(appInfo, AppToken.class);
     }
 */
-    LogUtil.info(logger, "token: {0}", JSON.toJSONString(token));
-    if (token.getExpireTimestamp().getTime() < System.currentTimeMillis()) {
+   // LogUtil.info(logger, "token: {0}", JSON.toJSONString(token));
+   // if (token.getExpireTimestamp().getTime() < System.currentTimeMillis()) {
       String res = wxGetAccessToken(appId, token.getAppSecret());
       if (StringUtils.isEmpty(res)) {
         LogUtil.error(logger, "获取access_token为空,appId:{0}, res:{1}", appId,
@@ -64,7 +64,8 @@ public class AppTokenServiceImpl implements IAppTokenService {
       }
       JSONObject jsonObject = JSONObject.parseObject(res);
       String accessToken = jsonObject.getString("access_token");
-      Integer expiresIn = jsonObject.getInteger("expires_in");
+      return accessToken;
+      /*Integer expiresIn = jsonObject.getInteger("expires_in");
       if (StringUtils.isEmpty(accessToken)) {
         LogUtil.error(logger, "获取access_token为空,appId:{0}, res:{1}",
             appId, res);
@@ -73,10 +74,10 @@ public class AppTokenServiceImpl implements IAppTokenService {
       token.setAccessToken(accessToken);
       // 防止时间不同步,此处提前100s超时
       token.setExpireTimestamp(DateUtils.addSeconds(new Date(), expiresIn - 100));
-      appTokenMapper.updateByPrimaryKeySelective(token);
+      appTokenMapper.updateByPrimaryKeySelective(token);*/
  //     updateCache = true;
 
-    }
+   // }
 /*
     if (updateCache) {
       boolean result = redis.set(cacheKey, JSON.toJSONString(token));
@@ -85,7 +86,7 @@ public class AppTokenServiceImpl implements IAppTokenService {
       }
     }*/
 
-    return token.getAccessToken();
+   // return token.getAccessToken();
   }
 
   private String wxGetAccessToken(String appId, String appSecret) {

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

@@ -38,7 +38,7 @@ public class UserTicketOrderItemServiceImpl extends ServiceImpl<UserTicketOrderI
 
     return getBaseMapper().listMyTicketVO(new QueryWrapper<UserTicketOrderItem>()
         .eq("t1.user_id", userId).eq("t2.status", UserTicketOrderStatusEnum.FINISHED)
-        .eq("t3.status", status));
+        .eq("t3.status", status).orderByDesc("t1.created_time"));
   }
 
   @Override