2 files added
14 files modified
| | |
| | | /** |
| | | * 利润分红 |
| | | */ |
| | | PARENT_BONUS(8); |
| | | PARENT_BONUS(8), |
| | | /** |
| | | * 系统拨付 |
| | | */ |
| | | SYSTEM_PAY(9); |
| | | |
| | | private final int value; |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 会员列表-系统拨付 |
| | | */ |
| | | @PostMapping("updateSystemPay") |
| | | @ControllerEndpoint(operation = "会员列表-系统拨付", exceptionMessage = "操作失败") |
| | | public FebsResponse updateSystemPay(@Valid MallSystemPayDto mallSystemPayDto) { |
| | | return mallMemberService.updateSystemPay(mallSystemPayDto); |
| | | } |
| | | |
| | | /** |
| | | * 资金流水-列表 |
| | | * @param moneyFlowListDto |
| | | * @param request |
| | |
| | | } |
| | | |
| | | /** |
| | | * 会员列表-系统拨付 |
| | | * @param id |
| | | * @param model |
| | | * @return |
| | | */ |
| | | @GetMapping("mallSystemPay/{id}") |
| | | @RequiresPermissions("mallSystemPay:update") |
| | | public String systemPay(@PathVariable long id, Model model) { |
| | | MallMemberVo data = mallMemberService.getMallMemberInfoById(id); |
| | | model.addAttribute("systemPay", data); |
| | | return FebsUtil.view("modules/mallMember/mallSystemPay"); |
| | | } |
| | | |
| | | /** |
| | | * 会员列表-资金流水 |
| | | * @param id |
| | | * @param model |
New file |
| | |
| | | package cc.mrbird.febs.mall.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; |
| | | } |
| | |
| | | IPage<AppVersion> getAppVersionListInPage(Page<AppVersion> page, AppVersion appVersion); |
| | | |
| | | List<MallMember> selectByIdAndNoLevel(@Param("refererId") String refererId, @Param("level") String level); |
| | | |
| | | List<MallMember> selectMallMemberByInviteIdAndLevel(@Param("inviteId")String inviteId, @Param("level")String level); |
| | | } |
| | |
| | | MallMemberWallet selectWalletByMemberId(@Param("memberId") Long memberId); |
| | | |
| | | int updateBalanceWithVersion(@Param("record") MallMemberWallet wallet); |
| | | |
| | | void updateBalanceWithId(@Param("record")MallMemberWallet mallMemberWallet); |
| | | } |
| | |
| | | FebsResponse delNewsInfo(Long id); |
| | | |
| | | FebsResponse updateNewsInfo(MallNewsInfoDto mallNewsInfoDto); |
| | | |
| | | FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.entity.MallNewsInfo; |
| | |
| | | public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService { |
| | | |
| | | private final MallMemberMapper mallMemberMapper; |
| | | |
| | | private final MallMemberWalletMapper mallMemberWalletMapper; |
| | | |
| | | private final MallMoneyFlowMapper mallMoneyFlowMapper; |
| | | |
| | |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto) { |
| | | Long memberId = mallSystemPayDto.getId(); |
| | | MallMember mallMember = mallMemberMapper.selectById(memberId); |
| | | if(ObjectUtil.isEmpty(mallMember)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); |
| | | } |
| | | |
| | | BigDecimal bigDecimal = mallSystemPayDto.getAddBalance(); |
| | | if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){ |
| | | return new FebsResponse().fail().message("拨付数目需要大于0"); |
| | | } |
| | | |
| | | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(bigDecimal)); |
| | | mallMemberWalletMapper.updateBalanceWithId(mallMemberWallet); |
| | | |
| | | // MallMoneyFlow flow = new MallMoneyFlow(); |
| | | // flow.setMemberId(memberId); |
| | | // flow.setAmount(bigDecimal); |
| | | // flow.setType(MoneyFlowTypeEnum.SYSTEM_PAY.getValue()); |
| | | // flow.setOrderNo(orderNo); |
| | | // flow.setDescription(description); |
| | | // flow.setRemark(remark); |
| | | // flow.setRtMemberId(rtMemberId); |
| | | // flow.setStatus(status); |
| | | // mallMoneyFlowMapper.insert(flow); |
| | | return null; |
| | | } |
| | | |
| | | } |
| | |
| | | for (MallMember mallMember : agentList) { |
| | | String level = mallMember.getLevel(); |
| | | |
| | | List<MallMember> bigLevel = memberMapper.selectMallMemberByInviteIdAndLevel(mallMember.getInviteId(),level); |
| | | if(CollUtil.isNotEmpty(bigLevel)){ |
| | | continue; |
| | | } |
| | | |
| | | Map<Long, BigDecimal> amount = needReturn.get(level); |
| | | |
| | | // 按照代理关系,返到第二级,平级奖 |
| | |
| | | a.level, |
| | | a.account_status, |
| | | a.CREATED_TIME, |
| | | c.balance, |
| | | IFNULL(c.balance,0) balance, |
| | | d.description levelName, |
| | | b.name |
| | | FROM mall_member a |
| | | LEFT JOIN mall_member b on a.referrer_id = b.invite_id |
| | | LEFT JOIN mall_member_wallet c on c.member_id = a.id |
| | | LEFT JOIN data_dictionary_custom d on d.code = a.level |
| | | where a.id = #{id} |
| | | GROUP BY a.id |
| | | </select> |
| | | |
| | | <select id="selectInfoByAccount" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | |
| | | <select id="selectByIdAndNoLevel" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | | select * from mall_member where referrer_id=#{refererId} and level != #{level} |
| | | </select> |
| | | |
| | | <select id="selectMallMemberByInviteIdAndLevel" resultType="cc.mrbird.febs.mall.entity.MallMember"> |
| | | SELECT |
| | | m.*, b. |
| | | VALUE |
| | | |
| | | FROM |
| | | mall_member m |
| | | LEFT JOIN data_dictionary_custom b ON m. LEVEL = b. CODE |
| | | WHERE |
| | | find_in_set(#{inviteId}, m.referrer_ids) |
| | | AND b.type = 'AGENT_LEVEL' |
| | | AND b.VALUE > ( |
| | | SELECT |
| | | VALUE |
| | | FROM |
| | | data_dictionary_custom a |
| | | WHERE |
| | | a. CODE = #{level} |
| | | AND a.type = 'AGENT_LEVEL' |
| | | ) |
| | | GROUP BY |
| | | m.id |
| | | </select> |
| | | </mapper> |
| | |
| | | balance = #{record.balance} |
| | | where id=#{record.id} and revision=#{record.revision} |
| | | </update> |
| | | |
| | | <update id="updateBalanceWithId"> |
| | | update mall_member_wallet |
| | | set revision = revision + 1, |
| | | balance = #{record.balance} |
| | | where id=#{record.id} |
| | | </update> |
| | | </mapper> |
| | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">代理层级:</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="level" data-th-id="${member.level}" |
| | | <input type="text" name="levelName" data-th-id="${member.levelName}" |
| | | autocomplete="off" class="layui-input" readonly> |
| | | </div> |
| | | </div> |
| | |
| | | "inviteId": member.inviteId, |
| | | "referrerName": member.referrerName, |
| | | "level": member.level, |
| | | "levelName": member.levelName, |
| | | "createdTime": member.createdTime, |
| | | "accountStatus": member.accountStatus |
| | | }); |
| | |
| | | maxmin: true, |
| | | }); |
| | | } |
| | | if (layEvent === 'systemPay') { |
| | | febs.modal.open('系统拨付', 'modules/mallMember/mallSystemPay/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#systemPay-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | function closeAccount(id) { |
| | | febs.get(ctx + 'admin/mallMember/closeAccount/' + id, null, function () { |
| | |
| | | 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="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{ |
New file |
| | |
| | | <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" data-th-value="${systemPay.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> |
| | | </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}]], |
| | | $view = $('#systemPay-update'), |
| | | validate = layui.validate; |
| | | |
| | | form.render(); |
| | | laydate.render({ |
| | | elem: '#febs-form-group-date' |
| | | }); |
| | | |
| | | formSelects.render(); |
| | | |
| | | |
| | | initUserValue(); |
| | | |
| | | function initUserValue() { |
| | | form.val("systemPay-update-form", { |
| | | "id": systemPay.id, |
| | | "balance": systemPay.balance, |
| | | }); |
| | | } |
| | | |
| | | form.on('submit(systemPay-update-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-newInfo').find('#reset').click(); |
| | | }); |
| | | return false; |
| | | }); |
| | | }); |
| | | </script> |
| | |
| | | febs.modal.open('编辑', 'modules/mallMember/newsInfoUpdate/' + data.id, { |
| | | btn: ['提交', '取消'], |
| | | yes: function (index, layero) { |
| | | $('#newsInfo-update').find('#submit').trigger('click'); |
| | | $('#systemPay-update').find('#submit').trigger('click'); |
| | | }, |
| | | btn2: function () { |
| | | layer.closeAll(); |
| | |
| | | } |
| | | |
| | | @Test |
| | | public void returnMoney() { |
| | | // agentService.autoUpAgentLevel(3L); |
| | | // agentProducer.sendAutoLevelUpMsg(5L); |
| | | agentService.returnMoneyToAgent(32L); |
| | | } |
| | | |
| | | @Test |
| | | public void bigdecimalTest() { |
| | | BigDecimal aa = new BigDecimal("1.345"); |
| | | |