diff --git a/m2pool-modules/m2pool-chat/src/main/java/com/m2pool/chat/service/impl/ChatRoomServiceImpl.java b/m2pool-modules/m2pool-chat/src/main/java/com/m2pool/chat/service/impl/ChatRoomServiceImpl.java index fc2fec3..c62ef93 100644 --- a/m2pool-modules/m2pool-chat/src/main/java/com/m2pool/chat/service/impl/ChatRoomServiceImpl.java +++ b/m2pool-modules/m2pool-chat/src/main/java/com/m2pool/chat/service/impl/ChatRoomServiceImpl.java @@ -91,6 +91,7 @@ public class ChatRoomServiceImpl extends ServiceImpl i //1.查询当前用户与对应用户是否已存在创建的聊天室 String userEmail = roomVo.getEmail(); ChatRoomDto roomByUserEmail = chatRoomMapper.findRoomByUserEmail(userEmail); + System.out.println("bby-用户邮箱"+roomByUserEmail); //获取nacos中配置的客服邮箱列表,这个列表中的邮箱实际可能不是客服角色,但能够行驶客服角色功能 List customerEmails = new ArrayList<>(Arrays.asList(webSocketConfig.getDefaultCustomerEmail().split(","))); int i = random.nextInt(customerEmails.size()); @@ -149,14 +150,19 @@ public class ChatRoomServiceImpl extends ServiceImpl i .userOneEmail(userEmail) .userTwoEmail(email) .build(); - int insert = chatRoomMapper.insert(build); - if (insert > 0){ - return R.success(ChatRoomDto.builder() - .id(build.getId()) - .selfEmail(userEmail) - .customerIsOnline(customerIsOnline) - .userEmail(build.getUserTwoEmail()).build()); + try{ + int insert = chatRoomMapper.insert(build); + if (insert > 0){ + return R.success(ChatRoomDto.builder() + .id(build.getId()) + .selfEmail(userEmail) + .customerIsOnline(customerIsOnline) + .userEmail(build.getUserTwoEmail()).build()); + } + }catch (Exception e){ + return R.fail("聊天室已存在,创建聊天室失败"); } + return R.fail("聊天室不存在,并且创建聊天室失败"); } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/constant/CountryConstant.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/constant/CountryConstant.java new file mode 100644 index 0000000..c4c08f2 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/constant/CountryConstant.java @@ -0,0 +1,12 @@ +package com.m2pool.manage.constant; + +/** + * @Description 国家常量类 + * @Date 2025/7/10 14:38 + * @Author yyb + */ +public class CountryConstant { + + public static final String ZH = "zh"; + public static final String EN = "en"; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageDocumentsController.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageDocumentsController.java new file mode 100644 index 0000000..31c7bb7 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageDocumentsController.java @@ -0,0 +1,103 @@ +package com.m2pool.manage.controller; + +import com.m2pool.common.core.Result.R; +import com.m2pool.common.core.web.page.TableDataInfo; +import com.m2pool.common.security.annotation.Logical; +import com.m2pool.common.security.annotation.RequiresLogin; +import com.m2pool.common.security.annotation.RequiresRoles; +import com.m2pool.manage.dto.ManageCatalogueDocumentDto; +import com.m2pool.manage.dto.ManageCatalogueDto; +import com.m2pool.manage.dto.ManageDocumentDto; +import com.m2pool.manage.service.ManageDocumentsService; +import com.m2pool.manage.vo.ManageBaseVo; +import com.m2pool.manage.vo.ManageCatalogueVo; +import com.m2pool.manage.vo.ManageDocumentVo; +import com.m2pool.manage.vo.ManageSearchDocumentVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description 文档信息控制器类 + * @Date 2025/5/22 14:22 + * @Author yyb + */ +@RestController +@RequestMapping("/documents") +@Api(tags = "文档控制器类") +public class ManageDocumentsController { + + @Resource + private ManageDocumentsService manageDocumentsService; + + + @PostMapping("/getListDataByPage") + @ApiOperation(value = "管理系统:分页+条件查询所有的文档 + 业务系统:按关键字搜索文章内容") + //@RequiresLogin + //@RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public TableDataInfo getListDataByPage(@RequestBody ManageSearchDocumentVo manageSearchDocumentVo){ + return manageDocumentsService.getListDataByPage(manageSearchDocumentVo); + } + + @PostMapping("/addDocument") + @ApiOperation(value = "管理系统:新增文档") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R addDocument(@RequestBody ManageDocumentVo manageDocumentVo){ + return manageDocumentsService.addDocument(manageDocumentVo); + } + + @PostMapping("/deleteDocument") + @ApiOperation(value = "管理系统:删除文档") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R deleteDocument(@RequestBody ManageBaseVo manageBaseVo){ + return manageDocumentsService.deleteDocument(manageBaseVo); + } + + @PostMapping("/updateDocument") + @ApiOperation(value = "管理系统:修改文档") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R updateDocument(@RequestBody ManageDocumentVo manageDocumentVo){ + return manageDocumentsService.updateDocument(manageDocumentVo); + } + + @PostMapping("/findDataInfo") + @ApiOperation(value = "管理系统:获取文档详情,用于编辑修改文档 + 业务系统:根据id获取对应的文档详情内容") + //@RequiresLogin + //@RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R findDataInfo(@RequestBody ManageBaseVo manageBaseVo){ + return manageDocumentsService.findDataInfo(manageBaseVo); + } + //@PostMapping("/findDataById") + //@ApiOperation(value = "业务系统:根据id获取对应的文档详情内容") + //public R findDataById(@RequestBody(required = false) ManageBaseVo manageBaseVo){ + // return manageDocumentsService.findDataById(manageBaseVo); + //} + + @PostMapping("/findCatalogueDocumentList") + @ApiOperation(value = "业务系统:获取文档类型对应的文章列表") + public R> findCatalogueDocumentList(@RequestBody ManageCatalogueVo manageCatalogueVo){ + return manageDocumentsService.findCatalogueDocumentList(manageCatalogueVo); + } + + @PostMapping("/findCatalogueList") + @ApiOperation(value = "业务系统:获取文档目录列表 + 管理系统:目录下拉选择框") + public R> findCatalogueList(@RequestBody ManageCatalogueVo manageCatalogueVo){ + return manageDocumentsService.findCatalogueList(manageCatalogueVo); + } + + + //@PostMapping("/searchDocument") + //@ApiOperation(value = "业务系统:按关键字搜索文章内容") + //public TableDataInfo searchDocument(@RequestBody ManageSearchDocumentVo manageSearchDocumentVo){ + // return manageDocumentsService.searchDocument(manageSearchDocumentVo); + //} +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDocumentDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDocumentDto.java new file mode 100644 index 0000000..6989fa1 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDocumentDto.java @@ -0,0 +1,42 @@ +package com.m2pool.manage.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @Description 文档返回对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@ApiModel(value = "ManageDocumentDto", description = "文档返回对象") +public class ManageCatalogueDocumentDto { + @ApiModelProperty(value = "id",example = "1") + private Long id; + + @ApiModelProperty(value = "标题(中文或英文)",example = "文档标题") + private String title; + + @ApiModelProperty(value = "副标题(中文或英文)",example = "文档副标题") + private String subTitle; + + @ApiModelProperty(value = "文档创建者",example = "文档创建者") + private String createUser; + + @ApiModelProperty(value = "最后一次修改,修改人",example = "146555@qq.com") + private String updateUser; + + @ApiModelProperty(value = "修改时间",example = "2025-05-22 14:22:13") + private LocalDateTime updateTime; + + @ApiModelProperty(value = "创建时间",example = "2025-05-22 14:22:13") + private LocalDateTime createTime; + + @ApiModelProperty(value = "文档类型",example = "0其他 1服务条款 2api文档 3挖矿教程") + private Integer type; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDto.java new file mode 100644 index 0000000..ec56be3 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageCatalogueDto.java @@ -0,0 +1,29 @@ +package com.m2pool.manage.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @Description 文档返回对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(value = "ManageCatalogueDto", description = "文档返回对象") +public class ManageCatalogueDto { + + @ApiModelProperty(value = "类型描述",example = "api文档") + private String description; + + @ApiModelProperty(value = "文档类型",example = "1") + private Integer type; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageDocumentDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageDocumentDto.java new file mode 100644 index 0000000..4633e46 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageDocumentDto.java @@ -0,0 +1,45 @@ +package com.m2pool.manage.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @Description 文档返回对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@ApiModel(value = "ManageDocumentDto", description = "文档返回对象") +public class ManageDocumentDto { + @ApiModelProperty(value = "id",example = "1") + private Long id; + + @ApiModelProperty(value = "标题(中文或英文)",example = "文档标题") + private String title; + + @ApiModelProperty(value = "副标题(中文或英文)",example = "文档副标题") + private String subTitle; + + @ApiModelProperty(value = "内容(中文或英文)",example = "文档内容") + private String content; + + @ApiModelProperty(value = "文档创建者",example = "文档创建者") + private String createUser; + + @ApiModelProperty(value = "最后一次修改,修改人",example = "146555@qq.com") + private String updateUser; + + @ApiModelProperty(value = "修改时间",example = "2025-05-22 14:22:13") + private LocalDateTime updateTime; + + @ApiModelProperty(value = "创建时间",example = "2025-05-22 14:22:13") + private LocalDateTime createTime; + + @ApiModelProperty(value = "文档类型",example = "0其他 1服务条款 2api文档 3挖矿教程") + private Integer type; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java index 1802057..aa86efe 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageUserInfoDto.java @@ -1,17 +1,14 @@ package com.m2pool.manage.dto; -import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.apache.catalina.LifecycleState; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.List; /** * @Description 查询用户详情信息放回对象 @@ -35,8 +32,8 @@ public class ManageUserInfoDto { @ApiModelProperty(value = "转账地址",example = "D7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxw") private String address; - @ApiModelProperty(value = "收益分配日期",example = "2025-06-16 00:00:00") - private LocalDateTime createDate; + @ApiModelProperty(value = "实际交易日期",example = "2025-06-16 00:00:00") + private LocalDateTime date; @ApiModelProperty(value = "实际转账日期",example = "2025-06-16 00:00:00") private LocalDateTime shouldOutDate; @@ -44,8 +41,12 @@ public class ManageUserInfoDto { @ApiModelProperty(value = "最大高度",example = "100000") private String maxHeight; - @ApiModelProperty(value = "交易金额",example = " 273920.9666238700") - private BigDecimal amount; + @ApiModelProperty(value = "交易id",example = "0x01") + private String txId; + @ApiModelProperty(value = "分配金额",example = " 273920.9666238700") + private BigDecimal allocationAmount; + @ApiModelProperty(value = "转账金额",example = " 273920.9666238700") + private BigDecimal transferAmount; } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocuments.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocuments.java new file mode 100644 index 0000000..27333ef --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocuments.java @@ -0,0 +1,49 @@ +package com.m2pool.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @Description 广播信息实体类 + * @Date 2025/5/22 14:13 + * @Author yyb + */ +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ManageDocuments { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private String content; + + private String contentEn; + + private String title; + + private String titleEn; + + private String subTitle; + + private String subTitleEn; + + private String createUser; + + private String updateUser; + + private Integer type; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + private Boolean del; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocumentsType.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocumentsType.java new file mode 100644 index 0000000..b006c1e --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageDocumentsType.java @@ -0,0 +1,40 @@ +package com.m2pool.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @Description 管理系统文档类型实体类 + * @Date 2025/5/22 14:13 + * @Author yyb + */ +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ManageDocumentsType { + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + private Integer type; + + private String description; + + private String descriptionEn; + + private String createUser; + + private String updateUser; + + private LocalDateTime createTime; + + private LocalDateTime updateTime; + + private Boolean del; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageWalletOutIn.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageWalletOutIn.java new file mode 100644 index 0000000..a2e0cf6 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/entity/ManageWalletOutIn.java @@ -0,0 +1,46 @@ +package com.m2pool.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @Description TODO + * @Date 2025/7/15 15:34 + * @Author yyb + */ +@Builder +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ManageWalletOutIn { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + private String coin; + + private String user; + + private String address; + + private LocalDateTime date; + + private LocalDateTime shouldOutDate; + + private Integer maxHeight; + + private String txId; + + private BigDecimal allocationAmount; + + + private BigDecimal transferAmount; + + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java index d56b7f6..741cc2e 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageBroadcastMapper.java @@ -33,7 +33,6 @@ public interface ManageBroadcastMapper extends BaseMapper { * @param coin * @return */ - @DistributionDB List getUserInfo(@Param("user") String user,@Param("coin") String coin, @Param("startDate") Date startDate, @Param("endDate") Date endDate); diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageDocumentsMapper.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageDocumentsMapper.java new file mode 100644 index 0000000..a25b30d --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageDocumentsMapper.java @@ -0,0 +1,40 @@ +package com.m2pool.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.m2pool.manage.dto.ManageCatalogueDocumentDto; +import com.m2pool.manage.dto.ManageCatalogueDto; +import com.m2pool.manage.dto.ManageDocumentDto; +import com.m2pool.manage.entity.ManageDocuments; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface ManageDocumentsMapper extends BaseMapper { + + /** + * 分页查询所有文档(中文) + * @return + */ + List getListDataByPage(@Param("keyword") String keyword); + + /** + * 查询所有文档(英文) + * @param keyword + * @return + */ + List getListDataEnByPage(@Param("keyword") String keyword); + + /** + * 查询所有文档类型对应的文章列表 + * @return + */ + List findCatalogueDocumentList(@Param("type") Integer type,@Param("lang") String lang); + + /** + * 查询目录列表 + * @return + */ + List findCatalogueList(@Param("lang") String lang); +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageWalletOutInMapper.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageWalletOutInMapper.java new file mode 100644 index 0000000..99fb1f1 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/mapper/ManageWalletOutInMapper.java @@ -0,0 +1,26 @@ +package com.m2pool.manage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.m2pool.common.datasource.annotation.DistributionDB; +import com.m2pool.common.datasource.annotation.HashRateDB; +import com.m2pool.manage.dto.*; +import com.m2pool.manage.entity.ManageBroadcast; +import com.m2pool.manage.entity.ManageWalletOutIn; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; + +@Mapper +public interface ManageWalletOutInMapper extends BaseMapper { + + + @DistributionDB + List getWalletInfo( + @Param("startDate") LocalDateTime startDate + ); + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageDocumentsService.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageDocumentsService.java new file mode 100644 index 0000000..1a0d97d --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageDocumentsService.java @@ -0,0 +1,91 @@ +package com.m2pool.manage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.m2pool.common.core.Result.R; +import com.m2pool.common.core.web.page.TableDataInfo; +import com.m2pool.manage.dto.ManageCatalogueDocumentDto; +import com.m2pool.manage.dto.ManageCatalogueDto; +import com.m2pool.manage.dto.ManageDocumentDto; +import com.m2pool.manage.entity.ManageDocuments; +import com.m2pool.manage.vo.ManageBaseVo; +import com.m2pool.manage.vo.ManageCatalogueVo; +import com.m2pool.manage.vo.ManageDocumentVo; +import com.m2pool.manage.vo.ManageSearchDocumentVo; + +import java.util.List; + + +/** + * @Description 广播信息 服务接口 + */ +public interface ManageDocumentsService extends IService { + + /** + * @Description 管理系统:分页+条件查询所有的文档 + * @param manageSearchDocumentVo + * @return + */ + TableDataInfo getListDataByPage( ManageSearchDocumentVo manageSearchDocumentVo); + + /** + * @Description 业务系统:根据id获取对应的文档详情内容 + 管理系统:根据id获取文档详情,用于编辑修改文档 + * @param manageBaseVo + * @return + */ + R findDataById(ManageBaseVo manageBaseVo); + + + + /** + * @Description 管理系统:新增文档 + * @param manageDocumentVo + * @return + */ + R addDocument( ManageDocumentVo manageDocumentVo); + + /** + * @Description 管理系统:删除文档 + * @param manageBaseVo + * @return + */ + R deleteDocument(ManageBaseVo manageBaseVo); + + /** + * @Description 管理系统:修改文档 + * @param manageDocumentVo + * @return + */ + R updateDocument(ManageDocumentVo manageDocumentVo); + + + /** + * @Description 管理系统:获取文档详情,用于编辑修改文档 + * @param manageBaseVo + * @return + */ + R findDataInfo( ManageBaseVo manageBaseVo); + + + + /** + * @Description 业务系统:获取文档目录列表 + * @param manageCatalogueVo + * @return + */ + R> findCatalogueDocumentList(ManageCatalogueVo manageCatalogueVo); + + + /** + * @Description 业务系统:搜索文档 + * @param manageSearchDocumentVo + * @return + */ + TableDataInfo searchDocument( ManageSearchDocumentVo manageSearchDocumentVo); + + + /** + * @Description 业务系统:获取文档目录列表 + 管理系统:目录下拉选择框 + * @return + */ + R> findCatalogueList(ManageCatalogueVo manageCatalogueVo); +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageWalletOutInService.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageWalletOutInService.java new file mode 100644 index 0000000..c47f06a --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageWalletOutInService.java @@ -0,0 +1,22 @@ +package com.m2pool.manage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.m2pool.common.core.Result.R; +import com.m2pool.common.core.web.page.TableDataInfo; +import com.m2pool.manage.dto.ManageBroadcastDto; +import com.m2pool.manage.entity.ManageBroadcast; +import com.m2pool.manage.entity.ManageWalletOutIn; +import com.m2pool.manage.vo.ManageBaseVo; +import com.m2pool.manage.vo.ManageBroadcastVo; +import com.m2pool.manage.vo.PageVo; + +import java.util.List; + + +/** + * @Description 广播信息 服务接口 + */ +public interface ManageWalletOutInService extends IService { + + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageDocumentsServiceImpl.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageDocumentsServiceImpl.java new file mode 100644 index 0000000..7873119 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageDocumentsServiceImpl.java @@ -0,0 +1,221 @@ +package com.m2pool.manage.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.m2pool.common.core.Result.R; +import com.m2pool.common.core.constant.HttpStatus; +import com.m2pool.common.core.web.page.TableDataInfo; +import com.m2pool.common.security.utils.SecurityUtils; +import com.m2pool.manage.constant.CountryConstant; +import com.m2pool.manage.dto.ManageCatalogueDocumentDto; +import com.m2pool.manage.dto.ManageCatalogueDto; +import com.m2pool.manage.dto.ManageDocumentDto; +import com.m2pool.manage.entity.ManageDocuments; +import com.m2pool.manage.mapper.ManageDocumentsMapper; +import com.m2pool.manage.service.ManageDocumentsService; +import com.m2pool.manage.utils.TranslateUtils; +import com.m2pool.manage.vo.ManageBaseVo; +import com.m2pool.manage.vo.ManageCatalogueVo; +import com.m2pool.manage.vo.ManageDocumentVo; +import com.m2pool.manage.vo.ManageSearchDocumentVo; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * @Description 文档信息 服务器类 + */ +@Service +public class ManageDocumentsServiceImpl extends ServiceImpl implements ManageDocumentsService { + + + @Resource + private ManageDocumentsMapper manageDocumentsMapper; + + @Override + public TableDataInfo getListDataByPage(ManageSearchDocumentVo manageSearchDocumentVo) { + PageHelper.startPage(manageSearchDocumentVo.getPageNum(), manageSearchDocumentVo.getPageSize()); + List listDataByPage; + if (CountryConstant.EN.equals(manageSearchDocumentVo.getLang())){ + listDataByPage = manageDocumentsMapper.getListDataByPage(manageSearchDocumentVo.getKeyword()); + }else{ + listDataByPage = manageDocumentsMapper.getListDataByPage(manageSearchDocumentVo.getKeyword()); + } + return getDataTable(listDataByPage); + } + + private TableDataInfo getDataTable(List list) + { + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(list); + rspData.setMsg("查询成功"); + PageInfo pageInfo = new PageInfo(list); + rspData.setTotal(pageInfo.getTotal()); + rspData.setTotalPage(pageInfo.getPages()); + PageHelper.clearPage(); + return rspData; + } + @Override + public R findDataById(ManageBaseVo manageBaseVo) { + ManageDocuments documents = this.getById(manageBaseVo.getId()); + ManageDocumentDto build = ManageDocumentDto.builder() + .id(documents.getId()) + .title(documents.getTitle()) + .subTitle(documents.getSubTitle()) + .content(documents.getContent()) + .createUser(documents.getCreateUser()) + .updateUser(documents.getUpdateUser()) + .updateTime(documents.getUpdateTime()) + .createTime(documents.getCreateTime()) + .build(); + if (CountryConstant.EN.equals(manageBaseVo.getLang())){ + build.setTitle(documents.getTitleEn()); + build.setSubTitle(documents.getSubTitleEn()); + build.setContent(documents.getContentEn()); + } + return R.success(build); + } + + @Override + public R addDocument(ManageDocumentVo manageDocumentVo) { + String fromCountry = CountryConstant.ZH; + String toCountry = CountryConstant.EN; + ManageDocuments build; + //英文转中文 + if (CountryConstant.EN.equals(manageDocumentVo.getLang())){ + build = ManageDocuments.builder() + .titleEn(manageDocumentVo.getTitle()) + .subTitleEn(manageDocumentVo.getSubTitle()) + .contentEn(manageDocumentVo.getContent()) + .content(TranslateUtils.translate(manageDocumentVo.getContent(), toCountry, fromCountry)) + .title(TranslateUtils.translate(manageDocumentVo.getTitle(), toCountry, fromCountry)) + .subTitle(TranslateUtils.translate(manageDocumentVo.getSubTitle(), toCountry, fromCountry)) + .type(manageDocumentVo.getType()) + .createUser(SecurityUtils.getUsername()) + .updateUser(SecurityUtils.getUsername()) + .build(); + }else{ + //中文转英文 + build = ManageDocuments.builder() + .title(manageDocumentVo.getTitle()) + .subTitle(manageDocumentVo.getSubTitle()) + .content(manageDocumentVo.getContent()) + .type(manageDocumentVo.getType()) + .contentEn(TranslateUtils.translate(manageDocumentVo.getContent(), fromCountry, toCountry)) + .titleEn(TranslateUtils.translate(manageDocumentVo.getTitle(), fromCountry, toCountry)) + .subTitleEn(TranslateUtils.translate(manageDocumentVo.getSubTitle(), fromCountry, toCountry)) + .createUser(SecurityUtils.getUsername()) + .updateUser(SecurityUtils.getUsername()) + .build(); + } + + int insert = manageDocumentsMapper.insert(build); + if (insert > 0){ + return R.success("添加文章成功"); + } + return R.fail("添加文章失败"); + } + + @Override + public R deleteDocument(ManageBaseVo manageBaseVo) { + int delete = manageDocumentsMapper.deleteById(manageBaseVo.getId()); + if (delete > 0){ + return R.success("删除文章成功"); + } + return R.fail("删除文章失败"); + } + + @Override + public R updateDocument(ManageDocumentVo manageDocumentVo) { + String fromCountry = CountryConstant.ZH; + String toCountry = CountryConstant.EN; + ManageDocuments build; + //英文转中文 + if (CountryConstant.EN.equals(manageDocumentVo.getLang())){ + build = ManageDocuments.builder() + .id(manageDocumentVo.getId()) + .titleEn(manageDocumentVo.getTitle()) + .subTitleEn(manageDocumentVo.getSubTitle()) + .contentEn(manageDocumentVo.getContent()) + .content(TranslateUtils.translate(manageDocumentVo.getContent(), toCountry, fromCountry)) + .title(TranslateUtils.translate(manageDocumentVo.getTitle(), toCountry, fromCountry)) + .subTitle(TranslateUtils.translate(manageDocumentVo.getSubTitle(), toCountry, fromCountry)) + .createUser(SecurityUtils.getUsername()) + .updateUser(SecurityUtils.getUsername()) + .build(); + }else{ + //中文转英文 + build = ManageDocuments.builder() + .id(manageDocumentVo.getId()) + .title(manageDocumentVo.getTitle()) + .subTitle(manageDocumentVo.getSubTitle()) + .content(manageDocumentVo.getContent()) + .contentEn(TranslateUtils.translate(manageDocumentVo.getContent(), fromCountry, toCountry)) + .titleEn(TranslateUtils.translate(manageDocumentVo.getTitle(), fromCountry, toCountry)) + .subTitleEn(TranslateUtils.translate(manageDocumentVo.getSubTitle(), fromCountry, toCountry)) + .createUser(SecurityUtils.getUsername()) + .updateUser(SecurityUtils.getUsername()) + .build(); + } + + int insert = manageDocumentsMapper.updateById(build); + if (insert > 0){ + return R.success("修改文章成功"); + } + return R.fail("修改文章失败"); + } + + @Override + public R findDataInfo(ManageBaseVo manageBaseVo) { + ManageDocuments documents = this.getById(manageBaseVo.getId()); + ManageDocumentDto build = null; + if(documents != null){ + build = ManageDocumentDto.builder() + .id(documents.getId()) + .title(documents.getTitle()) + .subTitle(documents.getSubTitle()) + .content(documents.getContent()) + .createUser(documents.getCreateUser()) + .updateUser(documents.getUpdateUser()) + .updateTime(documents.getUpdateTime()) + .createTime(documents.getCreateTime()) + .build(); + if (CountryConstant.EN.equals(manageBaseVo.getLang())){ + build.setTitle(documents.getTitleEn()); + build.setSubTitle(documents.getSubTitleEn()); + build.setContent(documents.getContentEn()); + } + + } + return R.success(build); + } + + @Override + public R> findCatalogueDocumentList(ManageCatalogueVo manageCatalogueVo) { + + List catalogueDocumentList = manageDocumentsMapper.findCatalogueDocumentList(manageCatalogueVo.getType(),manageCatalogueVo.getLang()); + return R.success(catalogueDocumentList); + } + + @Override + public TableDataInfo searchDocument(ManageSearchDocumentVo manageSearchDocumentVo) { + PageHelper.startPage(manageSearchDocumentVo.getPageNum(), manageSearchDocumentVo.getPageSize()); + List listDataByPage; + if (CountryConstant.EN.equals(manageSearchDocumentVo.getLang())){ + listDataByPage = manageDocumentsMapper.getListDataEnByPage(manageSearchDocumentVo.getKeyword()); + }else{ + listDataByPage = manageDocumentsMapper.getListDataByPage(manageSearchDocumentVo.getKeyword()); + } + + return getDataTable(listDataByPage); + } + + @Override + public R> findCatalogueList(ManageCatalogueVo manageCatalogueVo) { + List catalogueList = manageDocumentsMapper.findCatalogueList(manageCatalogueVo.getLang()); + return R.success(catalogueList); + } +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageWalletOutInServiceImpl.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageWalletOutInServiceImpl.java new file mode 100644 index 0000000..40fb6e8 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageWalletOutInServiceImpl.java @@ -0,0 +1,14 @@ +package com.m2pool.manage.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.m2pool.manage.entity.ManageWalletOutIn; +import com.m2pool.manage.mapper.ManageWalletOutInMapper; +import com.m2pool.manage.service.ManageWalletOutInService; +import org.springframework.stereotype.Service; + +/** + * @Description 广播信息 服务实现类 + */ +@Service +public class ManageWalletOutInServiceImpl extends ServiceImpl implements ManageWalletOutInService { +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/task/ManageTask.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/task/ManageTask.java new file mode 100644 index 0000000..a4a8a37 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/task/ManageTask.java @@ -0,0 +1,45 @@ +package com.m2pool.manage.task; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.m2pool.manage.entity.ManageWalletOutIn; +import com.m2pool.manage.mapper.ManageWalletOutInMapper; +import com.m2pool.manage.service.ManageWalletOutInService; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +/** + * @Description 后台管理系统 定时任务 + * @Date 2025/7/15 15:45 + * @Author yyb + */ +@Configuration +@EnableScheduling +public class ManageTask { + + @Resource + private ManageWalletOutInService manageWalletOutInService; + + @Resource + private ManageWalletOutInMapper manageWalletOutInMapper; + + @Scheduled(cron = "22 21 0/1 * * ?") + public void insertDataToWalletOutInDb(){ + ManageWalletOutIn manageWalletOutIn = manageWalletOutInMapper.selectOne(new LambdaQueryWrapper().orderByDesc( + ManageWalletOutIn::getDate + ).last("limit 1")); + LocalDateTime startDate = null; + if (manageWalletOutIn != null){ + startDate = manageWalletOutIn.getDate(); + } + List walletInfo = manageWalletOutInMapper.getWalletInfo(startDate); + boolean b = manageWalletOutInService.saveBatch(walletInfo); + System.out.println("walletOutIn 插入结果"+b); + } +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java index 9f011e7..44c0e37 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageBaseVo.java @@ -23,7 +23,6 @@ public class ManageBaseVo { @ApiModelProperty(value = "id",example = "1") private Long id; - @ApiModelProperty(value = "语言",example = "zh") private String lang; } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageCatalogueVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageCatalogueVo.java new file mode 100644 index 0000000..0b2a290 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageCatalogueVo.java @@ -0,0 +1,26 @@ +package com.m2pool.manage.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description TODO + * @Date 2025/7/10 15:39 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "ManageCatalogueVo",description = "文档目录请求对象") +public class ManageCatalogueVo{ + @ApiModelProperty(value = "文档类型",example = "0其他 1服务条款 2api文档 3挖矿教程") + private Integer type; + + @ApiModelProperty(value = "语言",example = "zh") + private String lang; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageDocumentVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageDocumentVo.java new file mode 100644 index 0000000..c67958f --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageDocumentVo.java @@ -0,0 +1,40 @@ +package com.m2pool.manage.vo; + +import com.m2pool.common.core.web.Result.PageResult; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Description 文档请求对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Data +@ApiModel(value = "ManageDocumentVo",description = "文档请求对象") +public class ManageDocumentVo { + @ApiModelProperty(value = "id",example = "1") + private Long id; + + @ApiModelProperty(value = "标题",example = "文档标题") + private String title; + + @ApiModelProperty(value = "副标题",example = "文档副标题") + private String subTitle; + + @ApiModelProperty(value = "内容",example = "文档内容") + private String content; + + @ApiModelProperty(value = "文档类型",example = "0其他 1服务条款 2api文档 3挖矿教程") + private Integer type; + + @ApiModelProperty(value = "语言",example = "zh中文 en英文") + private String lang; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageSearchDocumentVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageSearchDocumentVo.java new file mode 100644 index 0000000..83d5e9e --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageSearchDocumentVo.java @@ -0,0 +1,20 @@ +package com.m2pool.manage.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description 文档搜索请求对象 + * @Date 2025/7/8 13:35 + * @Author yyb + */ +@Data +@ApiModel(value = "ManageSearchDocumentVo",description = "文档搜索请求对象") +public class ManageSearchDocumentVo extends PageVo{ + @ApiModelProperty(value = "搜索关键字",example = "挖矿") + private String keyword; + + @ApiModelProperty(value = "语言",example = "zh") + private String lang; +} diff --git a/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml index 9fb88ad..29ef51c 100644 --- a/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml +++ b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageBroadcastMapper.xml @@ -34,25 +34,25 @@ coin, `user`, address, - create_date, - should_out_date, + `date`, + should_out_date as shouldOutDate, max_height, - amount, - state + allocation_amount as allocationAmount, + transfer_amount as transferAmount FROM - wallet_in + manage_wallet_out_in coin = #{coin} AND `user` = #{user} - and `create_date` >= #{startDate} and `create_date` #{endDate} + and `date` >= #{startDate} and `date` #{endDate} - and `create_date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH) + and `date` >= DATE_SUB(NOW(), INTERVAL 1 MONTH) - + order by `date` desc +SELECT + id, + title, + sub_title as subTitle, + content, + create_user as createUser, + update_user as updateUser, + update_time as updateTime, + create_time as createTime, + type +FROM + manage_documents + + del = false + + AND title like CONCAT('%',#{keyword},'%') OR sub_title like CONCAT('%',#{keyword},'%') OR content like CONCAT('%',#{keyword},'%') + + + ORDER BY id DESC + + + + + diff --git a/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageWalletOutInMapper.xml b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageWalletOutInMapper.xml new file mode 100644 index 0000000..48250e9 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/resources/mapper/manage/ManageWalletOutInMapper.xml @@ -0,0 +1,53 @@ + + + + + + + diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/config/ScheduledTaskConfig.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/config/ScheduledTaskConfig.java index 73856b6..c82b637 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/config/ScheduledTaskConfig.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/config/ScheduledTaskConfig.java @@ -15,7 +15,7 @@ public class ScheduledTaskConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler(); - taskScheduler.setPoolSize(20); + taskScheduler.setPoolSize(8); taskScheduler.initialize(); taskRegistrar.setTaskScheduler(taskScheduler); } diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PowerLineDto.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PowerLineDto.java index 235dc5e..e895d07 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PowerLineDto.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/dto/PowerLineDto.java @@ -1,6 +1,8 @@ package com.m2pool.pool.dto; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.io.Serializable; import java.math.BigDecimal; @@ -12,6 +14,8 @@ import java.util.Date; * @Author dy */ @Data +@AllArgsConstructor +@NoArgsConstructor public class PowerLineDto implements Serializable { /** 日期 */ diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java index 6c88b4f..651fa39 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/mapper/PoolMapper.java @@ -31,9 +31,9 @@ public interface PoolMapper { @HashRateDB public Double getNowPoolPower(@Param("table") String table); - public List get30mPoolPowerList(@Param("table") String table); + public List get30mPoolPowerList(@Param("table") String table,@Param("startDate") Date startDate,@Param("endDate") Date endDate); - public List getDailyPoolPowerList(@Param("table") String table); + public List getDailyPoolPowerList(@Param("table") String table,@Param("startDate") Date startDate,@Param("endDate") Date endDate); public List getHourNetPowerList(@Param("table") String table); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java index 037b75a..a0357b5 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/service/impl/PoolServiceImpl.java @@ -29,6 +29,9 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; import java.util.stream.Collectors; @@ -134,6 +137,41 @@ public class PoolServiceImpl implements PoolService { return AjaxResult.success(dto); } + /** + * 数据补零 30分钟时间端 + * @param dataList + * @return + */ + public static List fillMissingOnlineData(List dataList,Date startTime,Date endTime,String unit,int interval) { + + List resultList = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + + + calendar.setTime(startTime); + Map timeDataMap = new HashMap<>(); + for (PowerLineDto data : dataList) { + timeDataMap.put(data.getDate().getTime(), data); + } + + while (calendar.getTime().getTime() <= endTime.getTime()) { + long currentTime = calendar.getTime().getTime(); + PowerLineDto data = timeDataMap.get(currentTime); + if (data != null) { + resultList.add(data); + } else { + if (calendar.getTime().getTime() != endTime.getTime()){ + resultList.add(new PowerLineDto(calendar.getTime(),BigDecimal.valueOf(0), BigDecimal.valueOf(0),0,unit)); + } + } + // 增加 30 分钟 + calendar.add(Calendar.MINUTE, interval); + } + + return resultList; + } + + @Override public AjaxResult getPoolPower(CoinVo vo) { @@ -150,18 +188,29 @@ public class PoolServiceImpl implements PoolService { int scale = PoolProfitScale.getScaleByCoin(pool.getCoin()); + if("1h".equals(vo.getInterval()) || "rt".equals(vo.getInterval())){ + // 获取当前日期 + Date currentDate = DateUtils.getPreviousHalfHourOrFullHour(new Date()); + // 获取一天前的日期时间 + Calendar calendar = Calendar.getInstance(); + calendar.setTime(currentDate); + calendar.add(Calendar.DAY_OF_MONTH, -1); + Date oneDayAgo = calendar.getTime(); //30m PageHelper.clearPage(); //矿池算力从$coin_pool_30m拿 获取的 算力单位为MH/S - List list = poolMapper.get30mPoolPowerList(pool.getPoolTable()+"_30m"); - Collections.reverse(list); + List list = poolMapper.get30mPoolPowerList(pool.getPoolTable()+"_30m",oneDayAgo,currentDate); //根据币种做参数处理 PowerLineDto maxPv = list.stream().max(Comparator.comparing(PowerLineDto::getPv)).orElse(new PowerLineDto()); PowerUnitUtils.NetPowerUnit powerUnit = PowerUnitUtils.getPowerUnit(maxPv.getPv().multiply(BigDecimal.valueOf(1000 * 1000))); list = changeUnit(powerUnit, list, pool,BigDecimal.valueOf(1000 * 1000)); + //数据补零 + list = fillMissingOnlineData(list,oneDayAgo,currentDate,powerUnit.getUnit(),30); + + //通过全网算力接口 获取到的时间段价格补充到矿池算力接口的价格中 list.stream().forEach(e -> priceList.stream().anyMatch(p ->{ if(p.getDate().equals(e.getDate())){ e.setPrice(p.getPrice()); @@ -171,19 +220,23 @@ public class PoolServiceImpl implements PoolService { return AjaxResult.success(list); }else if ("1d".equals(vo.getInterval())){ + + //获取当天零点时间 + LocalDateTime todayStart = LocalDate.now().atStartOfDay(); + Date currentDate = Date.from(todayStart.atZone(ZoneId.systemDefault()).toInstant()); + // 获取一个月前的日期 + Date oneMonthAgo = DateUtils.getOneMonthAgo(currentDate); PageHelper.clearPage(); //矿池算力从$coin_pool_1d拿 - List list = poolMapper.getDailyPoolPowerList(pool.getPoolTable()+"_24h"); - Collections.reverse(list); + List list = poolMapper.getDailyPoolPowerList(pool.getPoolTable()+"_24h",oneMonthAgo,currentDate); //根据币种做参数处理 list.stream().forEach(e -> { e.setDate(DateUtils.addDays(e.getDate(),-1)); }); - //根据币种做参数处理 - + //从hashRate库中获取最后一天数据用作当天实时24h算力 List lastList = poolMapper.getMinerInfoList(pool.getMhs()); BigDecimal mhs = lastList.stream().map(e -> { return BigDecimal.valueOf(e.getMhs24h()); @@ -193,22 +246,12 @@ public class PoolServiceImpl implements PoolService { lastPLDto.setDate(now); lastPLDto.setPv(mhs); list.add(lastPLDto); - + //根据集合中最大算力一个对象转换的后单位,把集合中所有元素都转换成该单位 PowerLineDto maxPv = list.stream().max(Comparator.comparing(PowerLineDto::getPv)).orElse(new PowerLineDto()); PowerUnitUtils.NetPowerUnit powerUnit = PowerUnitUtils.getPowerUnit(maxPv.getPv() .multiply(BigDecimal.valueOf(1000 * 1000))); list = changeUnit(powerUnit, list, pool,BigDecimal.valueOf(1000 * 1000)); - //todo 最后一天数据用当天实时24h算力 - //List lastList = poolMapper.getMinerInfoList(pool.getMhs()); - //BigDecimal mhs = lastList.stream().map(e -> { - // return BigDecimal.valueOf(e.getMhs24h()); - //}).reduce(BigDecimal.ZERO, BigDecimal::add); - // - //PowerLineDto lastPLDto= new PowerLineDto(); - //Date now = DateUtils.parseDate(DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD)); - //lastPLDto.setDate(now); - //lastPLDto.setPv(mhs); - //list.add(lastPLDto); + list = fillMissingOnlineData(list,oneMonthAgo,currentDate,powerUnit.getUnit(),24*60); list.stream().forEach(e -> priceList.stream().anyMatch(p ->{ if(p.getDate().equals(e.getDate())){ e.setPrice(p.getPrice()); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/SocketDemo.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/SocketDemo.java index 1f478ea..b9558de 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/SocketDemo.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/SocketDemo.java @@ -41,5 +41,7 @@ public class SocketDemo { Date endDate = DateUtils.getPreviousHalfHourOrFullHour(new Date()); Date startDate = DateUtils.getOneMonthAgo(endDate); System.out.println(startDate+" "+endDate); + + } } diff --git a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml index 9b08429..2b02872 100644 --- a/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml +++ b/m2pool-modules/m2pool-pool/src/main/resources/mapper/pool/PoolMapper.xml @@ -15,22 +15,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by `date` desc limit 1 - select `date`, - mhs pv + mhs as pv from ${table} - order by `date` desc limit 48 + where + `date` >= #{startDate} AND `date` #{endDate} + order by `date` - select `date`, - mhs pv + mhs as pv from ${table} - order by `date` desc limit 30 + where + `date` >= #{startDate} AND `date` #{endDate} + order by `date`