6 files modified
2 files added
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.dapp.chain.ChainService; |
| | | import cc.mrbird.febs.dapp.dto.PriceSettingDto; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.HashMap; |
| | |
| | | public FebsResponse transferList(DappTransferRecordEntity transfer, QueryRequest request) { |
| | | return new FebsResponse().success().data(getDataTable(dappMemberService.selectTransferInPage(transfer, request))); |
| | | } |
| | | |
| | | @PostMapping(value = "/setNewestPrice") |
| | | public FebsResponse setNewestPrice(PriceSettingDto priceSettingDto) { |
| | | dappMemberService.setNewestPrice(priceSettingDto); |
| | | return new FebsResponse().success(); |
| | | } |
| | | } |
| | |
| | | package cc.mrbird.febs.dapp.controller; |
| | | |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.entity.FebsConstant; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | @RequestMapping(FebsConstant.VIEW_PREFIX + "dappView") |
| | | @RequiredArgsConstructor |
| | | public class ViewController { |
| | | |
| | | private final RedisUtils redisUtils; |
| | | |
| | | @GetMapping(value = "admin") |
| | | @RequiresPermissions("admin:view") |
| | |
| | | return FebsUtil.view("dapp/agent-return"); |
| | | } |
| | | |
| | | |
| | | @GetMapping(value ="priceSetting") |
| | | @RequiresPermissions("price:setting:view") |
| | | public String priceSetting(Model model) { |
| | | BigDecimal price = (BigDecimal) redisUtils.get(AppContants.REDIS_KEY_ETH_NEW_PRICE); |
| | | model.addAttribute("newestPrice", price); |
| | | return FebsUtil.view("dapp/newest-price-setting"); |
| | | } |
| | | } |
New file |
| | |
| | | package cc.mrbird.febs.dapp.dto; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @author wzy |
| | | * @date 2022-05-13 |
| | | **/ |
| | | @Data |
| | | public class PriceSettingDto { |
| | | |
| | | private BigDecimal newestPrice; |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.dapp.dto.ApproveDto; |
| | | import cc.mrbird.febs.dapp.dto.PriceSettingDto; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.Map; |
| | | |
| | | public interface DappMemberService extends IService<DappMemberEntity> { |
| | | |
| | |
| | | void transfer(String address, String chain); |
| | | |
| | | IPage<DappTransferRecordEntity> selectTransferInPage(DappTransferRecordEntity transfer, QueryRequest request); |
| | | |
| | | void setNewestPrice(PriceSettingDto priceSettingDto); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.common.utils.ShareCodeUtil; |
| | | import cc.mrbird.febs.dapp.chain.ChainService; |
| | | import cc.mrbird.febs.dapp.chain.ContractChainService; |
| | | import cc.mrbird.febs.dapp.dto.ApproveDto; |
| | | import cc.mrbird.febs.dapp.dto.PriceSettingDto; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity; |
| | | import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity; |
| | |
| | | import cc.mrbird.febs.dapp.mapper.DappWalletMineDao; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | | import cc.mrbird.febs.system.entity.User; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | private final DappWalletCoinDao dappWalletCoinDao; |
| | | private final DappWalletMineDao dappWalletMineDao; |
| | | private final DappTransferRecordDao dappTransferRecordDao; |
| | | private final RedisUtils redisUtils; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | Page<DappTransferRecordEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return dappTransferRecordDao.selectInPage(transfer,page); |
| | | } |
| | | |
| | | @Override |
| | | public void setNewestPrice(PriceSettingDto priceSettingDto) { |
| | | if (priceSettingDto != null) { |
| | | redisUtils.set(AppContants.REDIS_KEY_ETH_NEW_PRICE, priceSettingDto.getNewestPrice()); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | @PostConstruct |
| | | public void initNewPriceUpdate() { |
| | | log.info("#最新价更新启动#"); |
| | | redisUtils.set(AppContants.REDIS_KEY_CHANGE_FEE, 30); |
| | | SubscriptionOptions subscriptionOptions = new SubscriptionOptions(); |
| | | subscriptionOptions.setConnectionDelayOnFailure(5); |
| | | subscriptionOptions.setUri("wss://api.hadax.com/ws"); |
| | | SubscriptionClient subscriptionClient = SubscriptionClient.create("", "", subscriptionOptions); |
| | | subscriptionClient.subscribeTradeEvent("ethusdt", tradeEvent -> { |
| | | redisUtils.set(AppContants.REDIS_KEY_ETH_NEW_PRICE, tradeEvent.getTradeList().get(0).getPrice()); |
| | | }); |
| | | // log.info("#最新价更新启动#"); |
| | | // redisUtils.set(AppContants.REDIS_KEY_CHANGE_FEE, 30); |
| | | // SubscriptionOptions subscriptionOptions = new SubscriptionOptions(); |
| | | // subscriptionOptions.setConnectionDelayOnFailure(5); |
| | | // subscriptionOptions.setUri("wss://api.hadax.com/ws"); |
| | | // SubscriptionClient subscriptionClient = SubscriptionClient.create("", "", subscriptionOptions); |
| | | // subscriptionClient.subscribeTradeEvent("ethusdt", tradeEvent -> { |
| | | // redisUtils.set(AppContants.REDIS_KEY_ETH_NEW_PRICE, tradeEvent.getTradeList().get(0).getPrice()); |
| | | // }); |
| | | } |
| | | } |
| | |
| | | url: ctx + 'wallet/walletMine', |
| | | cols: [[ |
| | | {field: 'address', title: '地址', minWidth: 130}, |
| | | {field: 'availableAmount', title: '剩余产量(ETH)', minWidth: 130}, |
| | | {field: 'totalAmount', title: '总产量(ETH)', minWidth: 180} |
| | | {field: 'availableAmount', title: '剩余产量(LAB)', minWidth: 130}, |
| | | {field: 'totalAmount', title: '总产量(LAB)', minWidth: 180} |
| | | ]] |
| | | }); |
| | | } |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="newest-price-setting" lay-title="签到积分设置"> |
| | | <div class="layui-row layui-col-space8 febs-container"> |
| | | <form class="layui-form" action="" lay-filter="newest-price-setting-form"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label ">LAB最新价:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="newestPrice" th:value="${newestPrice}" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-card-footer"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="newest-price-setting-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, |
| | | validate = layui.validate, |
| | | $view = $('#newest-price-setting'); |
| | | |
| | | form.verify(validate); |
| | | form.render(); |
| | | |
| | | form.on('submit(newest-price-setting-form-submit)', function (data) { |
| | | febs.post(ctx + 'member/setNewestPrice', data.field, function (res) { |
| | | febs.alert.success('设置成功'); |
| | | }); |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |