admin
2025-08-08 035edfa382d349ba66240fbfef68c14c7cfc95d1
src/main/java/com/taoke/autopay/service/impl/ClientInfoServiceImpl.java
@@ -1,9 +1,11 @@
package com.taoke.autopay.service.impl;
import com.taoke.autopay.dao.ClientInfoMapper;
import com.taoke.autopay.entity.ClientAdditionalInfo;
import com.taoke.autopay.entity.ClientInfo;
import com.taoke.autopay.entity.SystemConfigKeyEnum;
import com.taoke.autopay.exception.LoginException;
import com.taoke.autopay.service.ClientAdditionalInfoService;
import com.taoke.autopay.service.ClientInfoService;
import com.taoke.autopay.service.SystemConfigService;
import com.taoke.autopay.utils.StringUtil;
@@ -11,10 +13,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
/**
 * @author hxh
@@ -29,6 +28,9 @@
    @Resource
    private SystemConfigService systemConfigService;
    @Resource
    private ClientAdditionalInfoService clientAdditionalInfoService;
    @Override
    public ClientInfo login(String account, String pwd) throws LoginException {
@@ -59,9 +61,7 @@
    @Override
    public void setActiveTime(Long id, Date date) {
        ClientInfo info = new ClientInfo();
        info.setId(id);
        info.setActiveTime(date);
        ClientInfo info = ClientInfo.builder().id(id).activeTime(date).build();
        clientInfoMapper.updateByPrimaryKeySelective(info);
    }
@@ -97,27 +97,33 @@
            // 查询最大的账号
            ClientInfoMapper.DaoQuery query = new ClientInfoMapper.DaoQuery();
            query.sortList = Arrays.asList(new String[]{"id desc"});
            query.clientType = info.getClientType();
            query.count = 1;
            List<ClientInfo> list = list(query);
            long maxId = 0;
            if (list.size() > 0) {
                maxId = list.get(0).getId();
            if (!list.isEmpty()) {
                maxId =Long.parseLong(StringUtil.getNumberFromString(list.get(0).getAccount()).split(",")[0]) + 1;
            }
            info.setAccount("c" + maxId);
            if(info.getClientType()==ClientInfo.CLIENT_TYPE_AGENT_PAYMENT) {
                info.setAccount(ClientInfo.ClientType.AGENT_PAYMENT.getAccountPrefix() + maxId);
            }else if(info.getClientType()==ClientInfo.CLIENT_TYPE_ORDER){
                info.setAccount(ClientInfo.ClientType.ORDER.getAccountPrefix() + maxId);
            }
        }
        clientInfoMapper.insertSelective(info);
        ClientInfo update = new ClientInfo();
        update.setId(info.getId());
        update.setName("客户端" + (info.getId() - 1));
        ClientInfo update =  ClientInfo.builder()
                .id(info.getId())
                .name("客户端" + (info.getId() - 1))
                .build();
        clientInfoMapper.updateByPrimaryKeySelective(update);
    }
    @Override
    public void setPwd(Long id, String pwd) {
        ClientInfo update = new ClientInfo();
        update.setId(id);
        update.setPwd(pwd);
        ClientInfo update = ClientInfo.builder()
                .id( id)
                .pwd(pwd)
                .build();
        clientInfoMapper.updateByPrimaryKeySelective(update);
    }
@@ -135,4 +141,36 @@
        }
        return idList;
    }
    @Override
    public List<ClientInfo> getAvailableClientsForOrder() {
        ClientInfoMapper.DaoQuery query = new ClientInfoMapper.DaoQuery();
        query.clientType = ClientInfo.CLIENT_TYPE_ORDER;
        query.count = Integer.MAX_VALUE;
        query.minActiveTime = new Date(System.currentTimeMillis()-1000*60*30);// 30分钟内活跃的设备
        List<ClientInfo> clientInfoList = list(query);
        if(clientInfoList.isEmpty()){
            return clientInfoList;
        }
        // 获取电话号码,支付宝账号,支付宝密码
        List<Long> clientIds=new ArrayList<>();
        clientInfoList.forEach(clientInfo -> {
            clientIds.add(clientInfo.getId());
        });
        Map<Long, ClientAdditionalInfo> map = clientAdditionalInfoService.getClientAdditionalInfoMap(clientIds);
        for(int i=0;i<clientInfoList.size();i++){
            ClientAdditionalInfo info =   map.get(clientInfoList.get(i).getId());
            if(info==null){
                clientInfoList.remove(i);
                i--;
                continue;
            }
            if(StringUtil.isNullOrEmpty(info.getMobile())||StringUtil.isNullOrEmpty(info.getAlipayAccount())||StringUtil.isNullOrEmpty(info.getAlipayPassword())){
                clientInfoList.remove(i);
                i--;
                continue;
            }
        }
        return clientInfoList;
    }
}