admin
2025-05-09 6159dc58f50d3e4680779b7989bbd4d49a76bad5
src/main/java/com/taoke/autopay/manager/PayCountVerifyManager.java
@@ -10,6 +10,10 @@
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 支付次数管理器
@@ -24,18 +28,19 @@
    private UserSettingService userSettingService;
    /**
     *  验证支付次数
     * 验证支付次数
     *
     * @param uid
     * @param orderType
     * @param orderChannel
     * @throws Exception
     */
    public void verifyPayCount(long uid, int orderType, OrderChannelEnum orderChannel) throws KeyOrderException {
        OrderCountTypeEnum orderCountType=null;
        if(orderType== Constant.ORDER_TYPE_DY){
            orderCountType=OrderCountTypeEnum.DY_ORDER_PAY;
        }else if(orderType==Constant.ORDER_TYPE_KS){
            orderCountType=OrderCountTypeEnum.KS_ORDER_PAY;
        OrderCountTypeEnum orderCountType = null;
        if (orderType == Constant.ORDER_TYPE_DY) {
            orderCountType = OrderCountTypeEnum.DY_ORDER_PAY;
        } else if (orderType == Constant.ORDER_TYPE_KS) {
            orderCountType = OrderCountTypeEnum.KS_ORDER_PAY;
        }
        long todayCount = wxUserOrderCountService.sum(uid, orderCountType, orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
        long totalCount = wxUserOrderCountService.sum(uid, orderCountType, null, null);
@@ -45,5 +50,34 @@
        }
    }
    /**
     * 计算用户剩余支付次数
     *
     * @param uid
     */
    public Map<Integer,Long> computeUserLeftPayCount(Long uid) {
        Map<Integer,Long> map=new HashMap<>();
        OrderCountTypeEnum[] orderTypes = {OrderCountTypeEnum.DY_ORDER_PAY, OrderCountTypeEnum.KS_ORDER_PAY};
        OrderChannelEnum[] orderChannels = {OrderChannelEnum.cyx, OrderChannelEnum.bps, OrderChannelEnum.own};
        for (OrderCountTypeEnum type : orderTypes) {
            List<Long> countList=new ArrayList<>();
            for (OrderChannelEnum orderChannel : orderChannels) {
                long todayCount = wxUserOrderCountService.sum(uid, type, orderChannel, TimeUtil.getGernalTime(System.currentTimeMillis(), Constant.DB_DAY_FORMAT));
                long totalCount = wxUserOrderCountService.sum(uid, type, null, null);
                int maxPayCount = userSettingService.getLimitCountByTotalCount(type.getType(), totalCount, orderChannel);
                long leftCount = maxPayCount - todayCount;
                countList.add(leftCount);
            }
            long maxCount=0;
            for (Long count : countList) {
                if(count>maxCount){
                    maxCount=count;
                }
            }
            map.put(type.getType(),Math.min( maxCount, 50));
        }
        return map;
    }
}