1 files added
12 files modified
| | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.shiro.authz.annotation.RequiresPermissions; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | } |
| | | |
| | | /** |
| | | * 订单列表-资金流水 |
| | | */ |
| | | @GetMapping("/orderMoneyFlow") |
| | | public FebsResponse orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo, Integer parentId) { |
| | | if (parentId == null) { |
| | | ViewMallOrderController.idOrderMoneyFlow = 0; |
| | | } |
| | | mallOrderInfo.setId(ViewMallOrderController.idOrderMoneyFlow); |
| | | Map<String, Object> dataTable = getDataTable(adminMallOrderService.orderMoneyFlow(request, mallOrderInfo)); |
| | | return new FebsResponse().success().data(dataTable); |
| | | } |
| | | |
| | | /** |
| | | * 订单列表-发货 |
| | | */ |
| | | @PostMapping("deliverGoods") |
| | |
| | | return FebsUtil.view("modules/order/orderDetail"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 订单-资金流水 |
| | | * @param id |
| | | * @param model |
| | | * @return |
| | | */ |
| | | |
| | | |
| | | public static long idOrderMoneyFlow; |
| | | @GetMapping("orderMoneyFlow/{id}") |
| | | @RequiresPermissions("orderMoneyFlow:update") |
| | | public String orderMoneyFlow(@PathVariable long id, Model model) { |
| | | idOrderMoneyFlow = id; |
| | | return FebsUtil.view("modules/order/orderMoneyFlow"); |
| | | } |
| | | |
| | | /** |
| | | * 订单退款 |
| | | * @return |
| | |
| | | import cc.mrbird.febs.mall.dto.MoneyFlowListDto; |
| | | import cc.mrbird.febs.mall.entity.MallMember; |
| | | import cc.mrbird.febs.mall.entity.MallMoneyFlow; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | void insertMoneyFlow(MallMoneyFlow mallMoneyFlow); |
| | | |
| | | List<AdminTeamEqualsPerkVo> selectTeamEqualsMemberByDate(@Param("date") Date date); |
| | | |
| | | IPage<AdminMallMoneyFlowVo> selectOrderMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallOrderInfo mallOrderInfo); |
| | | } |
| | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.MallMember; |
| | | import cc.mrbird.febs.mall.entity.MallOrderInfo; |
| | | import cc.mrbird.febs.mall.entity.MallOrderRefund; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | |
| | | FebsResponse delOrder(Long id); |
| | | |
| | | FebsResponse takeGoods(Long id); |
| | | |
| | | IPage<AdminMallMoneyFlowVo> orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo); |
| | | } |
| | |
| | | |
| | | // 重置交易密码 |
| | | if (type == 1) { |
| | | String payPwd = SecureUtil.md5("654321"); |
| | | String payPwd = SecureUtil.md5("123456"); |
| | | member.setTradePassword(payPwd); |
| | | // 重置登录密码 |
| | | } else { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallMoneyFlowVo> orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo) { |
| | | MallOrderInfo mallOrder = this.baseMapper.selectById(mallOrderInfo.getId()); |
| | | Page<AdminMallMoneyFlowVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallMoneyFlowVo> adminMallMoneyFlowVos = mallMoneyFlowMapper.selectOrderMoneyFlowInPage(page, mallOrder); |
| | | return adminMallMoneyFlowVos; |
| | | } |
| | | |
| | | @Override |
| | | public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) { |
| | | MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo()); |
| | | if (mallOrderInfo == null) { |
| | |
| | | if(CollUtil.isNotEmpty(mallMemberStars)){ |
| | | |
| | | List<Long> mallMemberStarIds = mallMemberStars.stream().map(MallMember::getId).collect(Collectors.toList()); |
| | | //排除掉本身 |
| | | mallMemberStarIds.remove(memberId); |
| | | //当前等级的总贡献点 |
| | | List<MallMemberWallet> mallMemberWallets = mallMemberWalletMapper.selectMemberWalletsByIds(mallMemberStarIds); |
| | | Integer starSum = mallMemberWallets.stream().mapToInt(MallMemberWallet::getStar).sum(); |
| | |
| | | inner join mall_member b on b.id = a.member_id |
| | | inner join mall_member c on c.invite_id = b.referrer_id and c.level = b.level |
| | | where |
| | | a.type >= 19 |
| | | and a.type <= 27 |
| | | a.type IN (19, 20, 21, 22, 23, 24, 27) |
| | | and date_format(a.created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') |
| | | group by a.member_id; |
| | | </select> |
| | | |
| | | <select id="selectOrderMoneyFlowInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallMoneyFlowVo"> |
| | | select |
| | | a.*, |
| | | b.name fromMemberName |
| | | from mall_money_flow a |
| | | left join mall_member b on a.member_id = b.id |
| | | where a.order_no = #{record.orderNo} |
| | | order by a.CREATED_TIME desc |
| | | </select> |
| | | </mapper> |
| | |
| | | // // '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="moneyFlow:update">资金流水</button>' |
| | | // // + '<button class="layui-btn layui-btn-normal layui-btn-xs" type="button" lay-event="updateReferer" shiro:hasPermission="user:update">修改推荐人</button>' |
| | | // },minWidth: 200,align:'center', fixed:"right"} |
| | | {title: '操作', minWidth: 200 ,toolbar: '#mallmember-option',hide:toolbarMallmember,align:'left'} |
| | | {title: '操作', minWidth: 200 ,toolbar: '#mallmember-option',hide:toolbarMallmember,align:'left', fixed:'right'} |
| | | ]] |
| | | }); |
| | | } |
| | |
| | | febs.alert.warn('请选择需要的用户'); |
| | | return; |
| | | } |
| | | febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码?', function () { |
| | | febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码为【a123456】?', function () { |
| | | var ids = []; |
| | | layui.each(checkData, function (key, item) { |
| | | ids.push(item.id) |
| | |
| | | febs.alert.warn('请选择需要的用户'); |
| | | return; |
| | | } |
| | | febs.modal.confirm('重置交易密码', '是否重置选中账号交易密码?', function () { |
| | | febs.modal.confirm('重置交易密码', '是否重置选中账号交易密码为【123456】?', function () { |
| | | var ids = []; |
| | | layui.each(checkData, function (key, item) { |
| | | ids.push(item.id) |
| | |
| | | id: 'moneyFlowChild', |
| | | url: ctx + 'admin/mallMember/moneyFlow?parentId=1', |
| | | cols: [[ |
| | | {field: 'fromMemberName', title: '来自', minWidth: 80,align:'center'}, |
| | | {field: 'amount', title: '金额', minWidth: 80,align:'center'}, |
| | | {field: 'type', title: '流水类型', |
| | | templet: function (d) { |
| | |
| | | return '-'; |
| | | } |
| | | }, minWidth: 80,align:'center'}, |
| | | {field: 'fromMemberName', title: '来自', minWidth: 80,align:'center'}, |
| | | {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'}, |
| | | {field: 'remark', title: '备注', minWidth: 150,align:'left'}, |
| | | {field: 'createdTime', title: '时间', minWidth: 150,align:'left'} |
| | |
| | | </div> |
| | | </div> |
| | | <!-- 表格操作栏 start --> |
| | | <script type="text/html" id="mall-order-option"> |
| | | {{# if(d.status === 2) { }} |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" type="button" shiro:hasPermission="deliverGoods:update" lay-event="deliverGoods">发货</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button> |
| | | {{# } else if(d.status === 7) { }} |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button> |
| | | {{# } else { }} |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderDetail:view" lay-event="seeOrder">详情</button> |
| | | <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="orderMoneyFlow:update" lay-event="orderMoneyFlow">资金流水</button> |
| | | {{# } }} |
| | | </script> |
| | | <script type="text/html" id="user-option"> |
| | | <span shiro:lacksPermission="user:view,user:update,user:delete"> |
| | | <span class="layui-badge-dot febs-bg-orange"></span> 无权限 |
| | |
| | | laydate = layui.laydate, |
| | | tableIns; |
| | | |
| | | let mallOrderOption = $.trim($("#mall-order-option").html())==="" ? true : false; |
| | | //日期范围 |
| | | laydate.render({ |
| | | elem: '#febs-form-group-date-start' |
| | |
| | | if (layEvent === 'delOrder') { |
| | | febs.modal.confirm('删除订单', '确认删除订单?', function () { |
| | | delOrder(data.id); |
| | | }); |
| | | } |
| | | if (layEvent === 'orderMoneyFlow') { |
| | | febs.modal.open( '订单流水', 'modules/order/orderMoneyFlow/' + data.id, { |
| | | maxmin: true, |
| | | }); |
| | | } |
| | | if (layEvent === 'seePayImage') { |
| | |
| | | {field: 'payMethod', title: '支付方式', minWidth: 120,align:'left'}, |
| | | {field: 'payTime', title: '支付时间', minWidth: 200,align:'left'}, |
| | | {field: 'payOrderNo', title: '支付订单号', minWidth: 200,align:'left'}, |
| | | {title: '操作', |
| | | templet: function (d) { |
| | | if (d.status === 2) { |
| | | if(d.deliverType ===2){ |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="takeGoods" shiro:hasPermission="user:update">自提</button>' |
| | | +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | }else{ |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' |
| | | +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | } |
| | | }else if(d.status === 7){ |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | +'<button class="layui-btn layui-btn-xs layui-btn-normal layui-btn-danger" lay-event="delOrder" shiro:hasPermission="user:update">删除</button>' |
| | | }else{ |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs " lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | } |
| | | },minWidth: 200,align:'center', fixed:'right'} |
| | | |
| | | {title: '操作', minWidth: 200 ,toolbar: '#mall-order-option',hide:mallOrderOption,align:'left', fixed:'right'}, |
| | | // {title: '操作', |
| | | // templet: function (d) { |
| | | // if (d.status === 2) { |
| | | // if(d.deliverType ===2){ |
| | | // return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="takeGoods" shiro:hasPermission="user:update">自提</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>' |
| | | // }else{ |
| | | // return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="deliverGoods" shiro:hasPermission="user:update">发货</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>' |
| | | // } |
| | | // }else if(d.status === 7){ |
| | | // return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | // +'<button class="layui-btn layui-btn-xs layui-btn-normal layui-btn-danger" lay-event="delOrder" shiro:hasPermission="user:update">删除</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>' |
| | | // }else{ |
| | | // return '<button class="layui-btn layui-btn-normal layui-btn-xs " lay-event="seeOrder" shiro:hasPermission="user:update">详情</button>' |
| | | // +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="orderMoneyFlow" shiro:hasPermission="orderMoneyFlow:update">资金流水</button>' |
| | | // } |
| | | // },minWidth: 200,align:'center', fixed:'right'} |
| | | ]] |
| | | }); |
| | | } |
New file |
| | |
| | | <div class="layui-fluid layui-anim febs-anim" id="febs-orderMoneyFlow-child" lay-title="资金流水"> |
| | | <div class="layui-row febs-container"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body febs-table-full"> |
| | | <table lay-filter="orderMoneyFlowChild" lay-data="{id: 'orderMoneyFlowChild'}"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect' ,'eleTree'], function () { |
| | | var $ = layui.jquery, |
| | | laydate = layui.laydate, |
| | | febs = layui.febs, |
| | | form = layui.form, |
| | | table = layui.table, |
| | | treeSelect = layui.treeSelect, |
| | | dropdown = layui.dropdown, |
| | | $view = $('#febs-orderMoneyFlow-child'), |
| | | $query = $view.find('#queryChild'), |
| | | $searchForm = $view.find('formChild'), |
| | | sortObject = {field: 'createTime', type: null}, |
| | | tableIns, |
| | | createTimeFrom, |
| | | createTimeTo; |
| | | |
| | | form.render(); |
| | | |
| | | initTable(); |
| | | |
| | | laydate.render({ |
| | | elem: '#user-createTime', |
| | | range: true, |
| | | trigger: 'click' |
| | | }); |
| | | |
| | | |
| | | function initTable() { |
| | | tableIns = febs.table.init({ |
| | | elem: $view.find('table'), |
| | | id: 'orderMoneyFlowChild', |
| | | url: ctx + 'admin/order/orderMoneyFlow?parentId=1', |
| | | cols: [[ |
| | | {field: 'fromMemberName', title: '用户', minWidth: 80,align:'center'}, |
| | | {field: 'amount', title: '金额', minWidth: 80,align:'center'}, |
| | | {field: 'type', title: '流水类型', |
| | | templet: function (d) { |
| | | if (d.type === 1) { |
| | | return '<span>静态收益</span>' |
| | | } else if (d.type === 2) { |
| | | return '<span>直推奖</span>' |
| | | } else if (d.type === 3) { |
| | | return '<span>代理收益</span>' |
| | | } else if (d.type === 4) { |
| | | return '<span>排名收益</span>' |
| | | }else if (d.type === 5) { |
| | | return '<span>总监收益</span>' |
| | | }else if (d.type === 6) { |
| | | return '<span>社区店补</span>' |
| | | }else if (d.type === 7) { |
| | | return '<span>一代收益</span>' |
| | | }else if (d.type === 8) { |
| | | 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 if (d.type === 17) { |
| | | return '<span>抽奖</span>' |
| | | }else if (d.type === 18) { |
| | | return '<span>积分池收益</span>' |
| | | }else if (d.type === 19) { |
| | | return '<span>1星合伙人补贴</span>' |
| | | }else if (d.type === 20) { |
| | | return '<span>2星合伙人补贴</span>' |
| | | }else if (d.type === 21) { |
| | | return '<span>3星合伙人补贴</span>' |
| | | }else if (d.type === 22) { |
| | | return '<span>4星合伙人补贴</span>' |
| | | }else if (d.type === 23) { |
| | | return '<span>5星合伙人补贴</span>' |
| | | }else if (d.type === 24) { |
| | | return '<span>6星合伙人补贴</span>' |
| | | }else if (d.type === 25) { |
| | | return '<span>贡献点</span>' |
| | | }else if (d.type === 26) { |
| | | return '<span>补贴额度</span>' |
| | | }else if (d.type === 27) { |
| | | return '<span>团队补贴</span>' |
| | | }else if (d.type === 28) { |
| | | return '<span>平级奖励补贴</span>' |
| | | }else if (d.type === 29) { |
| | | return '<span>线下服务中心补贴</span>' |
| | | }else if (d.type === 30) { |
| | | return '<span>代理商补贴</span>' |
| | | }else{ |
| | | return '' |
| | | } |
| | | }, minWidth: 80,align:'center'}, |
| | | {field: 'flowType', title: '资金类型', |
| | | templet: function (d) { |
| | | if (d.flowType === 1) { |
| | | return '余额'; |
| | | } else if(d.flowType === 3) { |
| | | return '现金积分' |
| | | } else if(d.flowType === 5) { |
| | | return '贡献点' |
| | | } else { |
| | | return '-'; |
| | | } |
| | | }, minWidth: 80,align:'center'}, |
| | | // {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'}, |
| | | {field: 'remark', title: '备注', minWidth: 150,align:'left'}, |
| | | {field: 'createdTime', title: '时间', minWidth: 150,align:'left'} |
| | | ]] |
| | | }); |
| | | } |
| | | |
| | | }) |
| | | </script> |
| | |
| | | |
| | | @Test |
| | | public void dynamicProfit() { |
| | | // agentService.perkMoneyConsumer(Long.parseLong("571")); |
| | | List<MallMember> mallMemberTeamPerk = new ArrayList<>(); |
| | | MallMember mallMember = memberMapper.selectById(233L); |
| | | List<String> ids = StrUtil.split(mallMember.getReferrerIds(), ','); |
| | | List<MallMember> mallMembers = memberMapper.selectByInviteIds(ids); |
| | | Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel)); |
| | | Set<String> set = collect.keySet(); // 得到所有key的集合 |
| | | for (String key : set) { |
| | | List<MallMember> value = collect.get(key); |
| | | System.out.println(key + " " + value); |
| | | mallMemberTeamPerk.add(value.get(0)); |
| | | |
| | | System.out.println(value.get(0).getName()); |
| | | |
| | | } |
| | | List<Long> mallMemberStarIds = mallMemberTeamPerk.stream().map(MallMember::getId).collect(Collectors.toList()); |
| | | |
| | | System.out.println(mallMemberStarIds); |
| | | agentService.perkMoneyConsumer(665L); |
| | | memberProfitService.teamEqualsPerkJob(null); |
| | | // List<MallMember> mallMemberTeamPerk = new ArrayList<>(); |
| | | // MallMember mallMember = memberMapper.selectById(233L); |
| | | // List<String> ids = StrUtil.split(mallMember.getReferrerIds(), ','); |
| | | // List<MallMember> mallMembers = memberMapper.selectByInviteIds(ids); |
| | | // Map<String, List<MallMember>> collect = mallMembers.stream().collect(Collectors.groupingBy(MallMember::getLevel)); |
| | | // Set<String> set = collect.keySet(); // 得到所有key的集合 |
| | | // for (String key : set) { |
| | | // List<MallMember> value = collect.get(key); |
| | | // System.out.println(key + " " + value); |
| | | // mallMemberTeamPerk.add(value.get(0)); |
| | | // |
| | | // System.out.println(value.get(0).getName()); |
| | | // |
| | | // } |
| | | // List<Long> mallMemberStarIds = mallMemberTeamPerk.stream().map(MallMember::getId).collect(Collectors.toList()); |
| | | // |
| | | // System.out.println(mallMemberStarIds); |
| | | } |
| | | @Test |
| | | public void agentProfit() { |
| | | iApiMallOrderInfoService.changeWallet(648L); |
| | | iApiMallOrderInfoService.changeWallet(665L); |
| | | } |
| | | |
| | | |