Helius
2022-06-11 ec97abaae5a0d93e9b4d5f3f82de7b97f2b586b0
fix some problem and add update referer and add member
2 files added
19 files modified
618 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java 18 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 102 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java 1 ●●●● patch | view | raw | blame | history
src/main/resources/application.yml 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 5 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/addMember.html 74 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html 2 ●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/agentList.html 9 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 155 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html 16 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html 52 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html 93 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/profitSetting.html 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -10,6 +10,7 @@
import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.entity.MallShopApply;
import cc.mrbird.febs.mall.service.IAdminMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -29,6 +30,7 @@
public class AdminMallMemberController extends BaseController {
    private final IAdminMallMemberService mallMemberService;
    private final IApiMallMemberService apiMallMemberService;
    /**
     * 平台账单
@@ -296,6 +298,13 @@
        return mallMemberService.resetPwd(id);
    }
    @PostMapping(value = "resetPwdNew/{type}/{ids}")
    @ControllerEndpoint(operation = "重置密码", exceptionMessage = "重置密码失败")
    public FebsResponse resetPwd(@PathVariable("ids") String ids, @PathVariable("type") Integer type) {
        mallMemberService.resetPwd(ids, type);
        return new FebsResponse().success().message("重置成功");
    }
    @GetMapping("shopApplyList")
    @ControllerEndpoint(operation = "申请通道列表", exceptionMessage = "获取失败")
    public FebsResponse shopApplyList(MallShopApply mallShopApply, QueryRequest request) {
@@ -314,4 +323,23 @@
        return new FebsResponse().success().message("操作成功");
    }
    @PostMapping("/refererIdUpdate")
    @ControllerEndpoint(operation = "修改推荐人", exceptionMessage = "修改失败")
    public FebsResponse refererIdUpdate(MallMember member) {
        mallMemberService.modifyReferer(member);
        return new FebsResponse().success();
    }
    @PostMapping("/memberAdd")
    public FebsResponse memberAdd(MallMember member) {
        RegisterDto registerDto = new RegisterDto();
        registerDto.setAccount(member.getAccount());
        registerDto.setRegistType("admin");
        registerDto.setPassword("a123456");
        registerDto.setInviteId(member.getInviteId());
        registerDto.setName(member.getName());
        apiMallMemberService.register(registerDto);
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -68,11 +68,12 @@
     * @param model
     * @return
     */
    @GetMapping("mallSystemPay/{id}")
    @GetMapping("mallSystemPay/{type}/{id}")
    @RequiresPermissions("mallSystemPay:update")
    public String systemPay(@PathVariable long id, Model model) {
    public String systemPay(@PathVariable long id, @PathVariable Integer type, Model model) {
        MallMemberVo data = mallMemberService.getMallMemberInfoById(id);
        model.addAttribute("systemPay", data);
        model.addAttribute("type", type);
        return FebsUtil.view("modules/mallMember/mallSystemPay");
    }
@@ -253,6 +254,19 @@
        return FebsUtil.view("modules/mallMember/shopApplyInfo");
    }
    @GetMapping("updateReferer/{id}")
    public String updateReferer(@PathVariable("id") Long id, Model model) {
        MallMember member = mallMemberService.getById(id);
        model.addAttribute("referer", mallMemberService.findByInviteId(member.getReferrerId()));
        model.addAttribute("id", id);
        return FebsUtil.view("modules/mallMember/updateRefererId");
    }
    @GetMapping("addMember")
    public String addMember() {
        return FebsUtil.view("modules/mallMember/addMember");
    }
src/main/java/cc/mrbird/febs/mall/dto/MallSystemPayDto.java
@@ -13,4 +13,6 @@
    private BigDecimal balance;
    private BigDecimal addBalance;
    private Integer type;
}
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
@@ -37,4 +37,7 @@
    @ApiModelProperty(value = "邀请码")
    private String inviteId;
    @ApiModelProperty(hidden = true)
    private String registType;
}
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -108,6 +108,10 @@
    @TableField(exist = false)
    private BigDecimal balance;
    @TableField(exist = false)
    private BigDecimal score;
    @TableField(exist = false)
    private BigDecimal prizeScore;
    @TableField(exist = false)
    private BigDecimal amount;
@@ -115,4 +119,7 @@
    @TableField(exist = false)
    private String query;
    @TableField(exist = false)
    private String levelName;
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -74,6 +74,9 @@
    FebsResponse resetPwd(Long id);
    void resetPwd(String ids, Integer type);
    IPage<MallDataVo> getMallDataList(MallMember mallMember, QueryRequest request);
    IPage<MallShopApply> findShopApplyListInPage(MallShopApply mallShopApply, QueryRequest request);
@@ -84,4 +87,8 @@
    void applyCheckDisAgree(Long id);
    FebsResponse updateMemberInfo(MallUpdateMemberInfoDto mallUpdateMemberInfoDto);
    MallMember findByInviteId(String inviteId);
    void modifyReferer(MallMember member);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -326,11 +326,20 @@
            return new FebsResponse().fail().message("拨付数目需要大于0");
        }
        MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
        mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(bigDecimal));
        mallMemberWalletMapper.updateBalanceWithId(mallMemberWallet);
        Integer type = mallSystemPayDto.getType();
        String filedType = "";
        if (type == 1) {
            filedType = "balance";
        } else if (type == 2) {
            filedType = "score";
        } else if (type == 3) {
            filedType = "prizeScore";
        } else {
            throw new FebsException("参数错误");
        }
        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, FlowTypeEnum.BALANCE.getValue());
        iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type);
        return new FebsResponse().success();
    }
@@ -363,6 +372,32 @@
        mallMember.setPassword(pwd);
        this.baseMapper.updateById(mallMember);
        return new FebsResponse().success().message("重置成功");
    }
    @Override
    public void resetPwd(String ids, Integer type) {
        if (StrUtil.isEmpty(ids)) {
            throw new FebsException("参数错误");
        }
        List<String> idList = StrUtil.split(ids, ',');
        for (String s : idList) {
            Long id = Long.parseLong(s);
            MallMember member = new MallMember();
            member.setId(id);
            member.setCreatedTime(null);
            // 重置交易密码
            if (type == 1) {
                String payPwd = SecureUtil.md5("654321");
                member.setTradePassword(payPwd);
                // 重置登录密码
            } else {
                String pwd = SecureUtil.md5("a123456");
                member.setPassword(pwd);
            }
            this.baseMapper.updateById(member);
        }
    }
    @Override
@@ -458,4 +493,63 @@
        mallMemberWalletMapper.updateById(mallMemberWallet);
        return new FebsResponse().success();
    }
    @Override
    public MallMember findByInviteId(String inviteId) {
        return this.baseMapper.selectInfoByInviteId(inviteId);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void modifyReferer(MallMember member) {
        MallMember referer = this.baseMapper.selectInfoByInviteId(member.getReferrerId());
        if (referer == null) {
            throw new FebsException("推荐人不存在");
        }
        String refererId = member.getReferrerId();
        member = this.baseMapper.selectById(member.getId());
        String beforeReferer = member.getReferrerId();
        member.setReferrerId(refererId);
        String refererIds = refererIds(refererId);
        member.setReferrerIds(refererIds);
        this.baseMapper.updateById(member);
        List<MallMember> childs = this.baseMapper.selectByRefererId(member.getInviteId());
        if (CollUtil.isEmpty(childs)) {
            return;
        }
        for (MallMember child : childs) {
            child.setReferrerIds(member.getInviteId() + "," + refererIds);
            this.baseMapper.updateById(child);
        }
    }
    private String refererIds(String parentId) {
        boolean flag = false;
        if (StrUtil.isBlank(parentId)) {
            flag = true;
        }
        String ids = "";
        while (!flag) {
            if (StrUtil.isBlank(ids)) {
                ids += parentId;
            } else {
                ids += ("," + parentId);
            }
            MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId);
            if (parentMember == null) {
                break;
            }
            parentId = parentMember.getReferrerId();
            if (StrUtil.isBlank(parentMember.getReferrerId())) {
                flag = true;
            }
        }
        return ids;
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -80,10 +80,12 @@
        }
        String account = registerDto.getAccount();
        String code = registerDto.getCode();
        boolean flags = commonService.verifyCode(account, code);
        if(!flags) {
            throw new FebsException("验证码错误");
        if (!"admin".equals(registerDto.getRegistType())) {
            String code = registerDto.getCode();
            boolean flags = commonService.verifyCode(account, code);
            if (!flags) {
                throw new FebsException("验证码错误");
            }
        }
        mallMember = new MallMember();
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -243,15 +243,20 @@
                if (CollUtil.isNotEmpty(orderItems)) {
                    for (MallOrderItem orderItem : orderItems) {
                        MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
                        BigDecimal score;
                        MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
                        if (mallGoods.getIsNormal() == 2) {
                            hasTc = true;
                            MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
                            BigDecimal score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti());
                            score = sku.getPresentPrice().multiply(mallGoods.getStaticMulti());
                            memberWalletService.add(score, member.getId(), "score");
                            mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
                            // 普通商品1:1 返还积分
                        } else {
                            score = sku.getPresentPrice();
                        }
                        memberWalletService.add(score, member.getId(), "score");
                        mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
                    }
                }
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -308,17 +308,19 @@
                continue;
            }
            BigDecimal preProfit = income.multiply(prop).divide(BigDecimal.valueOf(children.size()), 2, RoundingMode.HALF_DOWN);
            int reduce = walletService.reduce(preProfit.negate(), mallMember.getId(), "commission");
            BigDecimal reduceProfit = income.multiply(prop);
            int reduce = walletService.reduce(reduceProfit.negate(), mallMember.getId(), "commission");
            if (reduce == 2) {
                continue;
            }
            moneyFlowService.addMoneyFlow(mallMember.getId(), income.negate(), MoneyFlowTypeEnum.THANKFUL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
            moneyFlowService.addMoneyFlow(mallMember.getId(), reduceProfit.negate(), MoneyFlowTypeEnum.THANKFUL.getValue(), null, FlowTypeEnum.COMMISSION.getValue());
            for (MallMember child : children) {
                BigDecimal preProfit = income.multiply(prop).divide(BigDecimal.valueOf(children.size()), 2, RoundingMode.HALF_DOWN);
                if (preProfit.compareTo(BigDecimal.ZERO) < 1) {
                    continue;
                }
                int reduce1 = walletService.reduce(preProfit.negate(), child.getId(), "score");
                if (reduce1 == 2) {
                    continue;
src/main/java/cc/mrbird/febs/mall/vo/AdminMallMoneyFlowVo.java
@@ -17,6 +17,7 @@
    private BigDecimal amount;
    private Integer type;
    private Integer flowType;
    private String orderNo;
src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
  port: 8080
  port: 8083
  tomcat:
    uri-encoding: utf-8
src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -3,9 +3,12 @@
<mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberMapper">
    <select id="selectMallMemberListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember">
        SELECT m.*,a.name referrerName,IFNULL(c.balance,0) balance  FROM mall_member m
        SELECT m.*,a.name referrerName,IFNULL(c.balance,0) balance,IFNULL(c.score,0) score,IFNULL(c.prize_score,0) prizeScore
        ,d.description levelName
        FROM mall_member m
        left join mall_member a on m.referrer_id = a.invite_id
        LEFT JOIN mall_member_wallet c on c.member_id = m.id
        LEFT JOIN data_dictionary_custom d on d.code = m.level and type='AGENT_LEVEL'
        <where>
            <if test="record != null" >
                <if test="record.name!=null and record.name!=''">
src/main/resources/templates/febs/views/modules/mallMember/addMember.html
New file
@@ -0,0 +1,74 @@
<style>
    #member-add {
        padding: 20px 25px 25px 0;
    }
    #member-add .layui-treeSelect .ztree li a, .ztree li span {
        margin: 0 0 2px 3px !important;
    }
    #member-add #data-permission-tree-block {
        border: 1px solid #eee;
        border-radius: 2px;
        padding: 3px 0;
    }
    #member-add .layui-treeSelect .ztree li span.button.switch {
        top: 1px;
        left: 3px;
    }
    #member-add img{
        max-width:100px
    }
</style>
<div class="layui-fluid" id="member-add">
    <form class="layui-form" action="" lay-filter="member-add-form">
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">账号:</label>
            <div class="layui-input-block">
                <input type="text" name="account" lay-verify="required|phone" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">姓名:</label>
            <div class="layui-input-block">
                <input type="text" name="name" lay-verify="required" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">推荐人:</label>
            <div class="layui-input-block">
                <input type="text" name="inviteId" lay-verify="required" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item febs-hide">
            <button class="layui-btn" lay-submit="" lay-filter="member-add-form-submit" id="submit"></button>
        </div>
    </form>
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            formSelects = layui.formSelects,
            treeSelect = layui.treeSelect,
            form = layui.form,
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            $view = $('#member-add'),
            validate = layui.validate;
        form.render();
        formSelects.render();
        form.on('submit(member-add-form-submit)', function (data) {
            febs.post(ctx + 'admin/mallMember/memberAdd', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-member-list').find('#reset').click();
            });
            return false;
        });
    });
</script>
src/main/resources/templates/febs/views/modules/mallMember/agentLevelSet.html
@@ -83,7 +83,7 @@
            febs.post(ctx + 'admin/mallMember/agentLevelSetUpdate', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-user-agent').find('#reset').click();
                $('#febs-member-list').find('#reset').click();
            });
            return false;
        });
src/main/resources/templates/febs/views/modules/mallMember/agentList.html
@@ -139,14 +139,7 @@
                    {field: 'amount', title: '团队业绩', minWidth: 100,align:'left'},
                    {title: '操作',
                        templet: function (d) {
                            if (d.level === 'ZERO_LEVEL'){
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="activate" shiro:hasPermission="user:update">激活</button>'
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentLevelSet" shiro:hasPermission="user:update">设置代理等级</button>'
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
                            }else{
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentLevelSet" shiro:hasPermission="user:update">设置代理等级</button>'
                                    + '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
                            }
                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agentAllMember" shiro:hasPermission="user:update">全部成员</button>'
                        },minWidth: 300,align:'center'}
                ]]
            });
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -1,4 +1,4 @@
<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="会员列表">
<div class="layui-fluid layui-anim febs-anim" id="febs-member-list" lay-title="会员列表">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
@@ -65,6 +65,17 @@
        background-color: #5FB878 !important;
    }
</style>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="registMember">添加会员</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="balance">拨付余额</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="score">拨付赠送积分</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="prizeScore">拨付竞猜积分</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPwd">重置登录密码</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPayPwd">重置支付密码</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="agentLevel">设置代理等级</button>
    </div>
</script>
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
    // 引入组件并初始化
@@ -73,7 +84,7 @@
            febs = layui.febs,
            form = layui.form,
            table = layui.table,
            $view = $('#febs-user'),
            $view = $('#febs-member-list'),
            $query = $view.find('#query'),
            $reset = $view.find('#reset'),
            $searchForm = $view.find('form'),
@@ -101,12 +112,6 @@
                });
            }
            if (layEvent === 'reset') {
                febs.modal.confirm('重置密码', '是否重置该账号密码?', function () {
                    resetPwd(data.id);
                });
            }
            if (layEvent === 'see') {
                febs.modal.open( '个人信息', 'modules/mallMember/detail/' + data.id, {
                    btn: ['提交', '取消'],
@@ -123,17 +128,19 @@
                    maxmin: true,
                });
            }
            if (layEvent === 'systemPay') {
                febs.modal.open('系统拨付', 'modules/mallMember/mallSystemPay/' + data.id, {
            if (layEvent == 'updateReferer') {
                febs.modal.open( '修改推荐人', 'modules/mallMember/updateReferer/' + data.id, {
                    btn: ['提交', '取消'],
                    yes: function (index, layero) {
                        $('#systemPay-update').find('#submit').trigger('click');
                        $('#referer-update').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
                    }
                });
            }
        });
        function closeAccount(id) {
            febs.get(ctx + 'admin/mallMember/closeAccount/' + id, null, function () {
@@ -148,8 +155,8 @@
            });
        }
        function resetPwd(id) {
            febs.post(ctx + 'admin/mallMember/resetPwd/' + id, null, function () {
        function resetPwd(id, type) {
            febs.post(ctx + 'admin/mallMember/resetPwdNew/' + type + "/"+ id, null, function () {
                febs.alert.success('重置成功');
                $query.click();
            });
@@ -174,15 +181,19 @@
                elem: $view.find('table'),
                id: 'userTable',
                url: ctx + 'admin/mallMember/getMallMemberList',
                toolbar:"#toolbar",
                defaultToolbar:[],
                cols: [[
                    {type: 'checkbox'},
                    {field: 'phone', title: '账号', minWidth: 150,align:'left'},
                    {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
                    // {field: 'email', title: '邮箱', minWidth: 150,align:'left'},
                    {field: 'name', title: '名称', minWidth: 100,align:'left'},
                    {field: 'balance', title: '余额', minWidth: 100,align:'left'},
                    {field: 'score', title: '赠送积分', minWidth: 100,align:'left'},
                    {field: 'prizeScore', title: '竞猜积分', minWidth: 100,align:'left'},
                    {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
                    // {field: 'referrerId', title: '推荐人邀请码', minWidth: 100,align:'left'},
                    {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'},
                    {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'},
                    {field: 'accountType', title: '账号类型',
                        templet: function (d) {
                            if (d.accountType === 2) {
@@ -192,30 +203,110 @@
                            }else{
                                return ''
                            }
                        }, minWidth: 80,align:'center'},
                    {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 80,align:'center'},
                        }, minWidth: 100,align:'center'},
                    {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 100,align:'center'},
                    {field: 'createdTime', title: '注册时间', minWidth: 180,align:'center'},
                    {title: '操作',
                        templet: function (d) {
                            if (d.accountStatus === 1) {
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>'
                                        // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="close" shiro:hasPermission="user:update">禁用</button>'
                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="reset" shiro:hasPermission="user:update">重置密码</button>'
                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="systemPay" shiro:hasPermission="user:update">余额拨付</button>'
                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
                            }else{
                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>'
                                        // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="open" shiro:hasPermission="user:update">启用</button>'
                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="reset" shiro:hasPermission="user:update">重置密码</button>'
                                        +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
                            }
                        },minWidth: 300,align:'center'}
                        // '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>'
                            return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="user:update">资金流水</button>'
                             + '<button class="layui-btn layui-btn-normal layui-btn-xs" type="button" lay-event="updateReferer">修改推荐人</button>'
                        },minWidth: 200,align:'center', fixed:"right"}
                ]]
            });
        }
        table.on('toolbar(userTable)', function(obj){
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'registMember') {
                febs.modal.open( '添加会员', 'modules/mallMember/addMember', {
                    btn: ['提交', '取消'],
                    yes: function (index, layero) {
                        $('#member-add').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
                    }
                });
                return;
            }
            var checkData = table.checkStatus('userTable').data;
            if (checkData.length <= 0) {
                febs.alert.warn('请选择需要的用户');
                return;
            }
            if (layEvent === 'resetPwd') {
                febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码?', function () {
                    var ids = [];
                    layui.each(checkData, function (key, item) {
                        ids.push(item.id)
                    });
                    resetPwd(ids.join(','), 2);
                });
            }
            if (layEvent === 'resetPayPwd') {
                febs.modal.confirm('重置交易密码', '是否重置选中账号交易密码?', function () {
                    var ids = [];
                    layui.each(checkData, function (key, item) {
                        ids.push(item.id)
                    });
                    resetPwd(ids.join(','), 1);
                });
            }
            if (layEvent === 'balance') {
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改余额", checkData[0].id, 1);
            }
            if (layEvent === 'score') {
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改赠送积分", checkData[0].id, 2);
            }
            if (layEvent === 'prizeScore') {
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改竞猜积分", checkData[0].id, 3);
            }
            if (layEvent === 'agentLevel') {
                febs.modal.open('设置代理级别', 'modules/mallMember/agentLevelSet/' + checkData[0].id, {
                    btn: ['确认', '取消'],
                    yes: function (index, layero) {
                        $('#agent-level-set').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
                    }
                });
            }
        });
        function systemPay(text, id, type) {
            febs.modal.open('text', 'modules/mallMember/mallSystemPay/' + type +'/'+ id, {
                btn: ['提交', '取消'],
                yes: function (index, layero) {
                    $('#systemPay-update').find('#submit').trigger('click');
                },
                btn2: function () {
                    layer.closeAll();
                }
            });
        }
        // 获取查询参数
        function getQueryParams() {
            return {
src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html
@@ -57,6 +57,7 @@
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            systemPay = [[${systemPay}]],
            type = [[${type}]],
            $view = $('#systemPay-update'),
            validate = layui.validate;
@@ -71,17 +72,28 @@
        initUserValue();
        function initUserValue() {
            var balance;
            if (type == 1) {
                balance = systemPay.balance
            } else if (type == 2) {
                balance = systemPay.score
            } else if (type ==3) {
                balance = systemPay.prizeScore
            } else {
            }
            form.val("systemPay-update-form", {
                "id": systemPay.id,
                "balance": systemPay.balance,
                "balance": balance,
            });
        }
        form.on('submit(systemPay-update-form-submit)', function (data) {
            data.field.type = type;
            febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-newInfo').find('#reset').click();
                $('#febs-member-list').find('#reset').click();
            });
            return false;
        });
src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html
@@ -43,35 +43,61 @@
                id: 'moneyFlowChild',
                url: ctx + 'admin/mallMember/moneyFlow?parentId=1',
                cols: [[
                    {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'},
                    {field: 'amount', title: '金额', minWidth: 80,align:'center'},
                    {field: 'type', title: '流水类型',
                        templet: function (d) {
                            if (d.type === 1) {
                                return '<span>直推奖励</span>'
                                return '<span>静态收益</span>'
                            } else if (d.type === 2) {
                                return '<span>团队奖励</span>'
                                return '<span>动态收益</span>'
                            } else if (d.type === 3) {
                                return '<span>订单支付</span>'
                                return '<span>代理收益</span>'
                            } else if (d.type === 4) {
                                return '<span>退款</span>'
                                return '<span>排名收益</span>'
                            }else if (d.type === 5) {
                                return '<span>转账</span>'
                                return '<span>董事收益</span>'
                            }else if (d.type === 6) {
                                return '<span>提现</span>'
                                return '<span>社区店补</span>'
                            }else if (d.type === 7) {
                                return '<span>排名奖励</span>'
                                return '<span>推荐人收益</span>'
                            }else if (d.type === 8) {
                                return '<span>利润分红</span>'
                                return '<span>提现</span>'
                            }else if (d.type === 9) {
                                return '<span>转账</span>'
                            }else if (d.type === 10) {
                                return '<span>支付</span>'
                            }else if (d.type === 11) {
                                return '<span>退款</span>'
                            }else if (d.type === 12) {
                                return '<span>佣金转竞猜积分</span>'
                            }else if (d.type === 13) {
                                return '<span>佣金转余额</span>'
                            }else if (d.type === 14) {
                                return '<span>竞猜积分签到</span>'
                            }else if (d.type === 15) {
                                return '<span>感恩奖</span>'
                            }else if (d.type === 16) {
                                return '<span>系统拨付</span>'
                            }else{
                                return ''
                            }
                        }, minWidth: 80,align:'center'},
                    {field: 'amount', title: '金额', minWidth: 80,align:'center'},
                    {field: 'createdTime', title: '时间', minWidth: 150,align:'left'},
                    {field: 'description', title: '描述', minWidth: 150,align:'left'},
                    {field: 'remark', title: '备注', minWidth: 150,align:'left'},
                    {field: 'flowType', title: '资金类型',
                        templet: function (d) {
                            if (d.flowType === 1) {
                                return '余额';
                            } else if(d.flowType === 2) {
                                return '赠送积分'
                            } else if(d.flowType === 3) {
                                return '竞猜积分'
                            } else if(d.flowType === 4) {
                                return '佣金'
                            } else {
                                return '-';
                            }
                        }, minWidth: 80,align:'center'},
                    {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'},
                    {field: 'createdTime', title: '时间', minWidth: 150,align:'left'}
                ]]
            });
        }
src/main/resources/templates/febs/views/modules/mallMember/updateRefererId.html
New file
@@ -0,0 +1,93 @@
<style>
    #referer-update {
        padding: 20px 25px 25px 0;
    }
    #referer-update .layui-treeSelect .ztree li a, .ztree li span {
        margin: 0 0 2px 3px !important;
    }
    #referer-update #data-permission-tree-block {
        border: 1px solid #eee;
        border-radius: 2px;
        padding: 3px 0;
    }
    #referer-update .layui-treeSelect .ztree li span.button.switch {
        top: 1px;
        left: 3px;
    }
    #referer-update img{
        max-width:100px
    }
</style>
<div class="layui-fluid" id="referer-update">
    <form class="layui-form" action="" lay-filter="referer-update-form">
        <div class="layui-form-item febs-hide">
            <label class="layui-form-label febs-form-item-require">id:</label>
            <div class="layui-input-block">
                <input type="text" name="id">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">推荐人姓名:</label>
            <div class="layui-input-block">
                <input type="text" name="name" lay-verify="required" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">推荐人ID:</label>
            <div class="layui-input-block">
                <input type="text" name="inviteId" lay-verify="required" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">修改推荐人ID:</label>
            <div class="layui-input-block">
                <input type="text" name="referrerId" lay-verify="required" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item febs-hide">
            <button class="layui-btn" lay-submit="" lay-filter="referer-update-form-submit" id="submit"></button>
        </div>
    </form>
</div>
<script data-th-inline="javascript">
    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree', 'laydate'], function () {
        var $ = layui.$,
            febs = layui.febs,
            layer = layui.layer,
            formSelects = layui.formSelects,
            treeSelect = layui.treeSelect,
            form = layui.form,
            laydate = layui.laydate,
            eleTree = layui.eleTree,
            referer = [[${referer}]],
            id = [[${id}]],
            $view = $('#referer-update'),
            validate = layui.validate;
        form.render();
        formSelects.render();
        initUserValue();
        function initUserValue() {
            form.val("referer-update-form", {
                "id": id,
                "name": referer.name,
                "inviteId": referer.inviteId,
            });
        }
        form.on('submit(referer-update-form-submit)', function (data) {
            febs.post(ctx + 'admin/mallMember/refererIdUpdate', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-member-list').find('#reset').click();
            });
            return false;
        });
    });
</script>
src/main/resources/templates/febs/views/modules/system/profitSetting.html
@@ -99,6 +99,7 @@
                ,{field: 'prop', title: '返利比例(%)', edit:'text'}
                ,{field: 'achieve', title: '团队业绩(万元)', edit:'text'}
                ,{field: 'direct', title: '直推(个)', edit:'text'}
                ,{field: 'lastAgentCnt', title: '上一级代理(个)', edit:'text'}
                ,{field: 'type', title: '比例', edit:'text', hide:'true'}
                ,{field: 'code', title: '比例', edit:'text', hide:'true'}
            ]]
@@ -115,6 +116,7 @@
                    valueData.teamIncome = data.achieve;
                    valueData.profitProp = data.prop;
                    valueData.directCnt = data.direct;
                    valueData.lastAgentCnt = data.lastAgentCnt;
                    agentBonusArr[i].value = JSON.stringify(valueData);
                }
            }
@@ -189,6 +191,7 @@
                            data[i].prop = JSON.parse(data[i].value).profitProp;
                            data[i].achieve = JSON.parse(data[i].value).teamIncome;
                            data[i].direct = JSON.parse(data[i].value).directCnt;
                            data[i].lastAgentCnt = JSON.parse(data[i].value).lastAgentCnt;
                        }
                        agentBonusArr = data;
                        table.reload('agentBonus', {