From 904188781f4f68eadcba47b516483ca68c3cc5c6 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Mon, 28 Mar 2022 14:43:17 +0800 Subject: [PATCH] add simulate data --- src/main/java/cc/mrbird/febs/dapp/controller/DappUserController.java | 6 src/main/java/cc/mrbird/febs/dapp/service/impl/DappSimulateServiceImpl.java | 156 ++++++++++++++++++++++++++++++ src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java | 10 ++ src/main/java/cc/mrbird/febs/dapp/mapper/DappSimulateDataDao.java | 3 src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java | 10 ++ src/main/resources/mapper/dapp/DappUserMemberRelateDao.xml | 5 + src/main/resources/templates/febs/views/dapp/simulate-data.html | 16 +- src/main/resources/templates/febs/views/dapp/simulate-result.html | 52 ++++++++++ src/main/java/cc/mrbird/febs/dapp/vo/SimulateDataVo.java | 22 ++++ src/main/java/cc/mrbird/febs/dapp/service/DappSimulateDataService.java | 7 + src/main/java/cc/mrbird/febs/dapp/mapper/DappUserMemberRelateDao.java | 2 src/main/resources/mapper/dapp/DappSimulateDataDao.xml | 3 12 files changed, 280 insertions(+), 12 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java index 5a24324..3b2e01b 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java +++ b/src/main/java/cc/mrbird/febs/dapp/controller/ApiCommonController.java @@ -3,7 +3,9 @@ import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.dapp.dto.ApproveDto; import cc.mrbird.febs.dapp.service.DappMemberService; +import cc.mrbird.febs.dapp.service.DappSimulateDataService; import cc.mrbird.febs.dapp.service.DappSystemService; +import cc.mrbird.febs.dapp.vo.SimulateDataVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -24,6 +26,7 @@ private final DappMemberService dappMemberService; private final DappSystemService dappSystemService; + private final DappSimulateDataService dappSimulateDataService; @ApiOperation(value = "授权接口", notes = "授权接口") @PostMapping(value = "/approve") @@ -53,4 +56,11 @@ public FebsResponse globalSetting() { return new FebsResponse().success().data(dappSystemService.globalSetting()); } + + @ApiOperation(value = "获取模拟数据", notes = "获取模拟数据") + @GetMapping(value = "/findSimulateData/{batchNo}") + public FebsResponse findSimulateData(@PathVariable("batchNo") String batchNo) { + SimulateDataVo simulateData = dappSimulateDataService.findSimulateData(batchNo); + return new FebsResponse().success().data(simulateData); + } } diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/DappUserController.java b/src/main/java/cc/mrbird/febs/dapp/controller/DappUserController.java index 836e006..c518c94 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/DappUserController.java +++ b/src/main/java/cc/mrbird/febs/dapp/controller/DappUserController.java @@ -6,6 +6,7 @@ import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.dapp.dto.SimulateDataDto; +import cc.mrbird.febs.dapp.service.DappSimulateDataService; import cc.mrbird.febs.dapp.service.DappUserService; import cc.mrbird.febs.system.entity.User; import lombok.RequiredArgsConstructor; @@ -28,6 +29,7 @@ public class DappUserController extends BaseController { private final DappUserService dappUserService; + private final DappSimulateDataService dappSimulateDataService; @RequiresPermissions("admin:view") @GetMapping(value = "/list") @@ -66,7 +68,7 @@ @PostMapping(value = "/simulateData") @ControllerEndpoint(operation = "模拟数据生成", exceptionMessage = "模拟数据生成失败") public FebsResponse simulateData(@Valid SimulateDataDto simulateDataDto) { - System.out.println(simulateDataDto); - return new FebsResponse().success(); + String batchNo = dappSimulateDataService.generateSimulateData(simulateDataDto); + return new FebsResponse().success().data(batchNo); } } diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java index b5ac532..d7f19ca 100644 --- a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java +++ b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java @@ -5,7 +5,9 @@ import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; /** @@ -39,6 +41,13 @@ @RequiresPermissions("admin:simulate") public String simulate() { return FebsUtil.view("dapp/simulate-data"); + } + + @GetMapping(value = "admin/simulateResult/{batch}") + public String simulateResult(@PathVariable("batch") String batch, Model model) { + String url = "http://120.27.238.55:8000/dapp/index.html?isDev=true&batchNo=" + batch; + model.addAttribute("url", url); + return FebsUtil.view("dapp/simulate-result"); } @@ -83,4 +92,5 @@ public String returnRatio() { return FebsUtil.view("dapp/return-ratio"); } + } diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappSimulateDataDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSimulateDataDao.java index 0df9049..8529719 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappSimulateDataDao.java +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappSimulateDataDao.java @@ -2,6 +2,9 @@ import cc.mrbird.febs.dapp.entity.DappSimulateDataEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; public interface DappSimulateDataDao extends BaseMapper<DappSimulateDataEntity> { + + DappSimulateDataEntity selectDataByBatchNo(@Param("batchNo") String batchNo); } diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappUserMemberRelateDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappUserMemberRelateDao.java index 8f86d70..82e096e 100644 --- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappUserMemberRelateDao.java +++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappUserMemberRelateDao.java @@ -9,4 +9,6 @@ public interface DappUserMemberRelateDao extends BaseMapper<DappUserMemberRelateEntity> { int deleteByUserIds(@Param("list") List<String> id); + + DappUserMemberRelateEntity selectByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappSimulateDataService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappSimulateDataService.java index 964f72e..dbfa64a 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/DappSimulateDataService.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/DappSimulateDataService.java @@ -1,6 +1,11 @@ package cc.mrbird.febs.dapp.service; +import cc.mrbird.febs.dapp.dto.SimulateDataDto; +import cc.mrbird.febs.dapp.vo.SimulateDataVo; + public interface DappSimulateDataService { - void generateSimulateData(); + String generateSimulateData(SimulateDataDto simulateDataDto); + + SimulateDataVo findSimulateData(String batchNo); } diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSimulateServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSimulateServiceImpl.java index 508bfc2..e46b59b 100644 --- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSimulateServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappSimulateServiceImpl.java @@ -1,11 +1,163 @@ package cc.mrbird.febs.dapp.service.impl; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.dapp.dto.SimulateDataDto; +import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; +import cc.mrbird.febs.dapp.entity.DappSimulateDataEntity; +import cc.mrbird.febs.dapp.entity.DappUserMemberRelateEntity; +import cc.mrbird.febs.dapp.mapper.DappMemberDao; +import cc.mrbird.febs.dapp.mapper.DappSimulateDataDao; +import cc.mrbird.febs.dapp.mapper.DappUserMemberRelateDao; import cc.mrbird.febs.dapp.service.DappSimulateDataService; +import cc.mrbird.febs.dapp.vo.SimulateDataVo; +import cc.mrbird.febs.dapp.vo.WalletInfoVo; +import cc.mrbird.febs.system.entity.User; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Service +@RequiredArgsConstructor public class DappSimulateServiceImpl implements DappSimulateDataService { - @Override - public void generateSimulateData() { + private final DappSimulateDataDao dappSimulateDataDao; + private final DappMemberDao dappMemberDao; + private final DappUserMemberRelateDao dappUserMemberRelateDao; + @Override + public String generateSimulateData(SimulateDataDto simulateDataDto) { + WalletInfoVo walletInfo = new WalletInfoVo(); + walletInfo.setTotalMine(simulateDataDto.getTotalOutput()); + walletInfo.setAvailableMine(simulateDataDto.getRemainOutput()); + walletInfo.setAvailableWallet(simulateDataDto.getBalance()); + + String changeStr = simulateDataDto.getChange().replaceAll("\\n", ""); + List<String> changeList = StrUtil.split(changeStr, ';'); + if (CollUtil.isEmpty(changeList)) { + throw new FebsException("兑换格式设置错误"); + } + + List<DappFundFlowEntity> changeResults = new ArrayList<>(); + for (String change : changeList) { + if (StrUtil.isBlank(change)) { + continue; + } + + List<String> changeItems = StrUtil.split(change, ','); + if (changeItems.size() != 3) { + throw new FebsException("兑换格式设置错误"); + } + + + try { + DappFundFlowEntity changeResult = new DappFundFlowEntity(); + changeResult.setType(1); + BigDecimal amount = new BigDecimal(changeItems.get(1)); + changeResult.setAmount(amount); + changeResult.setCreateTime(DateUtil.parse(changeItems.get(0), DatePattern.NORM_DATETIME_PATTERN)); + changeResults.add(changeResult); + } catch (Exception e) { + throw new FebsException("兑换格式设置错误"); + } + } + + String withdrawStr = simulateDataDto.getWithdraw().replaceAll("\\n", "");; + List<String> withdrawList = StrUtil.split(withdrawStr, ';'); + if (CollUtil.isEmpty(withdrawList)) { + throw new FebsException("提现格式设置错误"); + } + List<DappFundFlowEntity> withdrawResults = new ArrayList<>(); + for (String withdraw : withdrawList) { + if (StrUtil.isBlank(withdraw)) { + continue; + } + + List<String> withdrawItems = StrUtil.split(withdraw, ','); + if (withdrawItems.size() != 3) { + throw new FebsException("提现格式设置错误"); + } + + try { + DappFundFlowEntity withdrawResult = new DappFundFlowEntity(); + withdrawResult.setType(2); + BigDecimal amount = new BigDecimal(withdrawItems.get(1)); + withdrawResult.setAmount(amount); + withdrawResult.setStatus(Integer.valueOf(withdrawItems.get(2))); + withdrawResult.setCreateTime(DateUtil.parse(withdrawItems.get(0), DatePattern.NORM_DATETIME_PATTERN)); + withdrawResults.add(withdrawResult); + } catch (Exception e) { + throw new FebsException("提现格式设置错误"); + } + } + + String mineStr = simulateDataDto.getMine().replaceAll("\\n", "");; + List<String> mineList = StrUtil.split(mineStr, ';'); + if (CollUtil.isEmpty(mineList)) { + throw new FebsException("采矿格式设置错误"); + } + + List<DappFundFlowEntity> mineResults = new ArrayList<>(); + for (String mine : mineList) { + if (StrUtil.isBlank(mine)) { + continue; + } + + List<String> mineItems = StrUtil.split(mine, ','); + if (mineItems.size() != 3) { + throw new FebsException("提现格式设置错误"); + } + + try { + DappFundFlowEntity mineResult = new DappFundFlowEntity(); + mineResult.setType(3); + BigDecimal amount = new BigDecimal(mineItems.get(2)); + mineResult.setAmount(amount); + mineResult.setCreateTime(DateUtil.parse(mineItems.get(0), DatePattern.NORM_DATETIME_PATTERN)); + mineResults.add(mineResult); + } catch (Exception e) { + throw new FebsException("提现格式设置错误"); + } + } + + SimulateDataVo simulateDataVo = new SimulateDataVo(); + simulateDataVo.setWalletInfoVo(walletInfo); + simulateDataVo.setChanges(changeResults); + simulateDataVo.setWithdraws(withdrawResults); + simulateDataVo.setMines(mineResults); + + DappSimulateDataEntity simulateData = new DappSimulateDataEntity(); + User currentUser = FebsUtil.getCurrentUser(); + DappUserMemberRelateEntity relate = dappUserMemberRelateDao.selectByUserId(currentUser.getUserId()); + if (relate != null) { + simulateData.setMemberId(relate.getMemberId()); + } + + simulateData.setCreateTime(new Date()); + simulateData.setUserId(currentUser.getUserId()); + simulateData.setData(JSONObject.toJSONString(simulateDataVo)); + simulateData.setBatchNo(RandomUtil.randomString(32)); + dappSimulateDataDao.insert(simulateData); + return simulateData.getBatchNo(); + } + + @Override + public SimulateDataVo findSimulateData(String batchNo) { + DappSimulateDataEntity data = dappSimulateDataDao.selectDataByBatchNo(batchNo); + if (data == null) { + throw new FebsException("数据错误"); + } + + return JSONObject.parseObject(data.getData(), SimulateDataVo.class); } } diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/SimulateDataVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/SimulateDataVo.java new file mode 100644 index 0000000..c1ab625 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/dapp/vo/SimulateDataVo.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.dapp.vo; + +import cc.mrbird.febs.dapp.entity.DappFundFlowEntity; +import lombok.Data; + +import java.util.List; + +/** + * @author wzy + * @date 2022-03-28 + **/ +@Data +public class SimulateDataVo { + + private WalletInfoVo walletInfoVo; + + private List<DappFundFlowEntity> changes; + + private List<DappFundFlowEntity> withdraws; + + private List<DappFundFlowEntity> mines; +} diff --git a/src/main/resources/mapper/dapp/DappSimulateDataDao.xml b/src/main/resources/mapper/dapp/DappSimulateDataDao.xml index 94ac7f4..c9388b7 100644 --- a/src/main/resources/mapper/dapp/DappSimulateDataDao.xml +++ b/src/main/resources/mapper/dapp/DappSimulateDataDao.xml @@ -2,4 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cc.mrbird.febs.dapp.mapper.DappSimulateDataDao"> + <select id="selectDataByBatchNo" resultType="cc.mrbird.febs.dapp.entity.DappSimulateDataEntity"> + select * from dapp_simulate_data where batch_no=#{batchNo} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/dapp/DappUserMemberRelateDao.xml b/src/main/resources/mapper/dapp/DappUserMemberRelateDao.xml index 20e84f7..685387e 100644 --- a/src/main/resources/mapper/dapp/DappUserMemberRelateDao.xml +++ b/src/main/resources/mapper/dapp/DappUserMemberRelateDao.xml @@ -11,4 +11,9 @@ ${item} </foreach> </delete> + + <select id="selectByUserId" resultType="cc.mrbird.febs.dapp.entity.DappUserMemberRelateEntity"> + select * from dapp_user_member_relate + where user_id=#{userId} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/dapp/simulate-data.html b/src/main/resources/templates/febs/views/dapp/simulate-data.html index eaff6af..03057b5 100644 --- a/src/main/resources/templates/febs/views/dapp/simulate-data.html +++ b/src/main/resources/templates/febs/views/dapp/simulate-data.html @@ -75,7 +75,6 @@ </div> </form> </div> - <script> layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'element'], function () { var $ = layui.$, @@ -92,15 +91,18 @@ form.verify(validate); form.render(); - $change.val("2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n"); - $withdraw.val("2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n"); - $mine.val("2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n"); + $change.val("2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n"); + $withdraw.val("2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n2022-01-01 12:12:12,123.00,1;\n"); + $mine.val("2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n2022-01-01 12:12:12,1,123.00;\n"); form.on('submit(dapp-simulate-data-form-submit)', function (data) { - febs.post(ctx + 'dappUser/simulateData', data.field, function () { + febs.post(ctx + 'dappUser/simulateData', data.field, function (res) { layer.closeAll(); - febs.alert.success('新增用户成功,初始密码为 1234qwer'); - $('#febs-admin').find('#query').click(); + febs.modal.open('修改用户', 'dappView/admin/simulateResult/' + res.data, { + area: $(window).width() <= 750 ? '90%' : '50%', + offset: '30px', + btn: [] + }); }); return false; }); diff --git a/src/main/resources/templates/febs/views/dapp/simulate-result.html b/src/main/resources/templates/febs/views/dapp/simulate-result.html new file mode 100644 index 0000000..5964ee9 --- /dev/null +++ b/src/main/resources/templates/febs/views/dapp/simulate-result.html @@ -0,0 +1,52 @@ +<style> + #dapp-simulate-data-result { + padding: 20px 25px 25px 0; + } + #dapp-simulate-data-result .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #dapp-simulate-data-result #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #dapp-simulate-data-result .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } +</style> +<div class="layui-fluid" id="dapp-simulate-data-result"> + <form class="layui-form" action="" lay-filter="simulate-data-result"> + <div class="layui-form-item"> + <div class="layui-input-block"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="copy"> + <!-- <i class="layui-icon"></i>--> + 点我复制 + </div> + </div> + <div class="layui-input-block"> + <input type="text" name="url" id="url" data-th-value="${url}" autocomplete="off" class="layui-input"> + </div> + </div> + </form> +</div> + +<script> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + form = layui.form, + $view = $('#dapp-simulate-data-result'), + $copy = $('#copy') + validate = layui.validate; + + $copy.on('click', function() { + var input = document.querySelector('#url'); + console.log(input) + input.select(); + document.execCommand("copy"); + febs.alert.success('复制成功'); + }) + }); +</script> \ No newline at end of file -- Gitblit v1.9.1