xiaoyong931011
2022-11-08 a64d6284082665f9a27add91edc0f7dc7e31afb7
20221021
10 files modified
3 files added
313 ■■■■ changed files
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java 30 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/entity/DappWalletCoinEntity.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/vo/AdminSystemFeeVo.java 15 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappMemberDao.xml 19 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/dapp/DappTransferRecordDao.xml 4 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/member.html 73 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/money-change-flow.html 20 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/dapp/system-fee-set.html 88 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -8,6 +8,7 @@
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
@@ -82,4 +83,10 @@
        dappMemberService.setNewestPrice(priceSettingDto);
        return new FebsResponse().success();
    }
    @PostMapping(value = "/setSystemFee")
    public FebsResponse setSystemFee(AdminSystemFeeVo adminSystemFeeVo) {
        dappMemberService.setSystemFee(adminSystemFeeVo);
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -4,7 +4,12 @@
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.entity.DataDictionaryCustom;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
@@ -25,6 +30,7 @@
public class ViewController {
    private final RedisUtils redisUtils;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @GetMapping(value = "admin")
    @RequiresPermissions("admin:view")
@@ -115,4 +121,28 @@
        model.addAttribute("newestPrice", price);
        return FebsUtil.view("dapp/newest-price-setting");
    }
    //费率设置
    @GetMapping(value ="systemFeeSet")
    @RequiresPermissions("fee:setting:view")
    public String systemFeeSet(Model model) {
        AdminSystemFeeVo adminSystemFeeVo = new AdminSystemFeeVo();
        DataDictionaryCustom rebateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.REBATE_PERCENT.getType(), DataDictionaryEnum.REBATE_PERCENT.getCode());
        if(ObjectUtil.isNotEmpty(rebateDic)){
            String value = rebateDic.getValue() == null ? "0":rebateDic.getValue();
            adminSystemFeeVo.setRebatePercent(value);
        }
        DataDictionaryCustom memberFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MEMBER_FEE.getType(), DataDictionaryEnum.MEMBER_FEE.getCode());
        if(ObjectUtil.isNotEmpty(memberFeeDic)){
            String value = memberFeeDic.getValue() == null ? "0":memberFeeDic.getValue();
            adminSystemFeeVo.setMemberFee(value);
        }
        DataDictionaryCustom serviceFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getType(), DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getCode());
        if(ObjectUtil.isNotEmpty(serviceFeeDic)){
            String value = serviceFeeDic.getValue() == null ? "0":serviceFeeDic.getValue();
            adminSystemFeeVo.setServiceFee(value);
        }
        model.addAttribute("systemFee", adminSystemFeeVo);
        return FebsUtil.view("dapp/system-fee-set");
    }
}
src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
@@ -83,4 +83,13 @@
     * 出局次数
     */
    private Integer outCnt;
    @TableField(exist = false)
    private BigDecimal totalAmount;
    @TableField(exist = false)
    private BigDecimal frozenAmount;
    @TableField(exist = false)
    private BigDecimal availableAmount;
}
src/main/java/cc/mrbird/febs/dapp/entity/DappWalletCoinEntity.java
@@ -29,5 +29,7 @@
    /**
     * 盲盒数量
     */
    @TableField(exist = false)
    private Integer boxCnt;
}
src/main/java/cc/mrbird/febs/dapp/enumerate/DataDictionaryEnum.java
New file
@@ -0,0 +1,22 @@
package cc.mrbird.febs.dapp.enumerate;
import lombok.Getter;
@Getter
public enum DataDictionaryEnum {
    //每日返利的产矿百分比
    REBATE_PERCENT("SYSTEM_SETTING","REBATE_PERCENT"),
    //分给推荐三人的终身VIP会员手续费
    MEMBER_FEE("SYSTEM_SETTING","MEMBER_FEE"),
    //提现手续费
    WITHDRAW_SERVICE_FEE("SYSTEM_SETTING", "WITHDRAW_SERVICE_FEE");
    private String type;
    private String code;
    DataDictionaryEnum(String type, String code) {
        this.type = type;
        this.code = code;
    }
}
src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.dapp.dto.TeamListDto;
import cc.mrbird.febs.dapp.entity.DappMemberEntity;
import cc.mrbird.febs.dapp.entity.DappTransferRecordEntity;
import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
import cc.mrbird.febs.dapp.vo.TeamListVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -43,4 +44,6 @@
    DappMemberEntity insertMember(String address, String refererId, String chainType, String accountType);
    TeamListVo findTeamList();
    void setSystemFee(AdminSystemFeeVo adminSystemFeeVo);
}
src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -16,8 +16,10 @@
import cc.mrbird.febs.dapp.dto.PriceSettingDto;
import cc.mrbird.febs.dapp.dto.TeamListDto;
import cc.mrbird.febs.dapp.entity.*;
import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum;
import cc.mrbird.febs.dapp.mapper.*;
import cc.mrbird.febs.dapp.service.DappMemberService;
import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo;
import cc.mrbird.febs.dapp.vo.TeamListVo;
import cc.mrbird.febs.system.entity.User;
import cn.hutool.core.collection.CollUtil;
@@ -51,6 +53,7 @@
    private final RedisUtils redisUtils;
    private final DappAchieveMemberTreeDao dappAchieveMemberTreeDao;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -345,6 +348,24 @@
        return buildTeamMatrix(topNode);
    }
    @Override
    public void setSystemFee(AdminSystemFeeVo adminSystemFeeVo) {
        String rebatePercent = adminSystemFeeVo.getRebatePercent();
        DataDictionaryCustom rebateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.REBATE_PERCENT.getType(), DataDictionaryEnum.REBATE_PERCENT.getCode());
        rebateDic.setValue(rebatePercent);
        dataDictionaryCustomMapper.updateById(rebateDic);
        String serviceFee = adminSystemFeeVo.getServiceFee();
        DataDictionaryCustom serviceFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getType(), DataDictionaryEnum.WITHDRAW_SERVICE_FEE.getCode());
        serviceFeeDic.setValue(serviceFee);
        dataDictionaryCustomMapper.updateById(serviceFeeDic);
        String memberFee = adminSystemFeeVo.getMemberFee();
        DataDictionaryCustom memberFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MEMBER_FEE.getType(), DataDictionaryEnum.MEMBER_FEE.getCode());
        memberFeeDic.setValue(memberFee);
        dataDictionaryCustomMapper.updateById(memberFeeDic);
    }
    public TeamListVo buildTeamMatrix(DappAchieveMemberTreeEntity node) {
        List<DappAchieveMemberTreeEntity> childNodes = dappAchieveMemberTreeDao.selectMatrixChildNode(node.getTopNode(), node.getTreeNode());
src/main/java/cc/mrbird/febs/dapp/vo/AdminSystemFeeVo.java
New file
@@ -0,0 +1,15 @@
package cc.mrbird.febs.dapp.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value = "AdminSystemFeeVo", description = "系统设置费率")
public class AdminSystemFeeVo {
    private String rebatePercent;
    private String memberFee;
    private String serviceFee;
}
src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -14,25 +14,30 @@
    </select>
    <select id="selectInPage" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
        select * from dapp_member
        select a.*,
               b.total_amount totalAmount,
               b.frozen_amount frozenAmount,
               b.available_amount availableAmount
        from dapp_member a
        inner join dapp_wallet_coin b on a.id = b.member_id
        <where>
            <if test="record.currentUser != null">
                and referer_id = (select invite_id from dapp_user_member_relate where user_id=#{record.currentUser})
                and a.referer_id = (select invite_id from dapp_user_member_relate where user_id=#{record.currentUser})
            </if>
            <if test="record.accountStatus != null">
                and account_status = #{record.accountStatus}
                and a.account_status = #{record.accountStatus}
            </if>
            <if test="record.changeAble != null">
                and change_able = #{record.changeAble}
                and a.change_able = #{record.changeAble}
            </if>
            <if test="record.withdrawAble != null">
                and withdraw_able = #{record.withdrawAble}
                and a.withdraw_able = #{record.withdrawAble}
            </if>
            <if test="record.inviteId != null and record.inviteId != ''">
                and invite_id = #{record.inviteId}
                and a.invite_id = #{record.inviteId}
            </if>
        </where>
        order by create_time desc
        order by a.create_time desc
    </select>
    <select id="selectAllMemberForInCome" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
src/main/resources/mapper/dapp/DappTransferRecordDao.xml
@@ -5,8 +5,8 @@
    <select id="selectInPage" resultType="cc.mrbird.febs.dapp.entity.DappTransferRecordEntity">
        select * from dapp_transfer_record
        <where>
            <if test="record.address != '' and record.address != null">
                and address=#{record.address}
            <if test="record.fromAddress != '' and record.fromAddress != null">
                and address=#{record.fromAddress}
            </if>
        </where>
        order by create_time desc
src/main/resources/templates/febs/views/dapp/member.html
@@ -23,16 +23,16 @@
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">可兑换</label>
                                        <div class="layui-input-inline">
                                            <select name="changeAble">
                                                <option value=""></option>
                                                <option value="2">否</option>
                                                <option value="1">是</option>
                                            </select>
                                        </div>
                                    </div>
<!--                                    <div class="layui-inline">-->
<!--                                        <label class="layui-form-label layui-form-label-sm">可兑换</label>-->
<!--                                        <div class="layui-input-inline">-->
<!--                                            <select name="changeAble">-->
<!--                                                <option value=""></option>-->
<!--                                                <option value="2">否</option>-->
<!--                                                <option value="1">是</option>-->
<!--                                            </select>-->
<!--                                        </div>-->
<!--                                    </div>-->
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">可提现</label>
                                        <div class="layui-input-inline">
@@ -137,9 +137,9 @@
    <span shiro:lacksPermission="member:accountStatus,member:changeAble,member:withdrawAble">
        <span class="layui-badge-dot febs-bg-orange"></span> 无权限
    </span>
    <a lay-event="accountStatus" shiro:hasPermission="member:accountStatus" title="设置用户状态">{{accountStatus.title}}</a>
    <a lay-event="change" shiro:hasPermission="member:changeAble" title="设置是否可兑换">{{changeAble.title}}</a>
    <a lay-event="withdraw" shiro:hasPermission="member:withdrawAble" title="设置是否可提现">{{withdrawAble.title}}</a>
    <button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="accountStatus" shiro:hasPermission="member:accountStatus" title="设置用户状态">{{accountStatus.title}}</button>
<!--    <button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="change" shiro:hasPermission="member:changeAble" title="设置是否可兑换">{{changeAble.title}}</button>-->
    <button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="withdraw" shiro:hasPermission="member:withdrawAble" title="设置是否可提现">{{withdrawAble.title}}</button>
</script>
<script data-th-inline="none" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
@@ -183,15 +183,15 @@
                });
            }
            if (layEvent === 'change') {
                var text = "是否将该用户设置为可兑换?";
                if (data.accountStatus === 1) {
                    text = "是否将该用户设置为不可兑换?"
                }
                febs.modal.confirm('设置兑换状态', text, function () {
                    changeStatus("member/changeAble/" + data.id);
                });
            }
            // if (layEvent === 'change') {
            //     var text = "是否将该用户设置为可兑换?";
            //     if (data.accountStatus === 1) {
            //         text = "是否将该用户设置为不可兑换?"
            //     }
            //     febs.modal.confirm('设置兑换状态', text, function () {
            //         changeStatus("member/changeAble/" + data.id);
            //     });
            // }
            if (layEvent === 'changeMoney') {
                febs.modal.confirm('提现', "是否提现该用户?", function () {
@@ -246,19 +246,22 @@
                id: 'memberTable',
                url: ctx + 'member/list',
                cols: [[
                    {type: 'checkbox'},
                    {type: 'numbers'},
                    {field: 'address', title: '地址', minWidth: 130},
                    {title: '余额(USDT)', templet: '#balance', minWidth: 120},
                    {title: '授权列表', templet: '#approve-list', minWidth: 110},
                    // {type: 'checkbox'},
                    // {type: 'numbers'},
                    {field: 'address', title: '地址', minWidth: 400},
                    // {title: '余额(USDT)', templet: '#balance', minWidth: 120},
                    // {title: '授权列表', templet: '#approve-list', minWidth: 110},
                    {field: 'chainType', title: '所属链', minWidth: 130},
                    {field: 'inviteId', title: '邀请码', minWidth: 130},
                    {field: 'refererId', title: '上级邀请码', minWidth: 130},
                    {title: '账户状态', templet: '#user-status', minWidth: 120},
                    {title: '是否可兑换', templet: '#change-able', minWidth: 130},
                    {title: '是否可提现', templet: '#withdraw-able', minWidth: 130},
                    {field: 'totalAmount', title: '总金额', minWidth: 80},
                    {field: 'availableAmount', title: '可用金额', minWidth: 80},
                    {field: 'frozenAmount', title: '冻结金额', minWidth: 80},
                    {field: 'inviteId', title: '邀请码', minWidth: 100},
                    {field: 'refererId', title: '上级邀请码', minWidth: 100},
                    {title: '账户状态', templet: '#user-status', minWidth: 100},
                    // {title: '是否可兑换', templet: '#change-able', minWidth: 100},
                    {title: '是否可提现', templet: '#withdraw-able', minWidth: 100},
                    {field: 'createTime', title: '创建时间', minWidth: 180},
                    {title: '操作', toolbar: '#member-option', minWidth: 200}
                    {title: '操作', toolbar: '#member-option', minWidth: 300}
                ]]
            });
        }
@@ -266,9 +269,9 @@
        function getQueryParams() {
            return {
                inviteId: $searchForm.find('input[name="inviteId"]').val().trim(),
                changeAble: $searchForm.find("select[name='changeAble']").val(),
                // changeAble: $searchForm.find("select[name='changeAble']").val(),
                accountStatus: $searchForm.find("select[name='accountStatus']").val(),
                withdrawAble: $searchForm.find("input[name='withdrawAble']").val(),
                withdrawAble: $searchForm.find("select[name='withdrawAble']").val(),
                invalidate_ie_cache: new Date()
            };
        }
src/main/resources/templates/febs/views/dapp/money-change-flow.html
@@ -24,16 +24,16 @@
                                            </select>
                                        </div>
                                    </div>
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">可兑换</label>
                                        <div class="layui-input-inline">
                                            <select name="changeAble">
                                                <option value=""></option>
                                                <option value="2">否</option>
                                                <option value="1">是</option>
                                            </select>
                                        </div>
                                    </div>
<!--                                    <div class="layui-inline">-->
<!--                                        <label class="layui-form-label layui-form-label-sm">可兑换</label>-->
<!--                                        <div class="layui-input-inline">-->
<!--                                            <select name="changeAble">-->
<!--                                                <option value=""></option>-->
<!--                                                <option value="2">否</option>-->
<!--                                                <option value="1">是</option>-->
<!--                                            </select>-->
<!--                                        </div>-->
<!--                                    </div>-->
                                    <div class="layui-inline">
                                        <label class="layui-form-label layui-form-label-sm">可提现</label>
                                        <div class="layui-input-inline">
src/main/resources/templates/febs/views/dapp/system-fee-set.html
New file
@@ -0,0 +1,88 @@
<div class="layui-fluid layui-anim febs-anim" id="system-fee-set" lay-title="费率设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="system-fee-set-form">
            <div class="layui-card">
                <div class="layui-card-body">
                    <div class="layui-form-item">
                        <label class="layui-form-label ">每日返利的产矿百分比:</label>
                        <div class="layui-input-block">
                            <input type="text" name="rebatePercent" data-th-id="${systemFee.rebatePercent}"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">分给推荐三人的终身VIP会员手续费:</label>
                        <div class="layui-input-block">
                            <input type="text" name="memberFee" data-th-id="${systemFee.memberFee}"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">提现手续费:</label>
                        <div class="layui-input-block">
                            <input type="text" name="serviceFee" data-th-id="${systemFee.serviceFee}"
                                   autocomplete="off" class="layui-input" >
                        </div>
<!--                        <div class="layui-word-aux" style="margin-left: 150px;">-->
<!--                            【填写整数】每日订单金额的百分之几,增加到积分池:直接输入百分比,例如25%,直接输入25-->
<!--                        </div>-->
                    </div>
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="system-fee-set-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,
            systemFee = [[${systemFee}]],
            $view = $('#system-fee-set');
        form.verify(validate);
        initSystemFeeValue();
        form.render();
        function initSystemFeeValue() {
            form.val("system-fee-set-form", {
                "rebatePercent": systemFee.rebatePercent,
                "memberFee": systemFee.memberFee,
                "serviceFee": systemFee.serviceFee
            });
        }
        form.on('submit(system-fee-set-form-submit)', function (data) {
            febs.post(ctx + 'member/setSystemFee', data.field, function (res) {
                febs.alert.success('设置成功');
            });
            return false;
        });
    });
</script>