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