admin
2025-05-09 6159dc58f50d3e4680779b7989bbd4d49a76bad5
src/test/java/com/taoke/autopay/KeyTest.java
@@ -1,14 +1,21 @@
package com.taoke.autopay;
import com.google.gson.Gson;
import com.taoke.autopay.dao.KeyOrderMapper;
import com.taoke.autopay.dto.DYOrderDto;
import com.taoke.autopay.entity.KeyOrder;
import com.taoke.autopay.entity.OrderCountTypeEnum;
import com.taoke.autopay.entity.SystemConfigKeyEnum;
import com.taoke.autopay.entity.WxUserSettings;
import com.taoke.autopay.exception.KeyOrderException;
import com.taoke.autopay.exception.KeyVerifyException;
import com.taoke.autopay.exception.WxOrderCountException;
import com.taoke.autopay.service.KeyOrderService;
import com.taoke.autopay.service.SystemConfigService;
import com.taoke.autopay.manager.OrderPayFailProcessor;
import com.taoke.autopay.manager.PayCountVerifyManager;
import com.taoke.autopay.service.*;
import com.taoke.autopay.utils.AlipayOrderUtil;
import com.taoke.autopay.utils.Constant;
import com.taoke.autopay.utils.JsonUtil;
import com.taoke.autopay.utils.TimeUtil;
import com.taoke.autopay.vo.SubmitKeyInfo;
import org.junit.jupiter.api.Test;
@@ -16,8 +23,10 @@
import org.yeshi.utils.UrlUtils;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
 * @author hxh
@@ -35,13 +44,19 @@
    @Resource
    private KeyOrderService keyOrderService;
    @Resource
    private KeyOrderMapper keyOrderMapper;
    @Resource
    private OrderPayFailProcessor orderPayFailProcessor;
    private void addKey(SubmitKeyInfo keyInfo, Long wxUid) throws KeyVerifyException, KeyOrderException, WxOrderCountException {
        // 解析链接
        List<String> urllist = UrlUtils.parseUrlsFromText(keyInfo.getKey());
        String verifyAlipayKey = systemConfigService.getValueCache(SystemConfigKeyEnum.ALIPAY_KEY_VERIFY);
        if(verifyAlipayKey!=null&&verifyAlipayKey.trim().equalsIgnoreCase("1")||true) {
        if (verifyAlipayKey != null && verifyAlipayKey.trim().equalsIgnoreCase("1") || true) {
            try {
                // 需要验证支付宝口令
                if (urllist.size() < 1) {
@@ -66,22 +81,25 @@
                    throw new Exception("口令内容获取失败");
                }
                // 验证内容
                DYOrderDto dto = keyOrderService.verifyKey(tradeInfo.getGoodsTitle(), orderStatus, tradeInfo.getItemRealAmount());
            }catch(KeyVerifyException ee){
                throw  ee;
            }
            catch(Exception e){
                DYOrderDto dto = keyOrderService.verifyKey(tradeInfo.getGoodsTitle(), orderStatus, tradeInfo.getItemRealAmount(),null, null);
            } catch (KeyVerifyException ee) {
                throw ee;
            } catch (Exception e) {
                throw new KeyVerifyException(KeyVerifyException.CODE_COMMON, e.getMessage());
            }
        }
    }
    @Test
    public void test1()  {
        SubmitKeyInfo keyInfo=new SubmitKeyInfo();
        keyInfo.setKey("【支fu`寳】亲,复制 Q:/dYsUzQV77s5  p:/S ZH2412 2020/11/27打开支付宝就可以帮我🏮付款啦💪https://ur.alipay.com/_Ig4toHTlLHbBqiJqb3dpC");
    public void test1() {
        SubmitKeyInfo keyInfo = new SubmitKeyInfo();
        keyInfo.setKey("【支.f.u.宝】亲,复制 m:/AYyvvyJ32pG  Y:/e CA8474 2021/01/18打开支付宝\uD83C\uDFEE就可以帮我\uD83C\uDFEE付款啦\uD83C\uDFEEhttps://ur.alipay.com/_1kIJISKdMN6PREE9laoYWS");
        try {
            addKey(keyInfo, 1L);
            KeyOrder keyOrder=new KeyOrder();
            keyOrder.setId("test21123123");
            keyOrder.setKey(keyInfo.getKey());
            keyOrderMapper.insertSelective(keyOrder);
        } catch (KeyVerifyException e) {
            e.printStackTrace();
        } catch (KeyOrderException e) {
@@ -91,4 +109,104 @@
        }
    }
    @Test
    public void testRePay() throws InterruptedException {
        for (int i = 0; i < 10; i++) {
            orderPayFailProcessor.processPayFail("2c9d0dd55cd845819c8e6010fe10def4", "读取支付宝粘贴板超时");
            Thread.sleep(2000);
            orderPayFailProcessor.processFromQueue();
        }
    }
    @Test
    public void statisticAgentId() {
        KeyOrderMapper.DaoQuery query=new KeyOrderMapper.DaoQuery();
        query.hasAgentId=true;
        query.hasPayTime = true;
        query.state =2;
        query.count = 100;
        List<Long> list =   keyOrderService.listAgentId(query);
        System.out.println(list);
    }
    @Test
    public void repaire(){
        KeyOrderMapper.DaoQuery query=new KeyOrderMapper.DaoQuery();
        query.state=3;
        query.minCreateTime=new Date(TimeUtil.convertToTimeTemp("2024-08-02","yyyy-MM-dd"));
        query.stateDesc="订单已支付";
        query.count = 1000;
        List<KeyOrder>  list =  keyOrderService.list(query);
        for(KeyOrder o:list){
            KeyOrder update=new KeyOrder();
            update.setId(o.getId());
            update.setState(KeyOrder.STATE_PAY);
            update.setPayTime(o.getExcutePayTime());
            keyOrderService.update(update);
        }
    }
    @Resource
    private ClientInfoService clientInfoService;
    @Test
    public void test2(){
        List<Long> clientIds = clientInfoService.getRePayClientIds();
        if (clientIds!=null&&clientIds.size()>0) {
            Collections.shuffle(clientIds);
            // 查询设备未执行的数量
            for(Long cuid:clientIds) {
                KeyOrderMapper.DaoQuery daoQuery = new KeyOrderMapper.DaoQuery();
                daoQuery.distributeClientUid =cuid;
                daoQuery.state =  KeyOrder.STATE_NOT_PAY;
                daoQuery.minCreateTime=new Date(System.currentTimeMillis() - 1000*60*30L);
                long count =  keyOrderService.count(daoQuery);
                if(count <=1){
                    // 分配
                    System.out.println( cuid);
                }
            }
        }
    }
    @Resource
    private WxUserSettingService wxUserSettingService;
    @Resource
    private WxUserOrderCountService wxUserOrderCountService;
    @Test
    public void testCount() throws Exception{
    }
    @Test
    public void testSettle(){
        keyOrderService.statisticChannelOrders(5L,new Date(TimeUtil.convertToTimeTemp("20240809","yyyyMMdd")),new Date(TimeUtil.convertToTimeTemp("20240810","yyyyMMdd")));
    }
    @Test
    public void testOrderCount(){
        long wxUid = 15834L;
        long notProcessCount = keyOrderService.countUserNotDoOrder(wxUid, new Date(System.currentTimeMillis() - 1000*60*300));
        System.out.println(notProcessCount);
    }
    @Resource
    private PayCountVerifyManager payCountVerifyManager;
    @Test
    public void test4(){
        Long uid = 2L;
        Map<Integer,Long> map =  payCountVerifyManager.computeUserLeftPayCount(uid);
       System.out.println(new Gson().toJson(map));
    }
}