update 后台管理系统出入账接口问题修复
This commit is contained in:
parent
f8264b2df1
commit
981838726c
|
@ -22,7 +22,7 @@ public abstract class AbstractMongoDbConfig {
|
||||||
return new SimpleMongoClientDatabaseFactory(connectionString);
|
return new SimpleMongoClientDatabaseFactory(connectionString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MongoDatabaseFactory mongoDatabaseNoUserFactory() {
|
public MongoDatabaseFactory mongoDatabaseNoUserFactory(String host, String port, String database) {
|
||||||
String connectionString = "mongodb://"+ host+":"+port +"/" + database;
|
String connectionString = "mongodb://"+ host+":"+port +"/" + database;
|
||||||
return new SimpleMongoClientDatabaseFactory(connectionString);
|
return new SimpleMongoClientDatabaseFactory(connectionString);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.m2pool.manage.config;
|
package com.m2pool.manage.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
@ -11,13 +12,21 @@ import org.springframework.data.mongodb.core.MongoTemplate;
|
||||||
* @Date 2025/7/23 10:00
|
* @Date 2025/7/23 10:00
|
||||||
* @Author yyb
|
* @Author yyb
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Configuration
|
@Configuration
|
||||||
@ConfigurationProperties("spring.data.mongodb.documentation")
|
@ConfigurationProperties("spring.data.mongodb.documentation")
|
||||||
public class MongoDbConfig extends AbstractMongoDbConfig{
|
public class MongoDbConfig extends AbstractMongoDbConfig{
|
||||||
|
|
||||||
|
|
||||||
@Primary
|
@Primary
|
||||||
@Bean(name = "docMongoTemplate")
|
@Bean(name = "docMongoTemplate")
|
||||||
@Override
|
@Override
|
||||||
public MongoTemplate getMongoTemplate() {
|
public MongoTemplate getMongoTemplate() {
|
||||||
return new MongoTemplate(mongoDatabaseNoUserFactory());
|
return new MongoTemplate(mongoDatabaseNoUserFactory(host, port, database));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String database;
|
||||||
|
private String host;
|
||||||
|
private String port;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,21 @@ import java.util.List;
|
||||||
public interface ManageWalletOutInMapper extends BaseMapper<ManageWalletOutIn> {
|
public interface ManageWalletOutInMapper extends BaseMapper<ManageWalletOutIn> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取入账信息
|
||||||
|
* @param startDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@DistributionDB
|
@DistributionDB
|
||||||
List<ManageWalletOutIn> getWalletInfo(
|
List<ManageWalletOutIn> getWalletIn(@Param("startDate") LocalDateTime startDate);
|
||||||
@Param("startDate") LocalDateTime startDate
|
|
||||||
);
|
|
||||||
|
/**
|
||||||
|
* 获取出账信息
|
||||||
|
* @param startDate
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@DistributionDB
|
||||||
|
List<ManageWalletOutIn> getWalletOut(@Param("startDate") LocalDateTime startDate);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.m2pool.manage.task;
|
package com.m2pool.manage.task;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.m2pool.common.core.utils.DateUtils;
|
||||||
import com.m2pool.manage.entity.ManageWalletOutIn;
|
import com.m2pool.manage.entity.ManageWalletOutIn;
|
||||||
import com.m2pool.manage.mapper.ManageBroadcastMapper;
|
import com.m2pool.manage.mapper.ManageBroadcastMapper;
|
||||||
import com.m2pool.manage.mapper.ManageWalletOutInMapper;
|
import com.m2pool.manage.mapper.ManageWalletOutInMapper;
|
||||||
|
@ -12,9 +13,9 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Locale;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description 后台管理系统 定时任务
|
* @Description 后台管理系统 定时任务
|
||||||
|
@ -36,23 +37,113 @@ public class ManageTask {
|
||||||
/**
|
/**
|
||||||
* 存储交易记录定时任务
|
* 存储交易记录定时任务
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "22 21 0/1 * * ?")
|
@Scheduled(cron = "22 17 0/1 * * ?")
|
||||||
|
//@Scheduled(cron = "0 0/1 * * * ?")
|
||||||
public void insertDataToWalletOutInDb(){
|
public void insertDataToWalletOutInDb(){
|
||||||
ManageWalletOutIn manageWalletOutIn = manageWalletOutInMapper.selectOne(new LambdaQueryWrapper<ManageWalletOutIn>().orderByDesc(
|
ManageWalletOutIn manageWalletOutIn = manageWalletOutInMapper.selectOne(new LambdaQueryWrapper<ManageWalletOutIn>()
|
||||||
ManageWalletOutIn::getDate
|
.orderByDesc(ManageWalletOutIn::getDate
|
||||||
).last("limit 1"));
|
).last("limit 1"));
|
||||||
|
|
||||||
LocalDateTime startDate = null;
|
LocalDateTime startDate = null;
|
||||||
|
List<ManageWalletOutIn> manageWalletOutIns = new ArrayList<>();
|
||||||
if (manageWalletOutIn != null){
|
if (manageWalletOutIn != null){
|
||||||
startDate = manageWalletOutIn.getDate();
|
startDate = manageWalletOutIn.getDate();
|
||||||
|
//获取startDate 后的数据,用于比对
|
||||||
|
manageWalletOutIns = manageWalletOutInMapper.selectList(new LambdaQueryWrapper<ManageWalletOutIn>()
|
||||||
|
.ge(ManageWalletOutIn::getDate, startDate.toLocalDate().atStartOfDay()));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ManageWalletOutIn> walletIn = manageWalletOutInMapper.getWalletIn(startDate);
|
||||||
|
List<ManageWalletOutIn> walletOut = manageWalletOutInMapper.getWalletOut(startDate);
|
||||||
|
Map<String, List<ManageWalletOutIn>> walletInMap = walletIn.stream()
|
||||||
|
.collect(Collectors.groupingBy(item ->
|
||||||
|
item.getUser() + item.getCoin() + item.getDate().toLocalDate().atStartOfDay()
|
||||||
|
));
|
||||||
|
Map<String, List<ManageWalletOutIn>> walletOutMap = walletOut.stream()
|
||||||
|
.collect(Collectors.groupingBy(item ->
|
||||||
|
item.getUser() + item.getCoin() + item.getDate().toLocalDate().atStartOfDay()
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
List<ManageWalletOutIn> walletInfo = new ArrayList<>();
|
||||||
|
//外层为out,内层为in
|
||||||
|
for (Map.Entry<String, List<ManageWalletOutIn>> outEntry : walletOutMap.entrySet()) {
|
||||||
|
String key = outEntry.getKey();
|
||||||
|
List<ManageWalletOutIn> outList = outEntry.getValue();
|
||||||
|
|
||||||
|
if (walletInMap.containsKey(key)) {
|
||||||
|
List<ManageWalletOutIn> inList = walletInMap.get(key);
|
||||||
|
|
||||||
|
// 处理 outList 与 inList 匹配的项
|
||||||
|
List<ManageWalletOutIn> updatedOutList = outList.stream()
|
||||||
|
.peek(outItem -> inList.stream()
|
||||||
|
.filter(inItem -> outItem.getMaxHeight().equals(inItem.getMaxHeight()))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresent(inItem -> {
|
||||||
|
outItem.setShouldOutDate(inItem.getShouldOutDate());
|
||||||
|
outItem.setAllocationAmount(inItem.getAllocationAmount());
|
||||||
|
}))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
walletInfo.addAll(updatedOutList);
|
||||||
|
|
||||||
|
// 处理 inList 中未匹配的项
|
||||||
|
List<ManageWalletOutIn> updatedInList = inList.stream()
|
||||||
|
.filter(inItem -> outList.stream()
|
||||||
|
.noneMatch(outItem -> outItem.getMaxHeight().equals(inItem.getMaxHeight())))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
walletInfo.addAll(updatedInList);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
walletInfo.addAll(outList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//外层为in,内层为out -----新增当天只有walletIn,没有walletOut的数据
|
||||||
|
for (Map.Entry<String, List<ManageWalletOutIn>> inEntry : walletInMap.entrySet()) {
|
||||||
|
String key = inEntry.getKey();
|
||||||
|
if (!walletOutMap.containsKey(key)) {
|
||||||
|
walletInfo.addAll(inEntry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
List<ManageWalletOutIn> collect = walletInfo.stream().sorted(Comparator.comparing(ManageWalletOutIn::getDate)).collect(Collectors.toList());
|
||||||
|
//查询ManageWalletOutIn 数据,比对是否修改
|
||||||
|
if (!manageWalletOutIns.isEmpty()){
|
||||||
|
List<ManageWalletOutIn> updateList = new ArrayList<>();
|
||||||
|
List<ManageWalletOutIn> saveList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (ManageWalletOutIn item : collect) {
|
||||||
|
manageWalletOutIns.stream()
|
||||||
|
.filter(dbItem -> dbItem.getCoin().equals(item.getCoin())
|
||||||
|
&& dbItem.getUser().equals(item.getUser())
|
||||||
|
&& dbItem.getMaxHeight().equals(item.getMaxHeight())
|
||||||
|
&& dbItem.getDate().toLocalDate().atStartOfDay().equals(item.getDate().toLocalDate().atStartOfDay()))
|
||||||
|
.findFirst()
|
||||||
|
.ifPresent(dbItem -> {
|
||||||
|
// 若找到匹配项,设置 id 并添加到 updateList
|
||||||
|
item.setId(dbItem.getId());
|
||||||
|
updateList.add(item);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (item.getId() == null){
|
||||||
|
saveList.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!updateList.isEmpty()){
|
||||||
|
boolean update = manageWalletOutInService.updateBatchById(updateList);
|
||||||
|
System.out.println("walletOutIn 修改"+update);
|
||||||
|
}
|
||||||
|
if (!saveList.isEmpty()){
|
||||||
|
boolean save = manageWalletOutInService.saveBatch(saveList);
|
||||||
|
System.out.println("walletOutIn 新增"+save);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
boolean b = manageWalletOutInService.saveBatch(collect);
|
||||||
|
System.out.println("初始化walletOutIn数据"+b);
|
||||||
}
|
}
|
||||||
List<ManageWalletOutIn> walletInfo = manageWalletOutInMapper.getWalletInfo(startDate);
|
|
||||||
boolean b = manageWalletOutInService.saveBatch(walletInfo);
|
|
||||||
System.out.println("walletOutIn 插入结果"+b);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除再离线数据
|
* 删除再离线数据(保留一月数据)
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "5 5 1 * * ?")
|
@Scheduled(cron = "5 5 1 * * ?")
|
||||||
public void deleteOnlineAndOfflineDataForNexa(){
|
public void deleteOnlineAndOfflineDataForNexa(){
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
`user`,
|
`user`,
|
||||||
address,
|
address,
|
||||||
`date`,
|
`date`,
|
||||||
should_out_date as shouldOutDate,
|
DATE(`date`) as shouldOutDate,
|
||||||
max_height,
|
max_height,
|
||||||
allocation_amount as allocationAmount,
|
allocation_amount as allocationAmount,
|
||||||
transfer_amount as transferAmount
|
transfer_amount as transferAmount
|
||||||
|
@ -46,10 +46,10 @@
|
||||||
coin = #{coin} AND `user` = #{user}
|
coin = #{coin} AND `user` = #{user}
|
||||||
<choose>
|
<choose>
|
||||||
<when test="startDate != null and endDate != null">
|
<when test="startDate != null and endDate != null">
|
||||||
and `should_out_date` >= #{startDate} and `should_out_date`<![CDATA[ <= ]]> #{endDate}
|
and DATE(`date`) >= #{startDate} and DATE(`date`) <![CDATA[ <= ]]> #{endDate}
|
||||||
</when>
|
</when>
|
||||||
<otherwise>
|
<otherwise>
|
||||||
and `should_out_date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
|
and `date` >= DATE_SUB(DATE(NOW()), INTERVAL 1 MONTH)
|
||||||
</otherwise>
|
</otherwise>
|
||||||
</choose>
|
</choose>
|
||||||
</where>
|
</where>
|
||||||
|
|
|
@ -5,46 +5,40 @@
|
||||||
|
|
||||||
<mapper namespace="com.m2pool.manage.mapper.ManageWalletOutInMapper">
|
<mapper namespace="com.m2pool.manage.mapper.ManageWalletOutInMapper">
|
||||||
|
|
||||||
<select id="getWalletInfo" resultType="com.m2pool.manage.entity.ManageWalletOutIn">
|
<select id="getWalletIn" resultType="com.m2pool.manage.entity.ManageWalletOutIn">
|
||||||
SELECT
|
SELECT
|
||||||
wi.coin,
|
wi.coin,
|
||||||
wi.`user`,
|
wi.`user`,
|
||||||
wi.should_out_date AS shouldOutDate,
|
wi.should_out_date AS shouldOutDate,
|
||||||
wi.amount AS allocationAmount,
|
wi.amount AS allocationAmount,
|
||||||
wo.address,
|
wi.`create_date` as `date`,
|
||||||
wo.`date`,
|
wi.max_height AS maxHeight
|
||||||
wo.max_height AS maxHeight,
|
|
||||||
wo.tx_id AS txId,
|
|
||||||
wo.amount AS transferAmount
|
|
||||||
FROM
|
FROM
|
||||||
wallet_in wi
|
wallet_in wi
|
||||||
LEFT JOIN wallet_outv2 wo
|
|
||||||
ON
|
|
||||||
DATE(wi.create_date) = DATE(wo.`date`) AND wi.coin = wo.coin AND wi.`user` = wo.`user`
|
|
||||||
<where>
|
<where>
|
||||||
wo.`date` <![CDATA[ <= ]]> NOW()
|
<choose>
|
||||||
<if test="startDate != null">
|
<when test="startDate != null">
|
||||||
AND wo.`date` > #{startDate}
|
wi.`create_date` >= DATE(#{startDate})
|
||||||
</if>
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
wi.`create_date` <![CDATA[ <= ]]> NOW()
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
</where>
|
</where>
|
||||||
UNION
|
</select>
|
||||||
|
<select id="getWalletOut" resultType="com.m2pool.manage.entity.ManageWalletOutIn">
|
||||||
SELECT
|
SELECT
|
||||||
wi.coin,
|
wo.coin,
|
||||||
wi.`user`,
|
wo.`user`,
|
||||||
wi.should_out_date AS shouldOutDate,
|
|
||||||
wi.amount AS allocationAmount,
|
|
||||||
wo.address,
|
wo.address,
|
||||||
wo.`date`,
|
wo.`date`,
|
||||||
wo.max_height AS maxHeight,
|
wo.max_height AS maxHeight,
|
||||||
wo.tx_id AS txId,
|
wo.tx_id AS txId,
|
||||||
wo.amount AS transferAmount
|
wo.amount AS transferAmount
|
||||||
FROM
|
FROM
|
||||||
wallet_in wi
|
wallet_outv2 wo
|
||||||
RIGHT JOIN wallet_outv2 wo
|
|
||||||
ON
|
|
||||||
DATE(wi.create_date) = DATE(wo.`date`) AND wi.coin = wo.coin AND wi.`user` = wo.`user`
|
|
||||||
<where>
|
<where>
|
||||||
wo.`date` <![CDATA[ <= ]]> NOW()
|
AND wo.`date` <![CDATA[ <= ]]> NOW()
|
||||||
<if test="startDate != null">
|
<if test="startDate != null">
|
||||||
AND wo.`date` > #{startDate}
|
AND wo.`date` > #{startDate}
|
||||||
</if>
|
</if>
|
||||||
|
|
|
@ -3371,7 +3371,9 @@ public class DataTask {
|
||||||
List<UserPowerDto> userMhsList = poolMapper.getUserTodayTotalPower("enx", nowStr);
|
List<UserPowerDto> userMhsList = poolMapper.getUserTodayTotalPower("enx", nowStr);
|
||||||
HashMap<String,BigDecimal> map = new HashMap<>();
|
HashMap<String,BigDecimal> map = new HashMap<>();
|
||||||
userMhsList.stream().forEach(e ->{
|
userMhsList.stream().forEach(e ->{
|
||||||
map.put(e.getUser(),e.getMhs().divide(poolMhs,8,BigDecimal.ROUND_HALF_UP));
|
if(poolMhs != BigDecimal.ZERO){
|
||||||
|
map.put(e.getUser(),e.getMhs().divide(poolMhs,8, RoundingMode.HALF_UP));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(map.size() >0){
|
if(map.size() >0){
|
||||||
|
@ -3943,7 +3945,9 @@ public class DataTask {
|
||||||
List<UserPowerDto> userMhsList = poolMapper.getUserTodayTotalPower("alph", nowStr);
|
List<UserPowerDto> userMhsList = poolMapper.getUserTodayTotalPower("alph", nowStr);
|
||||||
HashMap<String,BigDecimal> map = new HashMap<>();
|
HashMap<String,BigDecimal> map = new HashMap<>();
|
||||||
userMhsList.stream().forEach(e ->{
|
userMhsList.stream().forEach(e ->{
|
||||||
map.put(e.getUser(),e.getMhs().divide(poolMhs,8,BigDecimal.ROUND_HALF_UP));
|
if(poolMhs != BigDecimal.ZERO){
|
||||||
|
map.put(e.getUser(),e.getMhs().divide(poolMhs,8, RoundingMode.HALF_UP));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(map.size() >0){
|
if(map.size() >0){
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class OffLineNoticeTask {
|
||||||
if(StringUtils.isNotEmpty(list)){
|
if(StringUtils.isNotEmpty(list)){
|
||||||
//list不为空才处理
|
//list不为空才处理
|
||||||
|
|
||||||
//先获取通知列表
|
//先获取通知列表 TODO 这里查询notice_info为空,notice_info 里面存的从哪里来?
|
||||||
List<NoticeMinerCoinListDto> nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin());
|
List<NoticeMinerCoinListDto> nmcList = noticeMapper.getNoticeEmailListByMinerAndCoin(list, Pools.NEXA.getCoin());
|
||||||
System.out.println("查询到离线通知列表"+nmcList);
|
System.out.println("查询到离线通知列表"+nmcList);
|
||||||
Map<String, List<String>> userEmails = nmcList.stream().
|
Map<String, List<String>> userEmails = nmcList.stream().
|
||||||
|
@ -83,7 +83,7 @@ public class OffLineNoticeTask {
|
||||||
|
|
||||||
|
|
||||||
if(StringUtils.isNotEmpty(userEmails)){
|
if(StringUtils.isNotEmpty(userEmails)){
|
||||||
//获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0
|
//获取上一次离线矿机数 可能为null 要做处理 如果没有redis记录 则上次离线数设置为0 若有redis但是key没有此挖矿账户也设置上次离线数为0 TODO 这里也没看到redis里面存储的位置
|
||||||
Map<String, Long> map = redisService.getCacheMap("NEXA_USERS_OFFLINE");
|
Map<String, Long> map = redisService.getCacheMap("NEXA_USERS_OFFLINE");
|
||||||
list.stream().forEach(e -> {
|
list.stream().forEach(e -> {
|
||||||
long lastOff = 0;
|
long lastOff = 0;
|
||||||
|
|
|
@ -10,6 +10,7 @@ import org.springframework.http.HttpHeaders;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,10 +43,13 @@ public class SocketDemo {
|
||||||
//Date endDate = DateUtils.getPreviousHalfHourOrFullHour(new Date());
|
//Date endDate = DateUtils.getPreviousHalfHourOrFullHour(new Date());
|
||||||
//Date startDate = DateUtils.getOneMonthAgo(endDate);
|
//Date startDate = DateUtils.getOneMonthAgo(endDate);
|
||||||
//System.out.println(startDate+" "+endDate);
|
//System.out.println(startDate+" "+endDate);
|
||||||
String textToTranslate = "<p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"84072040\" _msthash=\"1610\">API 中 coin 字段可目前仅取值支持:nexa</span></p><p _msthidden=\"3\"><span id=\"step\"></span></p><h3 style=\"text-align: start;\" _msttexthash=\"11282648\" _msthash=\"1609\">矿池信息</h3><h3 style=\"text-align: start;\" _msthidden=\"3\"><span style=\"font-size: 16px;\" _msttexthash=\"11308739\" _msthash=\"1608\">公共结构</span></h3><p style=\"text-align: start;\" _msthidden=\"3\"><strong _msttexthash=\"7939243\" _msthash=\"1607\">哈希率</strong></p><p style=\"text-align: start;\" _msttexthash=\"11425713\" _msthash=\"1606\">算力数据</p><p style=\"text-align: start;\" _msthidden=\"3\"><br/></p><table style=\"width: auto;\" _msthidden=\"3\"><tbody><tr><th colspan=\"1\" rowspan=\"1\" width=\"120\" _msttexthash=\"5204511\" _msthash=\"1596\">名称</th><th colspan=\"1\" rowspan=\"1\" width=\"99.03\" _msttexthash=\"5230641\" _msthash=\"1597\">类型</th><th colspan=\"1\" rowspan=\"1\" width=\"117\" style=\"text-align: center;\" _msttexthash=\"4973501\" _msthash=\"1598\">备注</th><th colspan=\"1\" rowspan=\"1\" width=\"186\" style=\"text-align: center;\" _msttexthash=\"7093697\" _msthash=\"1599\">解释</th></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5119231\" _msthash=\"1600\">日期</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"5119231\" _msthash=\"1601\">日期</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\"></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"23246444\" _msthash=\"1602\">算力统计时间</td></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5078437\" _msthash=\"1603\">算力</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"1952132\" _msthash=\"1604\">双</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\"></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5078437\" _msthash=\"1605\">算力</font><br/></td></tr></tbody></table><p _msthidden=\"3\"><span id=\"MinersList\"></span></p><p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"10586056\" _msthash=\"1595\">矿工名单</span></p><p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"20870291\" _msthash=\"1594\">矿工数量数据</span></p><table style=\"width: auto;\" _msthidden=\"3\"><tbody><tr><th colspan=\"1\" rowspan=\"1\" width=\"148.7\" style=\"text-align: center;\" _msttexthash=\"5204511\" _msthash=\"1581\">名称</th><th colspan=\"1\" rowspan=\"1\" width=\"99\" style=\"text-align: center;\" _msttexthash=\"5230641\" _msthash=\"1582\">类型</th><th colspan=\"1\" rowspan=\"1\" width=\"111\" style=\"text-align: center;\" _msttexthash=\"4973501\" _msthash=\"1583\">备注</th><th colspan=\"1\" rowspan=\"1\" width=\"153\" style=\"text-align: center;\" _msttexthash=\"7093697\" _msthash=\"1584\">解释</th></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"2241785\" _msthash=\"1585\">总</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"5064124\" _msthash=\"1586\">整数</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\">"; // 替换为实际要翻译的文本
|
//String textToTranslate = "<p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"84072040\" _msthash=\"1610\">API 中 coin 字段可目前仅取值支持:nexa</span></p><p _msthidden=\"3\"><span id=\"step\"></span></p><h3 style=\"text-align: start;\" _msttexthash=\"11282648\" _msthash=\"1609\">矿池信息</h3><h3 style=\"text-align: start;\" _msthidden=\"3\"><span style=\"font-size: 16px;\" _msttexthash=\"11308739\" _msthash=\"1608\">公共结构</span></h3><p style=\"text-align: start;\" _msthidden=\"3\"><strong _msttexthash=\"7939243\" _msthash=\"1607\">哈希率</strong></p><p style=\"text-align: start;\" _msttexthash=\"11425713\" _msthash=\"1606\">算力数据</p><p style=\"text-align: start;\" _msthidden=\"3\"><br/></p><table style=\"width: auto;\" _msthidden=\"3\"><tbody><tr><th colspan=\"1\" rowspan=\"1\" width=\"120\" _msttexthash=\"5204511\" _msthash=\"1596\">名称</th><th colspan=\"1\" rowspan=\"1\" width=\"99.03\" _msttexthash=\"5230641\" _msthash=\"1597\">类型</th><th colspan=\"1\" rowspan=\"1\" width=\"117\" style=\"text-align: center;\" _msttexthash=\"4973501\" _msthash=\"1598\">备注</th><th colspan=\"1\" rowspan=\"1\" width=\"186\" style=\"text-align: center;\" _msttexthash=\"7093697\" _msthash=\"1599\">解释</th></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5119231\" _msthash=\"1600\">日期</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"5119231\" _msthash=\"1601\">日期</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\"></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"23246444\" _msthash=\"1602\">算力统计时间</td></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5078437\" _msthash=\"1603\">算力</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"1952132\" _msthash=\"1604\">双</font><br/></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\"></td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\"><font _mstmutation=\"1\" _msttexthash=\"5078437\" _msthash=\"1605\">算力</font><br/></td></tr></tbody></table><p _msthidden=\"3\"><span id=\"MinersList\"></span></p><p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"10586056\" _msthash=\"1595\">矿工名单</span></p><p _msthidden=\"3\"><span style=\"color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);\" _msttexthash=\"20870291\" _msthash=\"1594\">矿工数量数据</span></p><table style=\"width: auto;\" _msthidden=\"3\"><tbody><tr><th colspan=\"1\" rowspan=\"1\" width=\"148.7\" style=\"text-align: center;\" _msttexthash=\"5204511\" _msthash=\"1581\">名称</th><th colspan=\"1\" rowspan=\"1\" width=\"99\" style=\"text-align: center;\" _msttexthash=\"5230641\" _msthash=\"1582\">类型</th><th colspan=\"1\" rowspan=\"1\" width=\"111\" style=\"text-align: center;\" _msttexthash=\"4973501\" _msthash=\"1583\">备注</th><th colspan=\"1\" rowspan=\"1\" width=\"153\" style=\"text-align: center;\" _msttexthash=\"7093697\" _msthash=\"1584\">解释</th></tr><tr><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"2241785\" _msthash=\"1585\">总</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\" style=\"text-align: center;\" _msttexthash=\"5064124\" _msthash=\"1586\">整数</td><td colspan=\"1\" rowspan=\"1\" width=\"auto\">"; // 替换为实际要翻译的文本
|
||||||
String apiKey = ""; // 替换为实际的 API 密钥
|
//String apiKey = ""; // 替换为实际的 API 密钥
|
||||||
String response = translate(textToTranslate, apiKey);
|
//String response = translate(textToTranslate, apiKey);
|
||||||
System.out.println(response);
|
//System.out.println(response);
|
||||||
|
|
||||||
|
|
||||||
|
System.out.println(LocalDateTime.now().toLocalDate().atStartOfDay());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
user_miner_account a
|
user_miner_account a
|
||||||
left join user_account_balance b on a.id = b.ma_id
|
left join user_account_balance b on a.id = b.ma_id
|
||||||
where
|
where
|
||||||
`user` = #{user}
|
`user` = #{user} and coin != 'enx'
|
||||||
and a.status = 0
|
and a.status = 0
|
||||||
and b.status = 0
|
and b.status = 0
|
||||||
</select>
|
</select>
|
||||||
|
|
Loading…
Reference in New Issue