getCoinPriceV2(CoinVo coinVo);
}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShopService.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShopService.java
index f59866a..e492909 100644
--- a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShopService.java
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShopService.java
@@ -2,14 +2,13 @@ package com.m2pool.lease.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.m2pool.lease.dto.*;
+import com.m2pool.lease.dto.v2.PayWithdrawSellerRecordDto;
+import com.m2pool.lease.dto.v2.ShopWalletInfoDto;
import com.m2pool.lease.entity.LeaseShop;
-import com.m2pool.lease.vo.BaseVo;
-import com.m2pool.lease.vo.ShopConfigVo;
-import com.m2pool.lease.vo.ShopVo;
-import org.springframework.web.bind.annotation.RequestBody;
+import com.m2pool.lease.vo.*;
+import com.m2pool.lease.vo.v2.ShopWalletInfoVo;
import java.util.List;
-import java.util.Map;
/**
*
@@ -114,4 +113,34 @@ public interface LeaseShopService extends IService {
Result getChainAndCoin(BaseVo baseVo);
+
+
+ /**
+ * 根据店铺id 获取店铺配置信息列表--v2 新增手续费和钱包余额
+ * @param baseVo
+ * @return
+ */
+ Result> getShopConfigV2(BaseVo baseVo);
+
+
+ /**
+ * 卖家余额提现
+ * @param balanceVo
+ * @return
+ */
+ Result withdrawBalanceForSeller(BalanceVo balanceVo);
+
+
+ /**
+ * 修改商铺配置--v2 新增手续费和钱包余额
+ */
+ Result updateShopConfigV2(ShopWalletInfoVo shopWalletInfoVo);
+
+
+
+ /**
+ * 获取店铺内所有钱包(包含历史钱包)提现列表
+ * @return
+ */
+ PageResult balanceWithdrawList(PageVo pageVo);
}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShoppingCartService.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShoppingCartService.java
index 54287fd..6f58288 100644
--- a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShoppingCartService.java
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseShoppingCartService.java
@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.m2pool.lease.dto.PageResult;
import com.m2pool.lease.dto.Result;
import com.m2pool.lease.dto.ShopCartDto;
+import com.m2pool.lease.dto.v2.ShopCartV2Dto;
import com.m2pool.lease.entity.LeaseShoppingCart;
import com.m2pool.lease.vo.BaseVo;
import com.m2pool.lease.vo.PageVo;
import com.m2pool.lease.vo.ProductAndMachineVo;
import com.m2pool.lease.vo.ShoppingCartInfoURDVo;
+import com.m2pool.lease.vo.v2.AddGoodsVo;
+import com.m2pool.lease.vo.v2.CartInfoVo;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -55,4 +59,32 @@ public interface LeaseShoppingCartService extends IService {
* @return
*/
Result deleteBatchGoodsForIsDelete();
+
+
+ /**
+ * 批量添加购物车
+ * @param addGoodsVoList
+ * @return
+ */
+ Result addGoodsV2(List addGoodsVoList);
+
+
+ /**
+ * 查询购物车中商品列表
+ * @param pageVo
+ * @return
+ */
+ PageResult getGoodsListV2(PageVo pageVo);
+ /**
+ * 批量删除购物车中商品
+ * @param baseVoList
+ * @return
+ */
+ Result deleteBatchGoodsV2(List baseVoList);
+
+ /**
+ * 批量删除购物车中已下架商品
+ * @return
+ */
+ Result deleteBatchGoodsForIsDeleteV2();
}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseUserService.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseUserService.java
index 0295ed7..a406291 100644
--- a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseUserService.java
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/LeaseUserService.java
@@ -5,7 +5,10 @@ import com.m2pool.lease.dto.*;
import com.m2pool.lease.entity.LeaseUser;
import com.m2pool.lease.vo.*;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -90,4 +93,17 @@ public interface LeaseUserService extends IService {
Result> getCharge();
+ /**
+ * 下载客户端
+ * @param response
+ * @return
+ */
+ void downloadClient(String userEmail,HttpServletRequest request, HttpServletResponse response);
+
+
+ /**
+ * 获取用户信息
+ * @return
+ */
+ String getClientVersion();
}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineConfigServiceImpl.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineConfigServiceImpl.java
new file mode 100644
index 0000000..ee81e7c
--- /dev/null
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.m2pool.lease.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.m2pool.lease.entity.LeaseMachineConfig;
+import com.m2pool.lease.mapper.LeaseMachineConfigMapper;
+import com.m2pool.lease.service.LeaseMachineConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * GPU对应币种挖矿算力(只要gpu类型相同那么就使用这个配置) 服务实现类
+ *
+ *
+ * @author yyb
+ * @since 2025-11-27
+ */
+@Service
+public class LeaseMachineConfigServiceImpl extends ServiceImpl implements LeaseMachineConfigService {
+
+}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachinePriceServiceImpl.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachinePriceServiceImpl.java
new file mode 100644
index 0000000..9742b81
--- /dev/null
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachinePriceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.m2pool.lease.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.m2pool.lease.entity.LeaseMachinePrice;
+import com.m2pool.lease.mapper.LeaseMachinePriceMapper;
+import com.m2pool.lease.service.LeaseMachinePriceService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 商品表对应的物品机器表 服务实现类
+ *
+ *
+ * @author yyb
+ * @since 2025-11-25
+ */
+@Service
+public class LeaseMachinePriceServiceImpl extends ServiceImpl implements LeaseMachinePriceService {
+
+}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineServiceImpl.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineServiceImpl.java
new file mode 100644
index 0000000..aa88426
--- /dev/null
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseMachineServiceImpl.java
@@ -0,0 +1,444 @@
+package com.m2pool.lease.service.impl;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.m2pool.common.core.utils.StringUtils;
+import com.m2pool.common.security.utils.SecurityUtils;
+import com.m2pool.lease.dto.*;
+import com.m2pool.lease.dto.v2.*;
+import com.m2pool.lease.entity.LeaseMachine;
+import com.m2pool.lease.entity.LeaseMachineConfig;
+import com.m2pool.lease.entity.LeaseMachinePrice;
+import com.m2pool.lease.entity.LeaseShop;
+import com.m2pool.lease.exception.MachineException;
+import com.m2pool.lease.exception.ProductSoldOutException;
+import com.m2pool.lease.mapper.*;
+import com.m2pool.lease.service.LeaseMachineConfigService;
+import com.m2pool.lease.service.LeaseMachinePriceService;
+import com.m2pool.lease.service.LeaseMachineService;
+import com.m2pool.lease.utils.UuidGeneratorUtil;
+import com.m2pool.lease.vo.BaseVo;
+import com.m2pool.lease.vo.ProductPageVo;
+import com.m2pool.lease.vo.v2.*;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * gpu类型出售矿机表 服务实现类
+ *
+ *
+ * @author yyb
+ * @since 2025-11-21
+ */
+@Service
+public class LeaseMachineServiceImpl extends ServiceImpl implements LeaseMachineService {
+
+
+ @Resource
+ private LeaseShopConfigMapper leaseShopConfigMapper;
+
+ @Resource
+ private LeaseMachineMapper leaseMachineMapper;
+
+ @Resource
+ private LeaseShopMapper leaseShopMapper;
+
+ @Resource
+ private LeaseMachineConfigMapper leaseMachineConfigMapper;
+
+ @Resource
+ private LeaseMachinePriceMapper leaseMachinePriceMapper;
+
+ @Resource
+ private LeaseMachineConfigService leaseMachineConfigService;
+
+ @Resource
+ private LeaseMachinePriceService leaseMachinePriceService;
+
+ public LeaseShop getShopById() {
+ return leaseShopMapper.selectOne(new LambdaQueryWrapper().eq(LeaseShop::getUserEmail, SecurityUtils.getUsername())
+ .eq(LeaseShop::getDel, false));
+ }
+ @Override
+ public PageResult getShopList(ProductPageVo productPageVo) {
+ //获取到矿机
+ Set shopIds = leaseMachineMapper.getShopIds();
+ if (shopIds.isEmpty()){
+ return PageResult.fail(new ArrayList<>(), "暂无商品");
+ }
+ PageHelper.startPage(productPageVo.getPageNum(), productPageVo.getPageSize());
+ List existsMachineShop = leaseMachineMapper.getExistsMachineShop(shopIds, productPageVo.getCoin(), productPageVo.getAlgorithm());
+ PageInfo pageInfo = new PageInfo<>(existsMachineShop);
+ //店铺支付方式
+ List payType = leaseShopConfigMapper.getPayType(new ArrayList<>(shopIds));
+ Map> payTypeMap = payType.stream().collect(Collectors.groupingBy(PayTypeDto::getShopId));
+
+ PageResult success = PageResult.success(existsMachineShop);
+ for (ShopInfoDto shopInfoDto : success.getRows()) {
+ shopInfoDto.setPayTypes(payTypeMap.get(shopInfoDto.getShopId()));
+ }
+ success.setTotal(pageInfo.getTotal());
+ success.setTotalPage(pageInfo.getPages());
+ PageHelper.clearPage();
+ return success;
+ }
+
+ @Override
+ public PageResult getShopMachineList(ShopMachineVo shopMachineVo) {
+ //获取店铺钱包信息
+ List shopWalletInfo = leaseShopMapper.getShopWalletInfo(shopMachineVo.getShopId());
+ //分页查询矿机基础信息
+ PageHelper.startPage(shopMachineVo.getPageNum(), shopMachineVo.getPageSize());
+ shopMachineVo = buildQuery(shopMachineVo,shopWalletInfo.get(0));
+ List machineInfoDtoList = leaseMachineMapper.getShopMachineList(shopMachineVo);
+ PageInfo pageInfo = new PageInfo<>(machineInfoDtoList);
+ //获取gpu和asic对应币种算力和月收益信息
+ PageResult success = setGpuAndAsicInfo(PageResult.successColumns(machineInfoDtoList),shopMachineVo);
+ success.setTotal(pageInfo.getTotal());
+ success.setTotalPage(pageInfo.getPages());
+ PageHelper.clearPage();
+ return success;
+ }
+
+ /**
+ * 设置gpu和asic 对应的收益列表信息
+ * @param
+ */
+ public PageResult setGpuAndAsicInfo(PageResult success,ShopMachineVo shopMachineVo) {
+ List machineInfoDtoList = success.getRows();
+ List columns = success.getColumns();
+ if (!machineInfoDtoList.isEmpty()){
+ List machineIds = machineInfoDtoList.stream()
+ .map(MachineInfoDto::getId).collect(Collectors.toList());
+ //获取价格列表(价格列表只与主表有关,与machine_config 表无关)
+ List machinePriceByMachineIds = leaseMachinePriceMapper.getMachinePriceByMachineIds(machineIds);
+ Map> machinePriceMap = machinePriceByMachineIds.stream()
+ .collect(Collectors.groupingBy(MachinePayTypeDto::getProductMachineId));
+
+ //动态列:获取每个矿机前十个币种算法的配置
+ List gpuConfigList = leaseMachineMapper.getGpuConfigList(machineIds);
+ Map> collect = gpuConfigList.stream()
+ .collect(Collectors.groupingBy(PowerIncomeInfoDto::getMachineId));
+ for (MachineInfoDto machineInfo : machineInfoDtoList) {
+ machineInfo.setPriceList(machinePriceMap.get(machineInfo.getId()));
+ List powerIncomeInfoDtoList = collect.get(machineInfo.getId());
+ for (int i = 0; i < powerIncomeInfoDtoList.size(); i++) {
+ PowerIncomeInfoDto powerIncomeInfoDto = powerIncomeInfoDtoList.get(i);
+ setDynamicColumn(columns,powerIncomeInfoDto,machineInfo);
+ }
+ }
+ //排序分页后对象
+ List sorted = sorted(machineInfoDtoList, shopMachineVo);
+ success.setRows(sorted);
+ success.setColumns(columns);
+
+ }
+ return success;
+ }
+
+ /**
+ * 设置算力动态列
+ * @param columns
+ */
+ public void setDynamicColumn(List columns,PowerIncomeInfoDto powerIncomeInfoDto,MachineInfoDto machineInfo){
+ TableHeadersDto column = TableHeadersDto.builder()
+ .label(powerIncomeInfoDto.getCoin())
+ .type("hashrate")
+ .unit(powerIncomeInfoDto.getUnit())
+ .icon(powerIncomeInfoDto.getIcon())
+ .width(100).build();
+ int index = 1;
+
+ for (TableHeadersDto tableHeadersDto : columns) {
+ if (index < 10 && "hashrate".equals(tableHeadersDto.getType())){
+ if (column.getLabel().equals(tableHeadersDto.getLabel())){
+ setDynamicPower(index,machineInfo,powerIncomeInfoDto);
+ return;
+ }else{
+ index++;
+ }
+ }
+ }
+ if (index <= 10){
+ setDynamicPower(index,machineInfo,powerIncomeInfoDto);
+ column.setKey("c"+index);
+ columns.add(column);
+ }
+ }
+
+ private void setDynamicPower(int index,MachineInfoDto machineInfo,PowerIncomeInfoDto powerIncomeInfoDto){
+ switch (index){
+ case 1:
+ machineInfo.setC1(powerIncomeInfoDto.getPower());
+ break;
+ case 2:
+ machineInfo.setC2(powerIncomeInfoDto.getPower());
+ break;
+ case 3:
+ machineInfo.setC3(powerIncomeInfoDto.getPower());
+ break;
+ case 4:
+ machineInfo.setC4(powerIncomeInfoDto.getPower());
+ break;
+ case 5:
+ machineInfo.setC5(powerIncomeInfoDto.getPower());
+ break;
+ case 6:
+ machineInfo.setC6(powerIncomeInfoDto.getPower());
+ break;
+ case 7:
+ machineInfo.setC7(powerIncomeInfoDto.getPower());
+ break;
+ case 8:
+ machineInfo.setC8(powerIncomeInfoDto.getPower());
+ break;
+ case 9:
+ machineInfo.setC9(powerIncomeInfoDto.getPower());
+ break;
+ case 10:
+ machineInfo.setC10(powerIncomeInfoDto.getPower());
+ break;
+ }
+ }
+
+ @Override
+ public PageResult getShopMachineListForSeller(SellerMachineVo sellerMachineVo) {
+ LeaseShop leaseShop = getShopById();
+ PageHelper.startPage(sellerMachineVo.getPageNum(), sellerMachineVo.getPageSize());
+ List machineInfoDtoList = leaseMachineMapper.getShopMachineListForSeller(sellerMachineVo,leaseShop.getId());
+ PageInfo pageInfo = new PageInfo<>(machineInfoDtoList);
+ if (machineInfoDtoList.isEmpty()){
+ return PageResult.fail(new ArrayList<>(), "暂无矿机");
+ }
+ PageResult success = PageResult.success(machineInfoDtoList);
+ //获取矿机配置信息
+ List coinAndAlgoList = leaseMachineMapper.getCoinAndAlgoList(success.getRows());
+ Map> collect1 = coinAndAlgoList.stream().collect(Collectors.groupingBy(AsicCoinAndAlgoDto::getProductMachineId));
+ //价格配置信息
+ List machinePriceList = leaseMachineMapper.getMachinePriceList(success.getRows());
+ Map> collect = machinePriceList.stream().collect(Collectors.groupingBy(MachinePayTypeDto::getProductMachineId));
+ for (SellerMachineInfoDto row : success.getRows()) {
+ row.setPriceList(collect.get(row.getId()));
+ row.setCoinAndAlgoList(collect1.get(row.getId()));
+ }
+ success.setTotal(pageInfo.getTotal());
+ success.setTotalPage(pageInfo.getPages());
+ PageHelper.clearPage();
+ return success;
+ }
+
+
+ /**
+ * 分页内排序
+ * @param shopMachineVo 查询条件
+ * @param machineInfoDtoList 钱包信息
+ * @return 查询条件
+ */
+ public List sorted(List machineInfoDtoList, ShopMachineVo shopMachineVo){
+
+ if (shopMachineVo.getPriceSort() != null) {
+ Comparator priceComparator = shopMachineVo.getPriceSort() ?
+ Comparator.comparing(MachineInfoDto::getPrice) :
+ Comparator.comparing(MachineInfoDto::getPrice).reversed();
+ return machineInfoDtoList.stream()
+ .sorted(priceComparator)
+ .collect(Collectors.toList());
+ } else if (shopMachineVo.getPowerSort() != null) {
+ Comparator powerComparator = shopMachineVo.getPowerSort() ?
+ Comparator.comparing(MachineInfoDto::getTheoryPower) :
+ Comparator.comparing(MachineInfoDto::getTheoryPower).reversed();
+ return machineInfoDtoList.stream()
+ .sorted(powerComparator)
+ .collect(Collectors.toList());
+ }else {
+ return machineInfoDtoList;
+ }
+ }
+
+ public ShopMachineVo buildQuery(ShopMachineVo shopMachineVo,PayConfigDto payConfigDto){
+ if (StringUtils.isEmpty(shopMachineVo.getChain()) && StringUtils.isEmpty(shopMachineVo.getCoin())){
+ shopMachineVo.setChain(payConfigDto.getPayChain());
+ shopMachineVo.setCoin(payConfigDto.getPayCoin());
+ }
+ //BigDecimal power = PowerUnit.getPower(shopMachineVo.getUnit()).divide(BigDecimal.valueOf(1000 * 1000),2, RoundingMode.HALF_UP);
+ //shopMachineVo.setMaxPower(shopMachineVo.getMaxPower().multiply(power));
+ //shopMachineVo.setMinPower(shopMachineVo.getMinPower().multiply(power));
+ ////算力设置
+ //if (shopMachineVo.getMaxPower().compareTo(shopMachineVo.getMinPower()) < 0){
+ // shopMachineVo.setMaxPower(shopMachineVo.getMinPower());
+ // shopMachineVo.setMinPower(shopMachineVo.getMaxPower());
+ //}
+ ////功耗设置
+ //if (shopMachineVo.getMaxPowerDissipation().compareTo(shopMachineVo.getMinPowerDissipation()) < 0){
+ // shopMachineVo.setMaxPowerDissipation(shopMachineVo.getMinPowerDissipation());
+ // shopMachineVo.setMinPowerDissipation(shopMachineVo.getMaxPowerDissipation());
+ //}
+ //价格设置
+ if (shopMachineVo.getMaxPrice().compareTo(shopMachineVo.getMinPrice()) < 0){
+
+ shopMachineVo.setMaxPrice(shopMachineVo.getMinPrice());
+ shopMachineVo.setMinPrice(shopMachineVo.getMaxPrice());
+ }
+ return shopMachineVo;
+ }
+
+
+ @Override
+ @Transactional
+ public Result addAsicMachine(AsicMachineParamsVo asicMachineParamsVo) {
+ LeaseShop leaseShop = getShopById();
+ if (leaseShop == null){
+ return Result.fail("添加ASIC矿机失败,未找到商铺,请重试");
+ }
+ //新增lease_machine主表信息
+ LeaseMachine machine = LeaseMachine.builder()
+ .hostMac(UuidGeneratorUtil.generateUuidWithoutHyphen())
+ .shopId(leaseShop.getId())
+ .type(false)
+ .maxLeaseDays(asicMachineParamsVo.getMaxLeaseDays())
+ .saleNumbers(asicMachineParamsVo.getSaleNumbers())
+ .build();
+ int machineInsert = leaseMachineMapper.insert(machine);
+
+ //新增lease_asic_coin_power_config 配置信息表信息 + lease_machine_price 矿机价格表信息
+ if (machineInsert > 0){
+ List collect = asicMachineParamsVo.getCoinAndAlgoList().stream().map(
+ coinAndAlgo -> LeaseMachineConfig.builder()
+ .machineId(machine.getId())
+ .name(asicMachineParamsVo.getName())
+ .powerDissipation(asicMachineParamsVo.getPowerDissipation())
+ .coin(coinAndAlgo.getCoin())
+ .algorithm(coinAndAlgo.getAlgorithm())
+ .hashrate(coinAndAlgo.getTheoryPower())
+ .unit(coinAndAlgo.getUnit())
+ .build()
+ ).collect(Collectors.toList());
+
+ List collect1 = asicMachineParamsVo.getPriceList().stream()
+ .map(machinePayTypeVo ->
+ LeaseMachinePrice.builder()
+ .machineId(machine.getId())
+ .price(machinePayTypeVo.getPrice())
+ .coin(machinePayTypeVo.getCoin())
+ .chain(machinePayTypeVo.getChain())
+ .build()
+ ).collect(Collectors.toList());
+ boolean b1 = leaseMachinePriceService.saveBatch(collect1);
+ boolean b = leaseMachineConfigService.saveBatch(collect);
+ if (!b && !b1){
+ throw new MachineException("添加asic矿机币价及算力信息失败");
+ }
+ return Result.success("添加asic矿机成功");
+ }
+ return Result.fail("添加ASIC矿机失败,请重试");
+ }
+
+ @Override
+ @Transactional
+ public Result updateAsicMachine(AsicMachineParamsVo asicMachineParamsVo) {
+ //修改lease_machine主表信息
+ LeaseMachine machine = LeaseMachine.builder()
+ .id(asicMachineParamsVo.getId())
+ .maxLeaseDays(asicMachineParamsVo.getMaxLeaseDays())
+ .saleNumbers(asicMachineParamsVo.getSaleNumbers())
+ .state(asicMachineParamsVo.getState())
+ .build();
+ int machineUpdate = leaseMachineMapper.updateById(machine);
+ //修改lease_machine_price 矿机价格表信息 + 修改lease_asic_coin_power_config 配置信息表信息
+ if (machineUpdate > 0){
+
+ List collect = asicMachineParamsVo.getPriceList().stream().map(
+ machinePayTypeVo ->
+ LeaseMachinePrice.builder()
+ .id(machinePayTypeVo.getPayTypeId())
+ .price(machinePayTypeVo.getPrice())
+ .build()
+ ).collect(Collectors.toList());
+ boolean b = leaseMachinePriceService.updateBatchById(collect);
+ List collect1 = asicMachineParamsVo.getCoinAndAlgoList().stream().map(coinAndAlgo ->
+ LeaseMachineConfig.builder()
+ .id(coinAndAlgo.getCoinAndPowerId())
+ .machineId(machine.getId())
+ .name(asicMachineParamsVo.getName())
+ .coin(coinAndAlgo.getCoin())
+ .hashrate(coinAndAlgo.getTheoryPower())
+ .algorithm(coinAndAlgo.getAlgorithm())
+ .unit(coinAndAlgo.getUnit())
+ .powerDissipation(asicMachineParamsVo.getPowerDissipation())
+ .build()
+ ).collect(Collectors.toList());
+ boolean b1 = leaseMachineConfigService.saveOrUpdateBatch(collect1);
+ if (!b && !b1){
+ throw new MachineException("修改asic矿机币价及算力信息失败");
+ }
+
+ return Result.success("修改ASIC矿机成功");
+ }
+ return Result.fail("修改ASIC矿机失败,请重试");
+ }
+
+ @Override
+ @Transactional
+ public Result updateGpuMachine(List gpuMachineParamsVoList) {
+ for (GpuMachineParamsVo gpuMachineParamsVo : gpuMachineParamsVoList) {
+ //修改lease_machine主表信息
+ LeaseMachine machine = LeaseMachine.builder()
+ .id(gpuMachineParamsVo.getId())
+ .maxLeaseDays(gpuMachineParamsVo.getMaxLeaseDays())
+ .state(gpuMachineParamsVo.getState())
+ .build();
+ int machineUpdate = leaseMachineMapper.updateById(machine);
+ //修改lease_machine_price 矿机价格表信息 + gpu的配置信息是固定的不能修改
+ if (machineUpdate > 0){
+ List priceList = gpuMachineParamsVo.getPriceList();
+ for (MachinePayTypeVo machinePayTypeVo : priceList) {
+ LeaseMachinePrice build = LeaseMachinePrice.builder()
+ .id(machinePayTypeVo.getPayTypeId())
+ .price(machinePayTypeVo.getPrice())
+ .chain(machinePayTypeVo.getChain())
+ .coin(machinePayTypeVo.getCoin())
+ .machineId(machine.getId())
+ .build();
+ if (build.getId() == null || build.getId() == 0){
+ leaseMachinePriceMapper.insert(build);
+ }else{
+ leaseMachinePriceMapper.updateById(build);
+ }
+ }
+ }
+ }
+ return Result.success("修改GPU矿机成功") ;
+ }
+
+
+ @Override
+ @Transactional
+ public Result updateMachineState(MachineStateVo machineStateVo) {
+ leaseMachineMapper.updateById(LeaseMachine.builder().id(machineStateVo.getId()).state(machineStateVo.getState()).build());
+ return machineStateVo.getState() ? Result.success("下架成功") : Result.success("上架成功");
+ }
+
+ @Override
+ public Result deleteMachine(BaseVo baseVo) {
+ //TODO 删除之前需要判断是否存在订单
+ leaseMachineMapper.updateById(LeaseMachine.builder().id(baseVo.getId()).del(true).build());
+ //删除售价
+ leaseMachinePriceMapper.update(LeaseMachinePrice.builder().del(true).build(),new LambdaQueryWrapper()
+ .eq(LeaseMachinePrice::getMachineId,baseVo.getId()));
+ //ASIC/GPU 矿机删除配置信息
+ leaseMachineConfigMapper.update(LeaseMachineConfig.builder().del(true).build(),
+ new LambdaQueryWrapper().eq(LeaseMachineConfig::getMachineId,baseVo.getId()));
+
+ return Result.success("删除成功");
+ }
+}
diff --git a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java
index f59b8d6..210723b 100644
--- a/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java
+++ b/m2pool-modules/m2pool-lease/src/main/java/com/m2pool/lease/service/impl/LeaseOrderInfoServiceImpl.java
@@ -13,19 +13,25 @@ import com.m2pool.common.security.utils.SecurityUtils;
import com.m2pool.lease.constant.CoinCharge;
import com.m2pool.lease.constant.RedisKey;
import com.m2pool.lease.dto.*;
+import com.m2pool.lease.dto.v2.*;
import com.m2pool.lease.entity.*;
import com.m2pool.lease.exception.OrderException;
import com.m2pool.lease.mapper.*;
+import com.m2pool.lease.netty.handler.ChannelManager;
+import com.m2pool.lease.netty.handler.ServerChannelHandler;
import com.m2pool.lease.service.LeaseOrderInfoService;
import com.m2pool.lease.service.LeaseOrderItemService;
import com.m2pool.lease.service.LeaseProductService;
import com.m2pool.lease.service.LeaseUserOwnedProductService;
import com.m2pool.lease.utils.UuidGeneratorUtil;
import com.m2pool.lease.vo.*;
+import com.m2pool.lease.vo.v2.CoinAndAlgorithmVo;
+import io.netty.channel.Channel;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.time.Instant;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
@@ -61,9 +67,6 @@ public class LeaseOrderInfoServiceImpl extends ServiceImpl()
- .eq(LeaseShoppingCart::getUserId, SecurityUtils.getUsername()));
int delete = leaseShoppingCartInfoMapper.delete(new LambdaUpdateWrapper