10 files modified
1 files added
| | |
| | | import cc.mrbird.febs.common.utils.RedisUtils; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.dapp.service.DappSystemService; |
| | |
| | | private final ChainProducer chainProducer; |
| | | |
| | | /** |
| | | * 邀请---列表 |
| | | */ |
| | | @GetMapping("inviteList") |
| | | public FebsResponse inviteList(DappMemberEntity dappMemberEntity, QueryRequest request) { |
| | | Map<String, Object> data = getDataTable(iAdminBannerService.inviteList(dappMemberEntity, request)); |
| | | return new FebsResponse().success().data(data); |
| | | } |
| | | |
| | | /** |
| | | * 价格---列表 |
| | | */ |
| | | @GetMapping("coinPrice") |
| | |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | |
| | | |
| | | |
| | | /** |
| | | * 邀请---列表 |
| | | */ |
| | | @GetMapping("inviteList") |
| | | @RequiresPermissions("inviteList:view") |
| | | public String inviteList() { |
| | | return FebsUtil.view("modules/banner/inviteList"); |
| | | } |
| | | |
| | | |
| | | public static long zhiyaID; |
| | | @GetMapping("zhiYaItem/{id}") |
| | | @RequiresPermissions("zhiYaItem:update") |
| | |
| | | private String accountType; |
| | | |
| | | private BigDecimal usdtBalance; |
| | | @TableField(exist = false) |
| | | private BigDecimal zhiYaAmount; |
| | | |
| | | /** |
| | | * 激活状态 1-已激活 2-未激活 |
| | | */ |
| | |
| | | * 1-是 2-否 |
| | | */ |
| | | private Integer makerType; |
| | | |
| | | @TableField(exist = false) |
| | | private String refererAddress; |
| | | @TableField(exist = false) |
| | | private BigDecimal zhiYaAmount; |
| | | } |
| | |
| | | void updateUsdtBalanceWithVersion(@Param("record")DappMemberEntity dappMemberEntity); |
| | | |
| | | void updateBalanceAndUsdtBalanceWithVersion(@Param("record")DappMemberEntity dappMemberEntity); |
| | | |
| | | IPage<DappMemberEntity> findInviteListInPage(Page<DappMemberEntity> page, @Param("record")DappMemberEntity dappMemberEntity); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.DappMemberEntity; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | |
| | | FebsResponse coinPriceAdd(String price); |
| | | |
| | | IPage<DappHdRecord> findHdRecordInPage(DappHdRecord dappHdRecord, QueryRequest request); |
| | | |
| | | IPage<DappMemberEntity> inviteList(DappMemberEntity dappMemberEntity, QueryRequest request); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.DataDicEnum; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.dapp.entity.DappCoinPrice; |
| | | import cc.mrbird.febs.dapp.entity.DappHdRecord; |
| | | import cc.mrbird.febs.dapp.entity.DataDictionaryCustom; |
| | | import cc.mrbird.febs.dapp.entity.PlatformBanner; |
| | | import cc.mrbird.febs.dapp.mapper.DappCoinPriceMapper; |
| | | import cc.mrbird.febs.dapp.mapper.DappHdRecordMapper; |
| | | import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; |
| | | import cc.mrbird.febs.dapp.mapper.PlatformBannerMapper; |
| | | 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.IAdminBannerService; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | |
| | | import javax.validation.Valid; |
| | | import javax.validation.constraints.NotNull; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | private final DappHdRecordMapper dappHdRecordMapper; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final AsyncCjService asyncCjService; |
| | | private final DappMemberDao dappMemberDao; |
| | | private final DappAchieveMapper dappAchieveMapper; |
| | | |
| | | @Override |
| | | public IPage<PlatformBanner> findPlatformBannerInPage(PlatformBanner platformBannerEntity, |
| | |
| | | IPage<DappHdRecord> dappHdRecordIPage = dappHdRecordMapper.findHdRecordInPage(page, dappHdRecord); |
| | | return dappHdRecordIPage; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<DappMemberEntity> inviteList(DappMemberEntity dappMemberEntity, QueryRequest request) { |
| | | Page<DappMemberEntity> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<DappMemberEntity> dappMemberEntityIPage = dappMemberDao.findInviteListInPage(page, dappMemberEntity); |
| | | List<DappMemberEntity> records = dappMemberEntityIPage.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(DappMemberEntity memberEntity : records){ |
| | | DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(memberEntity.getRefererId()); |
| | | if(ObjectUtil.isNotEmpty(refererMember)){ |
| | | memberEntity.setRefererAddress(refererMember.getAddress()); |
| | | } |
| | | QueryWrapper<DappAchieve> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("member_id",memberEntity.getId()); |
| | | objectQueryWrapper.eq("state",1); |
| | | List<DappAchieve> dappAchieves = dappAchieveMapper.selectList(objectQueryWrapper); |
| | | if(CollUtil.isNotEmpty(dappAchieves)){ |
| | | BigDecimal teamAchieveMemberSum = dappAchieves.stream().map(DappAchieve::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); |
| | | memberEntity.setZhiYaAmount(teamAchieveMemberSum); |
| | | } |
| | | } |
| | | } |
| | | return dappMemberEntityIPage; |
| | | } |
| | | } |
| | |
| | | } |
| | | flowType = FlowTypeEnum.DAI_BI_OUT.getValue(); |
| | | flowDes = FlowTypeEnum.DAI_BI_OUT.getDescrition(); |
| | | |
| | | dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | dappMemberDao.updateBalanceWithVersion(dappMemberEntity); |
| | | }else{ |
| | | if(new BigDecimal("100").compareTo(amount) > 0){ |
| | | throw new FebsException("最小数量为100"); |
| | |
| | | } |
| | | flowType = FlowTypeEnum.USDT_OUT.getValue(); |
| | | flowDes = FlowTypeEnum.USDT_OUT.getDescrition(); |
| | | |
| | | dappMemberEntity.setUsdtBalance(usdtBalance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | dappMemberDao.updateUsdtBalanceWithVersion(dappMemberEntity); |
| | | } |
| | | |
| | | DappFundFlowEntity fundFlowTuiJian = new DappFundFlowEntity( |
| | |
| | | dappMemberEntity.getAddress()); |
| | | dappFundFlowDao.insert(fundFlowTuiJian); |
| | | |
| | | dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | dappMemberEntity.setUsdtBalance(usdtBalance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | dappMemberDao.updateBalanceAndUsdtBalanceWithVersion(dappMemberEntity); |
| | | // dappMemberEntity.setBalance(balance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | // dappMemberEntity.setUsdtBalance(usdtBalance.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN)); |
| | | // dappMemberDao.updateBalanceAndUsdtBalanceWithVersion(dappMemberEntity); |
| | | |
| | | return new FebsResponse().success(); |
| | | } |
| | |
| | | balance = #{record.balance} |
| | | where id=#{record.id} and version=#{record.version} |
| | | </update> |
| | | |
| | | <select id="findInviteListInPage" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity"> |
| | | SELECT |
| | | a.* |
| | | FROM |
| | | dapp_member a |
| | | <where> |
| | | <if test="record.inviteId != null and record.inviteId != ''"> |
| | | and find_in_set(#{record.inviteId}, a.referer_ids) |
| | | </if> |
| | | <if test="record.address != null and record.address != ''"> |
| | | and a.address = #{record.address} |
| | | </if> |
| | | </where> |
| | | order by a.CREATE_TIME desc |
| | | </select> |
| | | </mapper> |
| | |
| | | elem: $view.find('table'), |
| | | id: 'zhiYaTable', |
| | | url: ctx + 'flow/dappAchieve', |
| | | totalRow : true, |
| | | cols: [[ |
| | | {field: 'address', title: '用户地址', minWidth: 400,align:'center'}, |
| | | {field: 'address', title: '用户地址', minWidth: 400,align:'center',totalRowText:"合计"}, |
| | | {templet: '#beState', title: '状态', minWidth: 180,align:'center'}, |
| | | {field: 'amount', title: '质押数量', minWidth: 100,align:'center'}, |
| | | {field: 'amount', title: '质押数量', minWidth: 100,align:'center', totalRow:true}, |
| | | // {field: 'amountDone', title: '累计产出', minWidth: 100,align:'center'}, |
| | | {field: 'amountMax', title: '出局数量', minWidth: 100,align:'center'}, |
| | | {field: 'amountDay', title: '每日产出', minWidth: 100,align:'center'}, |
| | | {field: 'amountMax', title: '出局数量', minWidth: 100,align:'center', totalRow:true}, |
| | | {field: 'amountDay', title: '每日产出', minWidth: 100,align:'center', totalRow:true}, |
| | | {field: 'createTime', title: '质押时间', minWidth: 300,align:'center'}, |
| | | {title: '操作', minWidth: 200 ,toolbar: '#zhiya-option',align:'center'} |
| | | ]] |
| | |
| | | elem: $view.find('table'), |
| | | id: 'memberTable', |
| | | url: ctx + 'member/list', |
| | | totalRow : true, |
| | | cols: [[ |
| | | {type: 'numbers'}, |
| | | {type: 'numbers',totalRowText:"合计"}, |
| | | // {field: 'address', title: '地址', minWidth: 400}, |
| | | |
| | | {title: '地址', templet: '#approve-list', minWidth: 400}, |
| | | {field: 'inviteId', title: '邀请码', minWidth: 130}, |
| | | {field: 'usdtBalance', title: '账户收益(USDT)', minWidth: 130}, |
| | | {field: 'balance', title: '账户收益(GFA)', minWidth: 130}, |
| | | {field: 'zhiYaAmount', title: 'dapp质押总额', minWidth: 130}, |
| | | {field: 'usdtBalance', title: '账户收益(USDT)', minWidth: 130, totalRow:true}, |
| | | {field: 'balance', title: '账户收益(GFA)', minWidth: 130, totalRow:true}, |
| | | {field: 'zhiYaAmount', title: 'dapp质押总额', minWidth: 130, totalRow:true}, |
| | | {field: 'createTime', title: '创建时间', minWidth: 180}, |
| | | ]] |
| | | }); |
| New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-invite" lay-title="团队业绩"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body febs-table-full"> |
| | | <form class="layui-form layui-table-form" lay-filter="invite-table-form"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md10"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label layui-form-label-sm">地址</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="address" autocomplete="off" placeholder="查询地址" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label layui-form-label-sm">邀请码</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="inviteId" autocomplete="off" placeholder="查询邀请码下的团队" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> |
| | | <i class="layui-icon"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <table lay-filter="inviteTable" lay-data="{id: 'inviteTable'}"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 表格操作栏 start --> |
| | | <script type="text/html" id="user-option"> |
| | | <a lay-event="edit">编辑 |
| | | <i class="layui-icon febs-edit-area febs-blue"></i> |
| | | </a> |
| | | <a lay-event="delete">删除 |
| | | <i class="layui-icon febs-edit-area febs-blue"></i> |
| | | </a> |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | | layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs'], function () { |
| | | var $ = layui.jquery, |
| | | laydate = layui.laydate, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | | table = layui.table, |
| | | dropdown = layui.dropdown, |
| | | $view = $('#febs-invite'), |
| | | $query = $view.find('#query'), |
| | | $reset = $view.find('#reset'), |
| | | $searchForm = $view.find('form'), |
| | | sortObject = {field: 'spread', type: null}, |
| | | tableIns |
| | | ; |
| | | |
| | | form.render(); |
| | | |
| | | // 表格初始化 |
| | | initTable(); |
| | | |
| | | // 初始化表格操作栏各个按钮功能 |
| | | table.on('tool(inviteTable)', function (obj) { |
| | | var data = obj.data, |
| | | layEvent = obj.event; |
| | | |
| | | }); |
| | | |
| | | $query.on('click', function () { |
| | | var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); |
| | | tableIns.reload({where: params, page: {curr: 1}}); |
| | | }); |
| | | |
| | | // 刷新按钮 |
| | | $reset.on('click', function () { |
| | | $searchForm[0].reset(); |
| | | sortObject.type = 'null'; |
| | | tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); |
| | | }); |
| | | |
| | | // 获取查询参数 |
| | | function getQueryParams() { |
| | | return { |
| | | inviteId: $searchForm.find('input[name="inviteId"]').val().trim(), |
| | | address: $searchForm.find('input[name="address"]').val().trim(), |
| | | invalidate_ie_cache: new Date() |
| | | }; |
| | | } |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'inviteTable', |
| | | url: ctx + 'admin/banner/inviteList', |
| | | 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: 'zhiYaAmount', title: '个人业绩', minWidth: 50,align:'center', totalRow:true}, |
| | | ]] |
| | | }); |
| | | } |
| | | }) |
| | | </script> |