From 5a8e59336aad520b04438b412806edc85957a749 Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Mon, 30 Jun 2025 14:50:45 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=97=E5=8A=9B=E6=9B=B2=E7=BA=BF=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E7=A6=BB=E7=BA=BF=E6=9F=B1=E7=8A=B6=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ManageUserController.java | 34 +++- .../m2pool/manage/dto/HistoryBalanceDto.java | 28 ++++ .../manage/dto/ManageMiningUserDto.java | 31 ++++ .../manage/dto/ManageMiningUserOnlineDto.java | 36 ++++ .../manage/dto/ManageMiningUserPowerDto.java | 41 +++++ .../m2pool/manage/dto/ManageUserInfoDto.java | 15 +- .../manage/mapper/ManageBroadcastMapper.java | 52 +++++- .../manage/service/ManageUserService.java | 34 +++- .../service/impl/ManageUserServiceImpl.java | 140 ++++++++++++++-- .../m2pool/manage/utils/PowerUnitUtils.java | 75 +++++++++ .../manage/vo/ManageMiningUserPowerVo.java | 45 +++++ .../m2pool/manage/vo/ManageMiningUserVo.java | 24 +++ .../m2pool/manage/vo/ManageUserInfoVo.java | 4 + .../src/main/resources/bootstrap-prod.yml | 38 ++++- .../mapper/manage/ManageBroadcastMapper.xml | 55 ++++++- .../src/main/resources/bootstrap-prod.yml | 75 +++++++++ .../src/main/resources/bootstrap-test.yml | 77 +++++++++ .../src/main/resources/bootstrap.yml | 154 +----------------- .../pool/service/impl/PoolServiceImpl.java | 3 +- .../controller/SysProfileController.java | 9 +- .../service/impl/SysUserServiceImpl.java | 9 +- 21 files changed, 788 insertions(+), 191 deletions(-) create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/HistoryBalanceDto.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserDto.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserOnlineDto.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserPowerDto.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/PowerUnitUtils.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserPowerVo.java create mode 100644 m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserVo.java create mode 100644 m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-prod.yml create mode 100644 m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-test.yml diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java index 3462500..9213a1d 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/controller/ManageUserController.java @@ -5,9 +5,7 @@ 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.ManageBroadcastDto; -import com.m2pool.manage.dto.ManageUserDto; -import com.m2pool.manage.dto.ManageUserInfoDto; +import com.m2pool.manage.dto.*; import com.m2pool.manage.service.ManageUserService; import com.m2pool.manage.vo.*; import io.swagger.annotations.Api; @@ -18,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; /** * @Description 管理系统用户信息控制器类 @@ -45,8 +44,8 @@ public class ManageUserController { @ApiOperation(value = "管理系统:发送邮件给某些用户") @RequiresLogin @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) - public void sendTextMailMessage(@RequestBody EmailVo emailVo){ - manageUserService.sendTextMailMessage(emailVo.getTo(),emailVo.getSubject(),emailVo.getText()); + public R sendTextMailMessage(@RequestBody EmailVo emailVo){ + return manageUserService.sendTextMailMessage(emailVo.getTo(),emailVo.getSubject(),emailVo.getText()); } @PostMapping("/get/user/info") @@ -57,6 +56,31 @@ public class ManageUserController { return manageUserService.getUserInfo(manageUserInfoVo); } + @PostMapping("/getMiningUserInfo") + @ApiOperation(value = "管理系统:根据用户邮箱查询用户对应的挖矿账户及币种信息") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R> getMiningUserInfo(@RequestBody ManageMiningUserVo manageMiningUserVo){ + return manageUserService.getMiningUserInfo(manageMiningUserVo); + } + + @PostMapping("/getMiningPowerInfo") + @ApiOperation(value = "管理系统:根据币种,挖矿账户,时间,查询用户算力曲线") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R> getMiningPowerInfo(@RequestBody ManageMiningUserPowerVo manageMiningUserPowerVo){ + return manageUserService.getMiningPowerInfo(manageMiningUserPowerVo); + } + + + + @PostMapping("/getMinerUserOnlineStatus") + @ApiOperation(value = "管理系统:获取挖矿账户对应的矿工在离线情况") + @RequiresLogin + @RequiresRoles(value = {"back_admin","admin"}, logical = Logical.OR) + public R> getMinerUserOnlineStatus(@RequestBody ManageMiningUserPowerVo manageMiningUserPowerVo){ + return manageUserService.getMinerUserOnlineStatus(manageMiningUserPowerVo); + } } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/HistoryBalanceDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/HistoryBalanceDto.java new file mode 100644 index 0000000..660d3d0 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/HistoryBalanceDto.java @@ -0,0 +1,28 @@ +package com.m2pool.manage.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @Description 历史支付地址详情 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@ApiModel(value = "HistoryBalanceDto", description = "历史支付地址详情") +public class HistoryBalanceDto { + + + @ApiModelProperty(value = "历史支付地址",example = "testAddBalanceForgrs") + private String balance; + + + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserDto.java new file mode 100644 index 0000000..e90347d --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserDto.java @@ -0,0 +1,31 @@ +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; + +/** + * @Description 用户请求对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "用户挖矿账户详情请求对象") +public class ManageMiningUserDto { + + + @ApiModelProperty(value = "用户名(邮箱)",example = "1328642438@qq.com",required = true) + private String user; + + @ApiModelProperty(value = "用户对应的挖矿账号(一个用户可以对应多个)",example = "miner",required = true) + private String minerUser; + + @ApiModelProperty(value = "币种",example = "nexa",required = true) + private String coin; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserOnlineDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserOnlineDto.java new file mode 100644 index 0000000..7e1c982 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserOnlineDto.java @@ -0,0 +1,36 @@ +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; +import java.util.Date; + +/** + * @Description 矿工在离线返回对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "矿工在离线返回对象") +public class ManageMiningUserOnlineDto { + + //@ApiModelProperty(value = "挖矿账户",example = "a1xsminer",required = true) + //private String minerUser; + + @ApiModelProperty(value = "时间",example = "2025-06-27 16:30:00",required = true) + private LocalDateTime date; + + @ApiModelProperty(value = "在线数量",example = "15") + private Integer onlineNum; + + @ApiModelProperty(value = "离线数量",example = "10") + private Integer offlineNum; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserPowerDto.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserPowerDto.java new file mode 100644 index 0000000..a56a700 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/dto/ManageMiningUserPowerDto.java @@ -0,0 +1,41 @@ +package com.m2pool.manage.dto; + +import cn.hutool.core.date.DateTime; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * @Description 用户请求对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "用户挖矿账户详情请求对象") +public class ManageMiningUserPowerDto { + + @ApiModelProperty(value = "挖矿账户",example = "miner") + private String minerUser; + + + @ApiModelProperty(value = "时间",example = "2024-11-28T11:00:00") + private Date date; + + @ApiModelProperty(value = "算力",example = "0.000000000") + private BigDecimal pv; + + @ApiModelProperty(value = "算力单位",example = "GH/s") + private String unit; +} 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 59388e3..db42e8c 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 @@ -3,11 +3,15 @@ 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 查询用户详情信息放回对象 @@ -16,6 +20,8 @@ import java.time.LocalDateTime; */ @Builder @Data +@NoArgsConstructor +@AllArgsConstructor @ApiModel(value = "ManageUserInfoDto", description = "查询用户详情信息放回对象") public class ManageUserInfoDto { @@ -29,10 +35,10 @@ public class ManageUserInfoDto { @ApiModelProperty(value = "转账地址",example = "D7tviVPKtTd2qnkzJEVfZWQqzV6NyQqHxw") private String address; - @ApiModelProperty(value = "交易创建时间",example = "2025-06-16 00:00:00") + @ApiModelProperty(value = "收益分配日期",example = "2025-06-16 00:00:00") private LocalDateTime createDate; - @ApiModelProperty(value = "",example = "2025-06-16 00:00:00") + @ApiModelProperty(value = "实际转账日期",example = "2025-06-16 00:00:00") private LocalDateTime shouldOutDate; @ApiModelProperty(value = "最大高度",example = "100000") @@ -40,4 +46,9 @@ public class ManageUserInfoDto { @ApiModelProperty(value = "交易金额",example = " 273920.9666238700") private BigDecimal amount; + + @ApiModelProperty(value = "历史支付地址",example = "") + private List historyBalance; + + } 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 725a7d9..f52f63e 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 @@ -2,13 +2,15 @@ package com.m2pool.manage.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.m2pool.common.datasource.annotation.DistributionDB; -import com.m2pool.manage.dto.ManageUserDto; -import com.m2pool.manage.dto.ManageUserInfoDto; +import com.m2pool.common.datasource.annotation.HashRateDB; +import com.m2pool.manage.dto.*; import com.m2pool.manage.entity.ManageBroadcast; import com.m2pool.manage.vo.ManageBaseVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.time.LocalDate; +import java.util.Date; import java.util.List; @Mapper @@ -32,4 +34,50 @@ public interface ManageBroadcastMapper extends BaseMapper { */ @DistributionDB ManageUserInfoDto getUserInfo(@Param("user") String user,@Param("coin") String coin); + + + /** + * 获取挖矿账户对应的历史支付地址 + * @param user + * @param coin + * @return + */ + List getHistoryBalance(@Param("user") String user, @Param("coin") String coin); + + + /** + * 获取用户对应的挖矿账户及币种信息 + * @param user + * @return + */ + List getMiningUserInfo(@Param("user") String user); + + + /** + * 用户算力曲线 + * @param minerUser + * @param coin + * @return + */ + List getMiningPowerInfo(@Param("minerUser") String minerUser, @Param("coin") String coin, @Param("startDate") Date startDate, @Param("endDate") Date endDate); + + /** + * 获取用户对应的所有挖矿账户 + * @param user + * @param coin + * @return + */ + List getAllMinerUserByCoin(@Param("user") String user,@Param("coin") String coin); + + + /** + * 获取挖矿账户对应时间段的在离线情况 + * @param minerUser + * @param coin + * @param startDate + * @param endDate + * @return + */ + @HashRateDB + List getMinerUserOnlineStatus(@Param("minerUser") String minerUser, @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/service/ManageUserService.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java index 5332114..98154c7 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/ManageUserService.java @@ -2,10 +2,11 @@ package com.m2pool.manage.service; import com.m2pool.common.core.Result.R; import com.m2pool.common.core.web.page.TableDataInfo; -import com.m2pool.manage.dto.ManageUserDto; -import com.m2pool.manage.dto.ManageUserInfoDto; -import com.m2pool.manage.vo.ManageUserInfoVo; -import com.m2pool.manage.vo.ManageUserVo; +import com.m2pool.manage.dto.*; +import com.m2pool.manage.vo.*; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; /** @@ -26,7 +27,7 @@ public interface ManageUserService{ * @param subject * @param text */ - void sendTextMailMessage(String to,String subject,String text); + R sendTextMailMessage(String to,String subject,String text); /** @@ -35,4 +36,27 @@ public interface ManageUserService{ * @return */ R getUserInfo(ManageUserInfoVo manageUserInfoVo); + + + /** + * 管理系统:查询用户对应的挖矿账户及币种信息 + * @param manageMiningUserVo + * @return + */ + R> getMiningUserInfo(ManageMiningUserVo manageMiningUserVo); + + /** + * 管理系统:用户算力曲线 + * @param manageMiningUserPowerVo + * @return + */ + R> getMiningPowerInfo(ManageMiningUserPowerVo manageMiningUserPowerVo); + + + /** + * 管理系统:获取挖矿账户对应的矿工在离线情况 + * @param manageMiningUserPowerVo + * @return + */ + R> getMinerUserOnlineStatus(ManageMiningUserPowerVo manageMiningUserPowerVo); } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java index dcf3632..957800b 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/service/impl/ManageUserServiceImpl.java @@ -4,24 +4,25 @@ 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.utils.StringUtils; import com.m2pool.common.core.web.page.TableDataInfo; -import com.m2pool.manage.dto.ManageBroadcastDto; -import com.m2pool.manage.dto.ManageUserDto; -import com.m2pool.manage.dto.ManageUserInfoDto; +import com.m2pool.manage.dto.*; import com.m2pool.manage.mapper.ManageBroadcastMapper; import com.m2pool.manage.service.ManageUserService; -import com.m2pool.manage.vo.ManageBaseVo; -import com.m2pool.manage.vo.ManageUserInfoVo; -import com.m2pool.manage.vo.ManageUserVo; -import com.m2pool.manage.vo.PageVo; +import com.m2pool.manage.utils.PowerUnitUtils; +import com.m2pool.manage.vo.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Date; -import java.util.List; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; /** @@ -58,17 +59,23 @@ public class ManageUserServiceImpl implements ManageUserService { return rspData; } - + private static final Pattern EMAIL_PATTERN = Pattern.compile("^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$"); @Override - public void sendTextMailMessage(String to,String subject,String text){ - + public R sendTextMailMessage(String to,String subject,String text){ try { //true 代表支持复杂的类型 MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true); //邮件发信人 mimeMessageHelper.setFrom(sendMailer); + String[] split = to.split("[,;;,\\s]+"); + for (String s : split) { + if (!EMAIL_PATTERN.matcher(s).matches()) { + return R.fail("邮箱格式错误"+s); + } + } //邮件收信人 1或多个 - mimeMessageHelper.setTo(to.split(",")); + mimeMessageHelper.setTo(split); + //邮件主题 mimeMessageHelper.setSubject(subject); //邮件内容 @@ -79,9 +86,10 @@ public class ManageUserServiceImpl implements ManageUserService { //发送邮件 javaMailSender.send(mimeMessageHelper.getMimeMessage()); //System.out.println("发送邮件成功:"+sendMailer+"->"+to); - + return R.success("发送成功"); } catch (Exception e) { e.printStackTrace(); + return R.fail("发送失败"+e.getMessage()); //System.out.println("发送邮件失败:"+e.getMessage()); } } @@ -89,6 +97,110 @@ public class ManageUserServiceImpl implements ManageUserService { @Override public R getUserInfo(ManageUserInfoVo manageUserInfoVo) { ManageUserInfoDto manageUserInfoDto = manageBroadcastMapper.getUserInfo(manageUserInfoVo.getMinerUser(), manageUserInfoVo.getCoin()); + List historyBalance = manageBroadcastMapper.getHistoryBalance(manageUserInfoVo.getMinerUser(), manageUserInfoVo.getCoin()); + if (manageUserInfoDto == null && !historyBalance.isEmpty()){ + manageUserInfoDto = new ManageUserInfoDto(); + manageUserInfoDto.setUser(manageUserInfoVo.getMinerUser()); + manageUserInfoDto.setCoin(manageUserInfoVo.getCoin()); + manageUserInfoDto.setHistoryBalance(historyBalance); + }else if(manageUserInfoDto !=null && !historyBalance.isEmpty()){ + manageUserInfoDto.setHistoryBalance(historyBalance); + } + return R.success(manageUserInfoDto); } + + + @Override + public R> getMiningUserInfo(ManageMiningUserVo manageMiningUserVo) { + List miningUserInfo = manageBroadcastMapper.getMiningUserInfo(manageMiningUserVo.getUser()); + return R.success(miningUserInfo); + } + + @Override + public R> getMiningPowerInfo(ManageMiningUserPowerVo manageMiningUserPowerVo) { + List list = manageBroadcastMapper.getMiningPowerInfo(manageMiningUserPowerVo.getMinerUser() + , manageMiningUserPowerVo.getCoin(), manageMiningUserPowerVo.getStartDate(), manageMiningUserPowerVo.getEndDate()); + ManageMiningUserPowerDto maxPv = list.stream().max(Comparator.comparing(ManageMiningUserPowerDto::getPv)).orElse(new ManageMiningUserPowerDto()); + PowerUnitUtils.NetPowerUnit powerUnit; + if (!list.isEmpty()){ + powerUnit = PowerUnitUtils.getPowerUnit(maxPv.getPv().multiply(BigDecimal.valueOf(1000 * 1000))); + }else{ + powerUnit = new PowerUnitUtils.NetPowerUnit("GH/S", BigDecimal.valueOf(1000 * 1000 * 1000)); + } + changeUnit(powerUnit, list,BigDecimal.valueOf(1000 * 1000)); + list = fillMissingData(list,powerUnit.getUnit(),manageMiningUserPowerVo.getMinerUser()); + return R.success(list); + } + + /** + * 单位转换 + * @param netPowerUnit + * @param list + * @param factor + * @return + */ + private void changeUnit(PowerUnitUtils.NetPowerUnit netPowerUnit, List list,BigDecimal factor) { + list.forEach(e -> { + if(StringUtils.isNotNull(e.getPv())){ + e.setUnit(netPowerUnit.getUnit()); + e.setPv(e.getPv().multiply(factor).divide(netPowerUnit.getUnitValue(),2, RoundingMode.HALF_UP).stripTrailingZeros()); + }else { + e.setUnit(netPowerUnit.getUnit()); + e.setPv(BigDecimal.valueOf(0)); + } + }); + } + + /** + * 数据补零 30分钟时间端 + * @param dataList + * @return + */ + public static List fillMissingData(List dataList,String unit,String minerUser) { + if (dataList == null || dataList.size() <= 1) { + return dataList; + } + + // 对数据按时间排序 + dataList.sort(Comparator.comparing(ManageMiningUserPowerDto::getDate)); + + List resultList = new ArrayList<>(); + Calendar calendar = Calendar.getInstance(); + + // 获取起始和结束时间 + Date startTime = dataList.get(0).getDate(); + Date endTime = dataList.get(dataList.size() - 1).getDate(); + + calendar.setTime(startTime); + Map timeDataMap = new HashMap<>(); + for (ManageMiningUserPowerDto data : dataList) { + timeDataMap.put(data.getDate().getTime(), data); + } + + while (calendar.getTime().getTime() <= endTime.getTime()) { + long currentTime = calendar.getTime().getTime(); + ManageMiningUserPowerDto data = timeDataMap.get(currentTime); + if (data != null) { + resultList.add(data); + } else { + resultList.add(new ManageMiningUserPowerDto(minerUser,calendar.getTime(), BigDecimal.valueOf(0), unit)); + } + // 增加 30 分钟 + calendar.add(Calendar.MINUTE, 30); + } + + return resultList; + } + + @Override + public R> getMinerUserOnlineStatus(ManageMiningUserPowerVo manageMiningUserPowerVo) { + //查询挖矿账户对应的所有矿工在离线情况 + List minerUserOnlineStatus = manageBroadcastMapper.getMinerUserOnlineStatus( + manageMiningUserPowerVo.getMinerUser(), + manageMiningUserPowerVo.getCoin(), + manageMiningUserPowerVo.getStartDate(), + manageMiningUserPowerVo.getEndDate()); + return R.success(minerUserOnlineStatus); + } } diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/PowerUnitUtils.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/PowerUnitUtils.java new file mode 100644 index 0000000..97230f3 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/utils/PowerUnitUtils.java @@ -0,0 +1,75 @@ +package com.m2pool.manage.utils; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * @Description 算力转换 + * @Date 2024/6/13 10:54 + * @Author dy + */ +public class PowerUnitUtils { + + /** + * 获取某个算力值 对应应该换算的单位 和单位符号值 + * @param value + * @return + */ + public static NetPowerUnit getPowerUnit(BigDecimal value){ + NetPowerUnit unit = new NetPowerUnit(); + //默认1K 以下 + unit.setUnit("H/s"); + unit.setUnitValue(BigDecimal.valueOf(1)); + if (value != null){ + //ps BigDecimal最大上限少于1000*1000*1000*1000*10 所以需要中间值 gValue + BigDecimal gValue = value.divide(BigDecimal.valueOf(1000000000), 2, RoundingMode.HALF_UP); + if (gValue.compareTo(BigDecimal.valueOf(1000L *1000*1000*10)) >= 0){ + //10E + unit.setUnit("EH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000L*1000*1000*1000*1000*1000)); + } + else if (gValue.compareTo(BigDecimal.valueOf(1000*1000*10)) >= 0){ + //10P -10E + + unit.setUnit("PH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000L*1000*1000*1000*1000)); + } + else if (gValue.compareTo(BigDecimal.valueOf(1000 * 10)) >= 0){ + //10 T - 10P + unit.setUnit("TH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000L*1000*1000*1000)); + } + else if (value.compareTo(BigDecimal.valueOf(1000L *1000*1000 * 10)) >= 0){ + //10G - 10T + unit.setUnit("GH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000L*1000*1000)); + } + else if (value.compareTo(BigDecimal.valueOf(1000*1000*10)) >= 0){ + //10M - 10G + unit.setUnit("MH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000L*1000)); + } + else if (value.compareTo(BigDecimal.valueOf(1000 * 10)) >= 0){ + //10K-10M + unit.setUnit("KH/s"); + unit.setUnitValue(BigDecimal.valueOf(1000)); + } + } + + + return unit; + } + + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class NetPowerUnit{ + private String unit; + private BigDecimal unitValue; + } + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserPowerVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserPowerVo.java new file mode 100644 index 0000000..0fcdf0b --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserPowerVo.java @@ -0,0 +1,45 @@ +package com.m2pool.manage.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * @Description 用户请求对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "ManageMiningUserPowerVo") +public class ManageMiningUserPowerVo { + + + @ApiModelProperty(value = "挖矿账户",example = "miner",required = true) + private String minerUser; + + @ApiModelProperty(value = "币种",example = "nexa",required = true) + private String coin; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "开始时间",example = "2025-06-22") + private Date startDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "结束时间",example = "2025-06-22") + private Date endDate; + +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserVo.java new file mode 100644 index 0000000..7535075 --- /dev/null +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageMiningUserVo.java @@ -0,0 +1,24 @@ +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 用户请求对象 + * @Date 2025/5/22 17:18 + * @Author yyb + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(value = "用户挖矿账户详情请求对象") +public class ManageMiningUserVo{ + + @ApiModelProperty(value = "用户名(邮箱)",example = "1328642438@qq.com",required = true) + private String user; +} diff --git a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java index 1a3ffbe..6f213d5 100644 --- a/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java +++ b/m2pool-modules/m2pool-manage/src/main/java/com/m2pool/manage/vo/ManageUserInfoVo.java @@ -2,8 +2,10 @@ 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 查询用户详情信请求对象 @@ -12,6 +14,8 @@ import lombok.Data; */ @Builder @Data +@NoArgsConstructor +@AllArgsConstructor @ApiModel(value = "ManageUserInfoVo", description = "查询用户详情信请求对象") public class ManageUserInfoVo { diff --git a/m2pool-modules/m2pool-manage/src/main/resources/bootstrap-prod.yml b/m2pool-modules/m2pool-manage/src/main/resources/bootstrap-prod.yml index 8b69197..aacb64c 100644 --- a/m2pool-modules/m2pool-manage/src/main/resources/bootstrap-prod.yml +++ b/m2pool-modules/m2pool-manage/src/main/resources/bootstrap-prod.yml @@ -6,6 +6,42 @@ server: mime-types: application/json spring: + #邮箱基本配置 + mail: + # 配置在limit_time内,用户可以发送limit次验证码 + limit: 2 这个是我额外的配置,结合邮箱服务用的 + limitTime: 10 这个是我额外的配置 + #配置smtp服务主机地址 + # sina smtp.sina.cn + # aliyun smtp.aliyun.com + # 163 smtp.163.com 端口号465或994 + host: mail.privateemail.com + #发送者邮箱 + username: do.not.reply@m2pool.com + #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 + # password: + # password: M2202401! + # password: axvm-zfgx-cgcg-qhhu + password: M2202401! + + #端口号 + port: 587 + # port: 465 + #默认的邮件编码为UTF-8 + default-encoding: UTF-8 + #其他参数 + properties: + mail: + #配置SSL 加密工厂 + smtp: + ssl: + #本地测试,先放开ssl + enable: false + required: false + #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 + debug: false + socketFactory: + class: javax.net.ssl.SSLSocketFactory mvc: pathmatch: matching-strategy: ant-path-matcher @@ -20,7 +56,7 @@ spring: discovery: # 服务注册地址 server-addr: 127.0.0.1:8808 - namespace: m2_test + namespace: m2_prod group: m2_prod_group # server-addr: 127.0.0.1:8808 config: 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 3702568..2a3ca95 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 @@ -19,7 +19,7 @@ user_account_balance uab LEFT JOIN user_miner_account uma ON uab.ma_id = uma.id - uma.coin = #{coin} AND uma.status = 0 + uma.coin = #{coin} AND uma.status = 0 AND uab.status = 0 AND uma.user like CONCAT('%',#{user},'%') @@ -46,4 +46,57 @@ AND `user` = #{user}; + + + + + + diff --git a/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-prod.yml b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-prod.yml new file mode 100644 index 0000000..5ba2a3d --- /dev/null +++ b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-prod.yml @@ -0,0 +1,75 @@ +server: + port: 9207 + compression: + enabled: true + mime-types: application/json + +spring: + #邮箱基本配置 + mail: + # 配置在limit_time内,用户可以发送limit次验证码 + limit: 2 这个是我额外的配置,结合邮箱服务用的 + limitTime: 10 这个是我额外的配置 + #配置smtp服务主机地址 + # sina smtp.sina.cn + # aliyun smtp.aliyun.com + # 163 smtp.163.com 端口号465或994 + host: mail.privateemail.com + #发送者邮箱 + username: support@m2pool.cc + #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 + # password: + # password: m2pool2024@! + # password: axvm-zfgx-cgcg-qhhu + password: m2pool2024@! + #端口号 + port: 587 + #默认的邮件编码为UTF-8 + default-encoding: UTF-8 + #其他参数 + properties: + mail: + #配置SSL 加密工厂 + smtp: + ssl: + #本地测试,先放开ssl + enable: false + required: false + #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 + debug: false + socketFactory: + class: javax.net.ssl.SSLSocketFactory + + application: + # 应用名称 + name: m2pool-oapi + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8808 + namespace: m2_prod + group: m2_prod_group + # server-addr: 127.0.0.1:8808 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8808 + # server-addr: 127.0.0.1:8808 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: m2_prod + group: m2_prod_group + servlet: + multipart: + max-file-size: 2MB + max-request-size: 8MB + +myenv: + domain: https://www.m2pool.com + path: /var/www/html/web + img: /img + + diff --git a/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-test.yml b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-test.yml new file mode 100644 index 0000000..c7e3cd6 --- /dev/null +++ b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap-test.yml @@ -0,0 +1,77 @@ + + +##测试环境 +server: + port: 9507 + compression: + enabled: true + mime-types: application/json + +spring: + #邮箱基本配置 + mail: + # 配置在limit_time内,用户可以发送limit次验证码 + limit: 2 这个是我额外的配置,结合邮箱服务用的 + limitTime: 10 这个是我额外的配置 + #配置smtp服务主机地址 + # sina smtp.sina.cn + # aliyun smtp.aliyun.com + # 163 smtp.163.com 端口号465或994 + host: mail.privateemail.com + #发送者邮箱 + username: support@m2pool.cc + #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 + # password: + # password: m2pool2024@! + # password: axvm-zfgx-cgcg-qhhu + password: m2pool2024@! + #端口号 + port: 587 + #默认的邮件编码为UTF-8 + default-encoding: UTF-8 + #其他参数 + properties: + mail: + #配置SSL 加密工厂 + smtp: + ssl: + #本地测试,先放开ssl + enable: false + required: false + #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 + debug: false + socketFactory: + class: javax.net.ssl.SSLSocketFactory + + application: + # 应用名称 + name: m2pool-oapi + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8808 + namespace: m2_test + group: m2_test_group + # server-addr: 127.0.0.1:8808 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8808 + # server-addr: 127.0.0.1:8808 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + namespace: m2_test + group: m2_test_group + servlet: + multipart: + max-file-size: 2MB + max-request-size: 8MB + +myenv: + domain: https://test.m2pool.com + path: /var/www/html/web_test + img: /img + diff --git a/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap.yml b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap.yml index f2754f8..1e618eb 100644 --- a/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap.yml +++ b/m2pool-modules/m2pool-oapi/src/main/resources/bootstrap.yml @@ -1,156 +1,4 @@ -server: - port: 9207 - compression: - enabled: true - mime-types: application/json - spring: - #邮箱基本配置 - mail: - # 配置在limit_time内,用户可以发送limit次验证码 - limit: 2 这个是我额外的配置,结合邮箱服务用的 - limitTime: 10 这个是我额外的配置 - #配置smtp服务主机地址 - # sina smtp.sina.cn - # aliyun smtp.aliyun.com - # 163 smtp.163.com 端口号465或994 - host: mail.privateemail.com - #发送者邮箱 - username: support@m2pool.cc - #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 - # password: - # password: m2pool2024@! - # password: axvm-zfgx-cgcg-qhhu - password: m2pool2024@! - #端口号 - port: 587 - #默认的邮件编码为UTF-8 - default-encoding: UTF-8 - #其他参数 - properties: - mail: - #配置SSL 加密工厂 - smtp: - ssl: - #本地测试,先放开ssl - enable: false - required: false - #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 - debug: false - socketFactory: - class: javax.net.ssl.SSLSocketFactory - - application: - # 应用名称 - name: m2pool-oapi profiles: # 环境配置 - active: prod - cloud: - nacos: - discovery: - # 服务注册地址 - server-addr: 127.0.0.1:8808 - namespace: m2_prod - group: m2_prod_group - # server-addr: 127.0.0.1:8808 - config: - # 配置中心地址 - server-addr: 127.0.0.1:8808 - # server-addr: 127.0.0.1:8808 - # 配置文件格式 - file-extension: yml - # 共享配置 - shared-configs: - - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - namespace: m2_prod - group: m2_prod_group - servlet: - multipart: - max-file-size: 2MB - max-request-size: 8MB - -myenv: - domain: https://www.m2pool.com - path: /var/www/html/web - img: /img - - -##测试环境 -#server: -# port: 9507 -# compression: -# enabled: true -# mime-types: application/json -# -#spring: -# #邮箱基本配置 -# mail: -# # 配置在limit_time内,用户可以发送limit次验证码 -# limit: 2 这个是我额外的配置,结合邮箱服务用的 -# limitTime: 10 这个是我额外的配置 -# #配置smtp服务主机地址 -# # sina smtp.sina.cn -# # aliyun smtp.aliyun.com -# # 163 smtp.163.com 端口号465或994 -# host: mail.privateemail.com -# #发送者邮箱 -# username: support@m2pool.cc -# #配置密码,注意不是真正的密码,而是刚刚申请到的授权码 -# # password: -# # password: m2pool2024@! -# # password: axvm-zfgx-cgcg-qhhu -# password: m2pool2024@! -# #端口号 -# port: 587 -# #默认的邮件编码为UTF-8 -# default-encoding: UTF-8 -# #其他参数 -# properties: -# mail: -# #配置SSL 加密工厂 -# smtp: -# ssl: -# #本地测试,先放开ssl -# enable: false -# required: false -# #开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误 -# debug: false -# socketFactory: -# class: javax.net.ssl.SSLSocketFactory -# -# application: -# # 应用名称 -# name: m2pool-oapi -# profiles: -# # 环境配置 -# active: test -# cloud: -# nacos: -# discovery: -# # 服务注册地址 -# server-addr: 127.0.0.1:8808 -# namespace: m2_test -# group: m2_test_group -# # server-addr: 127.0.0.1:8808 -# config: -# # 配置中心地址 -# server-addr: 127.0.0.1:8808 -# # server-addr: 127.0.0.1:8808 -# # 配置文件格式 -# file-extension: yml -# # 共享配置 -# shared-configs: -# - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} -# namespace: m2_test -# group: m2_test_group -# servlet: -# multipart: -# max-file-size: 2MB -# max-request-size: 8MB -# -#myenv: -# domain: https://test.m2pool.com -# path: /var/www/html/web_test -# img: /img - + active: test 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 56e70b9..037b75a 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 @@ -102,6 +102,7 @@ public class PoolServiceImpl implements PoolService { //全网算力 调用转换工具 动态转换为数值+单位 dto.setTotalPower(PowerUnitUtils.powerFormat(info.getPower(),pool.getCoin())); + dto.setHeight(info.getHeight()); //System.out.println("dto"+dto); }else { System.out.println("未能从节点获取到信息"); @@ -109,7 +110,7 @@ public class PoolServiceImpl implements PoolService { BigDecimal price = redisService.getCacheObject(pool.getCoin() + "_price"); dto.setPrice(price.toEngineeringString()+ " USD"); - dto.setHeight(info.getHeight()); + } //从enums中拿币种名、页面显示名、币种对应算法 diff --git a/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/controller/SysProfileController.java b/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/controller/SysProfileController.java index ba37736..57260f7 100644 --- a/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/controller/SysProfileController.java +++ b/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/controller/SysProfileController.java @@ -67,9 +67,12 @@ public class SysProfileController extends BaseController //隐藏不需要返回前端的信息 SysUserDto userDto = new SysUserDto(); BeanUtils.copyProperties(user,userDto); - - SysRole sysRole = user.getRoles().get(0); - + SysRole sysRole; + try { + sysRole = user.getRoles().get(0); + } catch (Exception e) { + return AjaxResult.error("角色不存在"); + } SysRoleDto roleDto = new SysRoleDto(); BeanUtils.copyProperties(sysRole,roleDto); diff --git a/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/service/impl/SysUserServiceImpl.java b/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/service/impl/SysUserServiceImpl.java index bcc9ed7..b481ce3 100644 --- a/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/service/impl/SysUserServiceImpl.java +++ b/m2pool-modules/m2pool-system/src/main/java/com/m2pool/system/service/impl/SysUserServiceImpl.java @@ -255,12 +255,13 @@ public class SysUserServiceImpl implements SysUserService { @Transactional(rollbackFor = Exception.class) public int updateUser(SysUser user) { - Long userId = user.getUserId(); + //Long userId = user.getUserId(); + System.out.println("修改用户信息"+user); // 删除用户与角色关联 - userRoleMapper.deleteUserRoleByUserId(userId); - // 新增用户与角色管理 此处要保证传过来的user中要携带roleIds - insertUserRole(user); + //userRoleMapper.deleteUserRoleByUserId(userId); + //// 新增用户与角色管理 此处要保证传过来的user中要携带roleIds + //insertUserRole(user); //// 删除用户与岗位关联 //userPostMapper.deleteUserPostByUserId(userId); //// 新增用户与岗位管理