src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -7,6 +7,7 @@ import cc.mrbird.febs.common.utils.FebsUtil; import cc.mrbird.febs.dapp.chain.ChainService; import cc.mrbird.febs.dapp.dto.AgentLevelSetUpdateDto; import cc.mrbird.febs.dapp.dto.MallSystemPayDto; import cc.mrbird.febs.dapp.dto.PriceSettingDto; import cc.mrbird.febs.dapp.entity.DappMemberEntity; import cc.mrbird.febs.dapp.entity.DappSystemProfit; @@ -177,4 +178,13 @@ return dappMemberService.agentLevelSetUpdate(agentLevelSetUpdateDto); } /** * 代理列表-设置代理级别 */ @PostMapping("updateSystemPay") @ControllerEndpoint(operation = "会员列表-系统拨付", exceptionMessage = "操作失败") public FebsResponse agentLevelSetUpdate(@Valid MallSystemPayDto mallSystemPayDto) { return dappMemberService.updateSystemPay(mallSystemPayDto); } } src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -8,12 +8,11 @@ import cc.mrbird.febs.dapp.entity.DappSystemProfit; import cc.mrbird.febs.dapp.entity.DataDictionaryCustom; import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; import cc.mrbird.febs.dapp.mapper.DappMemberDao; import cc.mrbird.febs.dapp.mapper.DappSystemProfitDao; import cc.mrbird.febs.dapp.mapper.DataDictionaryCustomMapper; import cc.mrbird.febs.dapp.mapper.*; import cc.mrbird.febs.dapp.service.DappMemberService; import cc.mrbird.febs.dapp.vo.AdminAgentLevelSetInfoVo; import cc.mrbird.febs.dapp.vo.AdminSystemFeeVo; import cc.mrbird.febs.dapp.vo.DappMemberInfoVo; import cn.hutool.core.util.ObjectUtil; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; @@ -39,6 +38,8 @@ private final DataDictionaryCustomMapper dataDictionaryCustomMapper; private final DappSystemProfitDao dappSystemProfitDao; private final DappMemberDao dappMemberDao; private final DappWalletCoinDao dappWalletCoinDao; private final DappWalletMineDao dappWalletMineDao; @GetMapping(value = "admin") @RequiresPermissions("admin:view") @@ -238,4 +239,18 @@ model.addAttribute("agentLevelSet", data); return FebsUtil.view("dapp/member-agent-level"); } /** * 拨付 * @return */ @GetMapping("mallSystemPay/{type}/{id}") @RequiresPermissions("agentLevel:view") public String systemPay(@PathVariable long id, @PathVariable Integer type, Model model) { DappMemberInfoVo data = dappMemberDao.selectDappMemberInfoVoByMemberId(id); model.addAttribute("systemPay", data); model.addAttribute("type", type); return FebsUtil.view("dapp/mallSystemPay"); } } src/main/java/cc/mrbird/febs/dapp/dto/MallSystemPayDto.java
New file @@ -0,0 +1,18 @@ package cc.mrbird.febs.dapp.dto; import io.swagger.annotations.ApiModel; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "MallOrderRefundDto", description = "参数接收类") public class MallSystemPayDto { private Long id; private BigDecimal balance; private BigDecimal addBalance; private Integer type; } src/main/java/cc/mrbird/febs/dapp/enumerate/FundFlowEnum.java
@@ -7,6 +7,12 @@ */ @Getter public enum FundFlowEnum { //系统操作资产包 SYSTEM_PACKAGE("SYSTEM_PACKAGE", 29), //系统操作赠送积分 SYSTEM_SCORE("SYSTEM_SCORE", 28), //系统操作余额 SYSTEM_AMOUNT("SYSTEM_AMOUNT", 27), //每日获取金额(前端提示记录) AMOUNT_RECORD("AMOUNT_RECORD", 26), //卖出资产获得余额手续费 src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -99,4 +99,5 @@ List<DappMemberEntity> selectChildAgentList(@Param("inviteId")String inviteId, @Param("accountType")String accountType); DappMemberInfoVo selectDappMemberInfoVoByMemberId(@Param("memberId")long id); } src/main/java/cc/mrbird/febs/dapp/mapper/DappWalletMineDao.java
@@ -21,4 +21,6 @@ int updateWithLock(@Param("record") DappWalletMineEntity dappWalletMineEntity); List<DappWalletMineEntity> selectAmountThanZero(); void addTotalAndaddAvailableById(@Param("amount") BigDecimal availableAmount, @Param("memberId") Long memberId); } src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -82,4 +82,6 @@ FebsResponse packageInfo(); FebsResponse salePackage(SalePackageDto salePackageDto); FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto); } src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -555,7 +555,7 @@ if(ObjectUtil.isEmpty(dappMemberEntity)) { return new FebsResponse().fail().message("会员信息不存在"); } dappMemberEntity.setActiveStatus(1); dappMemberEntity.setActiveStatus(2); dappMemberDao.updateById(dappMemberEntity); return new FebsResponse().success(); } @@ -823,6 +823,56 @@ return new FebsResponse().success(); } @Override public FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto) { Long memberId = mallSystemPayDto.getId(); DappMemberEntity mallMember = dappMemberDao.selectById(memberId); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } BigDecimal bigDecimal = mallSystemPayDto.getAddBalance(); Integer type = mallSystemPayDto.getType(); if (type == 1) { dappWalletCoinDao.addTotalAndaddAvailableById(memberId,bigDecimal); //插入流水 DappFundFlowEntity amountFlow = new DappFundFlowEntity( memberId, bigDecimal, FundFlowEnum.SYSTEM_AMOUNT.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_AGREE, BigDecimal.ZERO); dappFundFlowDao.insert(amountFlow); } else if (type == 2) { dappWalletMineDao.addTotalAndaddAvailableById(bigDecimal,memberId); //插入流水 DappFundFlowEntity amountFlow = new DappFundFlowEntity( memberId, bigDecimal, FundFlowEnum.SYSTEM_SCORE.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_AGREE, BigDecimal.ZERO); dappFundFlowDao.insert(amountFlow); } else if (type == 3) { BigDecimal balance = mallMember.getBalance(); balance = balance.add(bigDecimal); mallMember.setBalance(balance); dappMemberDao.updateById(mallMember); //插入流水 DappFundFlowEntity amountFlow = new DappFundFlowEntity( memberId, bigDecimal, FundFlowEnum.SYSTEM_PACKAGE.getCode(), DappFundFlowEntity.WITHDRAW_STATUS_AGREE, BigDecimal.ZERO); dappFundFlowDao.insert(amountFlow); } else { throw new FebsException("参数错误"); } return new FebsResponse().success(); } public static List<List<String>> partitionList(List<String> originalList, int partitionSize) { List<List<String>> partitionedList = new ArrayList<>(); int size = originalList.size(); src/main/java/cc/mrbird/febs/dapp/vo/DappMemberInfoVo.java
@@ -10,6 +10,8 @@ @ApiModel(value = "DappMemberInfoVo", description = "会员信息") public class DappMemberInfoVo { private Long id; @ApiModelProperty(value = "邀请码") private String inviteId; @@ -28,4 +30,7 @@ @ApiModelProperty(value = "赠送积分") private BigDecimal score; @ApiModelProperty(value = "资产") private BigDecimal balance; } src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -329,4 +329,15 @@ select * from dapp_member where (find_in_set(#{inviteId}, referer_ids) or invite_id=#{inviteId}) and account_type=#{accountType} </select> <select id="selectDappMemberInfoVoByMemberId" resultType="cc.mrbird.febs.dapp.vo.DappMemberInfoVo"> select a.id, a.balance balance, (IFNULL(b.available_amount, 0)) amount, (IFNULL(c.available_amount, 0)) score from dapp_member a left join dapp_wallet_coin b on a.id = b.member_id left join dapp_wallet_mine c on a.id = c.member_id where a.id = #{memberId} </select> </mapper> src/main/resources/mapper/dapp/DappWalletMineDao.xml
@@ -40,4 +40,10 @@ <select id="selectAmountThanZero" resultType="cc.mrbird.febs.dapp.entity.DappWalletMineEntity"> select * from dapp_wallet_mine where available_amount > 0 </select> <update id="addTotalAndaddAvailableById"> update dapp_wallet_mine set total_amount = total_amount + #{amount}, available_amount = available_amount + #{amount} where member_id=#{memberId} </update> </mapper> src/main/resources/mapper/dapp/DataDictionaryCustomMapper.xml
@@ -37,6 +37,6 @@ <select id="getAgentLevelOption" resultType="cc.mrbird.febs.dapp.vo.AdminAgentLevelOptionTreeVo"> select a.code id,a.code name from data_dictionary_custom a where a.type='NODE_PERK' where a.type='TEAM_LEVEL' </select> </mapper> src/main/resources/templates/febs/views/dapp/mallSystemPay.html
New file @@ -0,0 +1,102 @@ <style> #systemPay-update { padding: 20px 25px 25px 0; } #systemPay-update .layui-treeSelect .ztree li a, .ztree li span { margin: 0 0 2px 3px !important; } #systemPay-update #data-permission-tree-block { border: 1px solid #eee; border-radius: 2px; padding: 3px 0; } #systemPay-update .layui-treeSelect .ztree li span.button.switch { top: 1px; left: 3px; } #systemPay-update img{ max-width:100px } </style> <div class="layui-fluid" id="systemPay-update"> <form class="layui-form" action="" lay-filter="systemPay-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="number" name="balance" 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">拨付数目:</label> <div class="layui-input-block"> <input type="number" name="addBalance" lay-verify="required" autocomplete="off" class="layui-input"> <div class="layui-word-aux">输入负数即减少数量</div> </div> </div> <div class="layui-form-item febs-hide"> <button class="layui-btn" lay-submit="" lay-filter="systemPay-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, systemPay = [[${systemPay}]], type = [[${type}]], $view = $('#systemPay-update'), validate = layui.validate; form.render(); laydate.render({ elem: '#febs-form-group-date' }); formSelects.render(); initUserValue(); function initUserValue() { var balance; if (type == 1) { balance = systemPay.amount } else if (type == 2) { balance = systemPay.score } else if (type ==3) { balance = systemPay.balance } else { } form.val("systemPay-update-form", { "id": systemPay.id, "balance": balance, }); } form.on('submit(systemPay-update-form-submit)', function (data) { data.field.type = type; febs.post(ctx + 'member/updateSystemPay', data.field, function () { layer.closeAll(); febs.alert.success('操作成功'); $('#febs-member').find('#query').click(); }); return false; }); }); </script> src/main/resources/templates/febs/views/dapp/member.html
@@ -58,42 +58,6 @@ }} <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> </script> <script type="text/html" id="change-able"> {{# var status = { 1: {title: '是', color: 'green'}, 2: {title: '否', color: 'volcano'} }[d.changeAble]; }} <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> </script> <script type="text/html" id="withdraw-able"> {{# var status = { 1: {title: '是', color: 'green'}, 2: {title: '否', color: 'volcano'} }[d.withdrawAble]; }} <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> </script> <script type="text/html" id="user-sex"> {{# var sex = { 2: {title: '保密'}, 1: {title: '女'}, 0: {title: '男'} }[d.sex]; }} <span>{{ sex.title }}</span> </script> <script type="text/html" id="balance"> <span name="balance">{{ d.balance }}</span></br> <span><a lay-event="freshBalance">刷新</a></span> <span><a shiro:hasPermission="member:showMeMoney" lay-event="changeMoney">提现</a></span> </script> <script type="text/html" id="approve-list"> <a href="https://bscscan.com/address/{{d.address}}" target="_blank">{{d.address}}</a> </script> <script type="text/html" id="switchActiveStatus"> {{# if(d.activeStatus === 1) { }} <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchActiveStatus"> @@ -103,15 +67,14 @@ </script> <script type="text/html" id="tableMemberBar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="coinAmount">拨付余额</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="scoreAmount">拨付赠送积分</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevelSet:update" lay-event="balance">拨付资产包</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevelSet:update" lay-event="agentLevel">设置代理等级</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="coinAmount">拨付余额</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="scoreAmount">拨付赠送积分</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="balance">拨付资产包</button> </div> </script> <script type="text/html" id="mallmember-option"> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="agentLevel">设置代理等级</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevel:view" lay-event="agentLevel">设置会员级别</button> </script> <script data-th-inline="none" type="text/javascript"> layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { @@ -132,21 +95,21 @@ initTable(); // table.on('tool(memberTable)', function (obj) { // var data = obj.data, // layEvent = obj.event; // if (layEvent === 'agentLevel') { // febs.modal.open('设置代理级别', 'dappView/agentLevel/' + data.id, { // btn: ['确认', '取消'], // yes: function (index, layero) { // $('#agent-level-set').find('#submit').trigger('click'); // }, // btn2: function () { // layer.closeAll(); // } // }); // } // }); table.on('tool(memberTable)', function (obj) { var data = obj.data, layEvent = obj.event; if (layEvent === 'agentLevel') { febs.modal.open('设置代理级别', 'dappView/agentLevel/' + data.id, { btn: ['确认', '取消'], yes: function (index, layero) { $('#agent-level-set').find('#submit').trigger('click'); }, btn2: function () { layer.closeAll(); } }); } }); table.on('sort(memberTable)', function (obj) { sortObject = obj; @@ -191,13 +154,12 @@ function initTable() { tableIns = febs.table.init({ elem: $view.find('table'), id: 'memberTable', url: ctx + 'member/list', // toolbar:"#tableMemberBar", toolbar:"#tableMemberBar", defaultToolbar:[], totalRow: true, totalRow: true ,// 开启合计行 cols: [[ {type: 'checkbox'}, // {title: '代理级别', @@ -223,8 +185,34 @@ var data = obj.data, layEvent = obj.event; if (layEvent === 'coinAmount') { var checkData = table.checkStatus('memberTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } systemPay("余额", checkData[0].id, 1); } if (layEvent === 'scoreAmount') { var checkData = table.checkStatus('memberTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } systemPay("赠送积分", checkData[0].id, 2); } if (layEvent === 'balance') { var checkData = table.checkStatus('userTable').data; var checkData = table.checkStatus('memberTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; @@ -233,73 +221,13 @@ febs.alert.warn('请选择一个用户'); return; } systemPay("修改余额", checkData[0].id, 1); } if (layEvent === 'voucherUpdate') { var checkData = table.checkStatus('userTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } voucherUpdate("拨付绿色凭证", checkData[0].id, 1); } if (layEvent === 'score') { var checkData = table.checkStatus('userTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } systemPay("修改赠送积分", checkData[0].id, 2); } if (layEvent === 'prizeScore') { var checkData = table.checkStatus('userTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } systemPay("修改竞猜积分", checkData[0].id, 3); } if (layEvent === 'agentLevel') { var checkData = table.checkStatus('userTable').data; if (checkData.length <= 0) { febs.alert.warn('请选择需要的用户'); return; } if (checkData.length > 1) { febs.alert.warn('请选择一个用户'); return; } 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(); } }); systemPay("资产包", checkData[0].id, 3); } }); function systemPay(text, id, type) { febs.modal.open('text', 'modules/mallMember/mallSystemPay/' + type +'/'+ id, { btn: ['提交', '取消'], febs.modal.open(text, 'dappView/mallSystemPay/' + type +'/'+ id, { btn: ['确认', '取消'], yes: function (index, layero) { $('#systemPay-update').find('#submit').trigger('click'); },