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