From af18f13ad4056a6a2f134c6fa3ccf6e0d67ad2be Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Fri, 19 Apr 2024 12:01:20 +0800
Subject: [PATCH] 后台优化

---
 src/main/resources/templates/febs/views/modules/banner/zhiyaAdd.html       |   72 ++++++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java |   62 +++++++++++++++
 src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java         |    3 
 src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java    |   10 ++
 src/main/java/cc/mrbird/febs/dapp/dto/ZhiyaAddDto.java                     |   25 ++++++
 src/main/java/cc/mrbird/febs/dapp/controller/ViewBannerController.java     |   10 ++
 src/main/resources/templates/febs/views/modules/banner/inviteList.html     |    8 +-
 7 files changed, 186 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java b/src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java
index e94bf75..efe950b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/AdminBannerController.java
@@ -6,6 +6,7 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.DataDicEnum;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.dto.ZhiyaAddDto;
 import cc.mrbird.febs.dapp.entity.DappCoinPrice;
 import cc.mrbird.febs.dapp.entity.DappHdRecord;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
@@ -40,6 +41,15 @@
     private final ChainProducer chainProducer;
 
     /**
+     * 质押恢复
+     */
+    @PostMapping("zhiyaAdd")
+    @ControllerEndpoint(operation = "质押恢复", exceptionMessage = "操作失败")
+    public FebsResponse zhiyaAdd(@Valid ZhiyaAddDto zhiyaAddDto) {
+        return iAdminBannerService.zhiyaAdd(zhiyaAddDto);
+    }
+
+    /**
      * 邀请---列表
      */
     @GetMapping("inviteList")
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ViewBannerController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ViewBannerController.java
index 68f44d4..b9e8466 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ViewBannerController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ViewBannerController.java
@@ -31,6 +31,16 @@
 
 
     /**
+     * 质押恢复
+     */
+    @GetMapping("zhiyaAdd")
+    @RequiresPermissions("zhiyaAdd:view")
+    public String zhiyaAdd() {
+        return FebsUtil.view("modules/banner/zhiyaAdd");
+    }
+
+
+    /**
      * 邀请---列表
      */
     @GetMapping("inviteList")
diff --git a/src/main/java/cc/mrbird/febs/dapp/dto/ZhiyaAddDto.java b/src/main/java/cc/mrbird/febs/dapp/dto/ZhiyaAddDto.java
new file mode 100644
index 0000000..36f340d
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/dto/ZhiyaAddDto.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.dapp.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "WalletOperateDto", description = "钱包操作参数接收类")
+public class ZhiyaAddDto {
+
+    @NotBlank(message = "地址不能为空")
+    private String address;
+
+    @Valid
+    @NotNull(message = "数量不能为空")
+    @Min(0)
+    private String amount;
+
+    @NotBlank(message = "HASH不能为空")
+    private String zyHash;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java b/src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java
index eb63c0c..bfb3146 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/IAdminBannerService.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.dapp.dto.ZhiyaAddDto;
 import cc.mrbird.febs.dapp.entity.DappCoinPrice;
 import cc.mrbird.febs.dapp.entity.DappHdRecord;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
@@ -31,4 +32,6 @@
     IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request);
 
     IPage<DappMemberEntity> inviteList(DappMemberEntity dappMemberEntity, QueryRequest request);
+
+    FebsResponse zhiyaAdd(ZhiyaAddDto zhiyaAddDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
index 831a44b..524171d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/AdminBannerServiceImpl.java
@@ -3,10 +3,15 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.enumerates.DataDicEnum;
+import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.dapp.dto.TransferDto;
+import cc.mrbird.febs.dapp.dto.ZhiyaAddDto;
 import cc.mrbird.febs.dapp.entity.*;
 import cc.mrbird.febs.dapp.mapper.*;
 import cc.mrbird.febs.dapp.service.AsyncCjService;
+import cc.mrbird.febs.dapp.service.DappWalletService;
 import cc.mrbird.febs.dapp.service.IAdminBannerService;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
@@ -40,6 +45,9 @@
     private final AsyncCjService asyncCjService;
     private final DappMemberDao dappMemberDao;
     private final DappAchieveMapper dappAchieveMapper;
+    private final DappWalletService dappWalletService;
+    private final DappFundFlowDao dappFundFlowDao;
+    private final RedisUtils redisUtils;
 
     @Override
     public IPage<PlatformBanner> findPlatformBannerInPage(PlatformBanner platformBannerEntity,
@@ -150,4 +158,58 @@
         }
         return dappMemberEntityIPage;
     }
+
+    @Override
+    public FebsResponse zhiyaAdd(ZhiyaAddDto zhiyaAddDto) {
+        String address = zhiyaAddDto.getAddress();
+        String hash = zhiyaAddDto.getZyHash();
+        BigDecimal amount = new BigDecimal(zhiyaAddDto.getAmount()).setScale(2,BigDecimal.ROUND_DOWN);
+
+        DappMemberEntity dappMemberEntity = dappMemberDao.selectByAddress(address, null);
+        if(ObjectUtil.isEmpty(dappMemberEntity)){
+            throw new FebsException("地址不存在");
+        }
+        if(BigDecimal.ZERO.compareTo(amount) >= 0){
+            throw new FebsException("金额不正确");
+        }
+
+        QueryWrapper<DappFundFlowEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("from_hash",hash);
+        List<DappFundFlowEntity> dappFundFlowEntities = dappFundFlowDao.selectList(queryWrapper);
+        if(CollUtil.isNotEmpty(dappFundFlowEntities)){
+            throw new FebsException("HASH已经产生了质押记录");
+        }
+
+        DappFundFlowEntity fundFlow = new DappFundFlowEntity(
+                dappMemberEntity.getId(),
+                amount.negate(),
+                FlowTypeEnum.ZHI_YA.getValue(),
+                DappFundFlowEntity.WITHDRAW_STATUS_ING,
+                BigDecimal.ZERO,
+                null);
+        dappFundFlowDao.insert(fundFlow);
+
+        fundFlow.setFromHash(hash);
+        fundFlow.setStatus(DappFundFlowEntity.WITHDRAW_STATUS_AGREE);
+        fundFlow.setContent(FlowTypeEnum.ZHI_YA.getDescrition());
+        dappFundFlowDao.updateById(fundFlow);
+
+        //用户质押代币数量
+        Long memberId = fundFlow.getMemberId();
+        //新增一条用户质押记录
+        DappAchieve dappAchieve = new DappAchieve();
+        dappAchieve.setMemberId(memberId);
+        dappAchieve.setAmount(amount);
+        BigDecimal achieveReleasePercent = new BigDecimal("0.01").multiply(
+                new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_RELEASE.getValue())).setScale(2,BigDecimal.ROUND_DOWN)
+        );
+        dappAchieve.setAmountDay(achieveReleasePercent.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
+        BigDecimal achieveOut = new BigDecimal(redisUtils.getString(DataDicEnum.GFA_ACHIEVE_OUT.getValue())).setScale(2,BigDecimal.ROUND_DOWN);
+        dappAchieve.setAmountMax(achieveOut.multiply(amount).setScale(2,BigDecimal.ROUND_DOWN));
+        dappAchieve.setState(DappAchieve.STATUS_ING);
+        dappAchieve.setAmountDone(BigDecimal.ZERO);
+        dappAchieveMapper.insert(dappAchieve);
+        asyncCjService.insertTeamPerk(fundFlow.getId(), dappAchieve.getId());
+        return new FebsResponse().success();
+    }
 }
diff --git a/src/main/resources/templates/febs/views/modules/banner/inviteList.html b/src/main/resources/templates/febs/views/modules/banner/inviteList.html
index ff538b7..6cf4316 100644
--- a/src/main/resources/templates/febs/views/modules/banner/inviteList.html
+++ b/src/main/resources/templates/febs/views/modules/banner/inviteList.html
@@ -106,10 +106,10 @@
                 totalRow : true,
                 cols: [[
                 	{field: 'id', title: '', minWidth: 50,align:'left',totalRowText:"合计"},
-                	{field: 'address', title: '地址', minWidth: 400,align:'center'},
-                	{field: 'inviteId', title: '邀请码', minWidth: 50,align:'center'},
-                	{field: 'refererId', title: '上级邀请码', minWidth: 50,align:'center'},
-                	{field: 'refererAddress', title: '上级地址', minWidth: 400,align:'center'},
+                	{field: 'address', title: '地址', minWidth: 200,align:'center'},
+                	{field: 'inviteId', title: '邀请码', minWidth: 100,align:'center'},
+                	{field: 'refererId', title: '上级邀请码', minWidth: 100,align:'center'},
+                	{field: 'refererAddress', title: '上级地址', minWidth: 200,align:'center'},
                 	{field: 'zhiYaAmount', title: '个人业绩', minWidth: 50,align:'center', totalRow:true},
                 ]]
             });
diff --git a/src/main/resources/templates/febs/views/modules/banner/zhiyaAdd.html b/src/main/resources/templates/febs/views/modules/banner/zhiyaAdd.html
new file mode 100644
index 0000000..7561ced
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/banner/zhiyaAdd.html
@@ -0,0 +1,72 @@
+<div class="layui-fluid layui-anim febs-anim" id="zhiya-add" lay-title="质押恢复">
+    <div class="layui-row layui-col-space8 febs-container">
+        <form class="layui-form" action="" lay-filter="zhiya-add">
+            <div class="layui-card">
+                <div class="layui-card-body">
+                    <blockquote class="layui-elem-quote blue-border">恢复</blockquote>
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <div class="layui-col-lg6">
+                            <label class="layui-form-label febs-form-item-require">地址:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="address" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <div class="layui-col-lg6">
+                            <label class="layui-form-label febs-form-item-require">质押金额:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="amount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                    </div>
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <div class="layui-col-lg6">
+                            <label class="layui-form-label febs-form-item-require">质押HASH:</label>
+                            <div class="layui-input-block">
+                                <input type="text" name="zyHash" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-card-footer">
+                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="zhiya-add-form-submit" id="submit">保存</button>
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+<style>
+    .layui-form-label {
+        width: 120px;
+    }
+
+    .layui-form-item .layui-input-block {
+        margin-left: 150px;
+    }
+
+    .layui-table-form .layui-form-item {
+        margin-bottom: 20px !important;
+    }
+</style>
+<script data-th-inline="javascript" type="text/javascript">
+    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            coinSetVo = [[${coinSetVo}]],
+            validate = layui.validate,
+            $view = $('#zhiya-add');
+
+        form.render();
+
+        form.on('submit(zhiya-add-form-submit)', function (data) {
+            console.log(data);
+            febs.post(ctx + 'admin/banner/zhiyaAdd', data.field, function (res) {
+                febs.alert.success('操作成功');
+            });
+            return false;
+        });
+
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.9.1