From bc56870059cca013649077af0e53891cba8dbfd1 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期日, 04 八月 2024 09:43:41 +0800 Subject: [PATCH] 代理新功能完善 --- src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java b/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java index cfd41e9..4adf590 100644 --- a/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java +++ b/src/main/java/com/taoke/autopay/service/impl/WxUserOrderCountServiceImpl.java @@ -5,6 +5,7 @@ import com.taoke.autopay.entity.WxUserOrderCount; import com.taoke.autopay.exception.WxOrderCountException; import com.taoke.autopay.factory.OrderFactory; +import com.taoke.autopay.service.UserSettingService; import com.taoke.autopay.service.WxUserOrderCountService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,10 +26,29 @@ @Resource private WxUserOrderCountMapper wxUserOrderCountMapper; + @Resource + private UserSettingService userSettingService; + @Transactional(rollbackFor = Exception.class) @Override public void addOrderCount(Long uid, OrderCountTypeEnum orderType, String day, int count, Integer maxCount) throws WxOrderCountException { + // 缁熻鐢ㄦ埛鎬绘鏁� + WxUserOrderCountMapper.DaoQuery daoQuery=new WxUserOrderCountMapper.DaoQuery(); + daoQuery.uid = uid; + daoQuery.orderType=orderType.getType(); + Long totalCount = wxUserOrderCountMapper.sumOrderCount(daoQuery); + if(totalCount==null){ + totalCount = 0L; + } + if(totalCount>Integer.MAX_VALUE){ + totalCount = (long)Integer.MAX_VALUE; + } + int submitCount = userSettingService.getLimitCountByTotalCount((int)totalCount.longValue()); + if(maxCount==null){ + maxCount =Integer.MAX_VALUE; + } + maxCount = Math.min(submitCount, maxCount); WxUserOrderCount info = new WxUserOrderCount(); info.setDay(day); info.setOrderType(orderType.getType()); @@ -48,6 +68,9 @@ update.setUpdateTime(new Date()); wxUserOrderCountMapper.updateByPrimaryKeySelective(update); } else { + if (maxCount != null && maxCount < count + 0) { + throw new WxOrderCountException(String.format("浠婃棩瓒呰繃鏈�澶ф彁浜ゆ鏁帮紙%s娆★級", maxCount)); + } info.setCreateTime(new Date()); info.setOrderCount(count); wxUserOrderCountMapper.insertSelective(info); @@ -55,6 +78,40 @@ } @Override + public void isOrderCountLimit(Long uid, OrderCountTypeEnum orderType, String day, int count, Integer maxCount) throws WxOrderCountException{ + + WxUserOrderCountMapper.DaoQuery daoQuery=new WxUserOrderCountMapper.DaoQuery(); + daoQuery.uid = uid; + daoQuery.orderType=orderType.getType(); + Long totalCount = wxUserOrderCountMapper.sumOrderCount(daoQuery); + if(totalCount==null){ + totalCount = 0L; + } + if(totalCount>Integer.MAX_VALUE){ + totalCount = (long)Integer.MAX_VALUE; + } + int submitCount = userSettingService.getLimitCountByTotalCount((int)totalCount.longValue()); + if(maxCount==null){ + maxCount =Integer.MAX_VALUE; + } + maxCount = Math.min(submitCount, maxCount); + WxUserOrderCount info = new WxUserOrderCount(); + info.setDay(day); + info.setOrderType(orderType.getType()); + info.setUid(uid); + info.setId(OrderFactory.createId(info)); + // 鍒ゆ柇鏄惁瀛樺湪 + WxUserOrderCount old = wxUserOrderCountMapper.selectByPrimaryKeyForUpdate(info.getId()); + + + if (old != null) { + if (maxCount != null && maxCount < count + old.getOrderCount()) { + throw new WxOrderCountException(String.format("浠婃棩瓒呰繃鏈�澶ф彁浜ゆ鏁帮紙%s娆★級", maxCount)); + } + } + } + + @Override public WxUserOrderCount get(Long uid, OrderCountTypeEnum orderType, String day) { WxUserOrderCountMapper.DaoQuery daoQuery = new WxUserOrderCountMapper.DaoQuery(); daoQuery.uid = uid; -- Gitblit v1.8.0