package com.taoke.autopay;
|
|
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.manager.OrderPayFailProcessor;
|
import com.taoke.autopay.service.*;
|
import com.taoke.autopay.utils.AlipayOrderUtil;
|
import com.taoke.autopay.utils.Constant;
|
import com.taoke.autopay.utils.TimeUtil;
|
import com.taoke.autopay.vo.SubmitKeyInfo;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.yeshi.utils.UrlUtils;
|
|
import javax.annotation.Resource;
|
import java.util.Collections;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @author hxh
|
* @title: KeyTest
|
* @description: TODO
|
* @date 2024/7/24 6:56
|
*/
|
@SpringBootTest
|
public class KeyTest {
|
|
@Resource
|
private SystemConfigService systemConfigService;
|
|
|
@Resource
|
private KeyOrderService keyOrderService;
|
|
@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) {
|
try {
|
// 需要验证支付宝口令
|
if (urllist.size() < 1) {
|
throw new Exception("口令中不包含链接");
|
}
|
AlipayOrderUtil.AlipayOrderTradeInfo tradeInfo = AlipayOrderUtil.getTradeInfo(urllist.get(0));
|
String orderStatus = "";
|
switch (tradeInfo.getStatus()) {
|
case AlipayOrderUtil.AlipayOrderTradeInfo.STATUS_CANCELED:
|
orderStatus = "订单已取消";
|
break;
|
case AlipayOrderUtil.AlipayOrderTradeInfo.STATUS_PAY:
|
orderStatus = "订单已支付";
|
break;
|
case AlipayOrderUtil.AlipayOrderTradeInfo.STATUS_NOT_PAY:
|
orderStatus = "订单未支付";
|
break;
|
}
|
|
|
if (tradeInfo == null) {
|
throw new Exception("口令内容获取失败");
|
}
|
// 验证内容
|
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");
|
try {
|
addKey(keyInfo, 1L);
|
} catch (KeyVerifyException e) {
|
e.printStackTrace();
|
} catch (KeyOrderException e) {
|
e.printStackTrace();
|
} catch (WxOrderCountException e) {
|
e.printStackTrace();
|
}
|
}
|
|
@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{
|
Long uid = 5413L;
|
int orderType = Constant.ORDER_TYPE_DY;
|
WxUserSettings settings = wxUserSettingService.getUserSettings(uid);
|
|
OrderCountTypeEnum orderCountType = OrderCountTypeEnum.SUBMIT_TOKEN_COUNT;
|
int maxCount = settings.getTotalOrderCountPerDay();
|
switch (orderType) {
|
case Constant.ORDER_TYPE_DY:
|
orderCountType = OrderCountTypeEnum.DY_ORDER_PAY;
|
maxCount = settings.getDyOrderCountPerDay();
|
break;
|
case Constant.ORDER_TYPE_KS:
|
orderCountType = OrderCountTypeEnum.KS_ORDER_PAY;
|
maxCount = settings.getKsOrderCountPerDay();
|
break;
|
}
|
|
try {
|
wxUserOrderCountService.isOrderCountLimit(uid, orderCountType, TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"), 1, maxCount);
|
} catch (WxOrderCountException e) {
|
e.printStackTrace();
|
throw new KeyVerifyException(KeyVerifyException.CODE_COMMON, "今日提交超过" + maxCount + "次");
|
}
|
|
}
|
|
|
}
|