xiaoyong931011
2023-03-20 06e1506e2803038f45b794a60cad82608ae72b21
后台修改
1 files added
12 files modified
302 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml 13 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 6 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html 2 ●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/orderList.html 59 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/order/orderMoneyFlow.html 134 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/ProfitTest.java 39 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -25,6 +25,7 @@
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.*;
@@ -64,6 +65,19 @@
    }
    /**
     * 订单列表-资金流水
     */
    @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")
src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
@@ -77,6 +77,23 @@
        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
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -5,6 +5,7 @@
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;
@@ -38,4 +39,6 @@
    void insertMoneyFlow(MallMoneyFlow mallMoneyFlow);
    List<AdminTeamEqualsPerkVo> selectTeamEqualsMemberByDate(@Param("date") Date date);
    IPage<AdminMallMoneyFlowVo> selectOrderMoneyFlowInPage(Page<AdminMallMoneyFlowVo> page, @Param("record")MallOrderInfo mallOrderInfo);
}
src/main/java/cc/mrbird/febs/mall/service/IAdminMallOrderService.java
@@ -3,6 +3,7 @@
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.*;
@@ -70,4 +71,6 @@
    FebsResponse delOrder(Long id);
    FebsResponse takeGoods(Long id);
    IPage<AdminMallMoneyFlowVo> orderMoneyFlow(QueryRequest request, MallOrderInfo mallOrderInfo);
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -460,7 +460,7 @@
            // 重置交易密码
            if (type == 1) {
                String payPwd = SecureUtil.md5("654321");
                String payPwd = SecureUtil.md5("123456");
                member.setTradePassword(payPwd);
                // 重置登录密码
            } else {
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -463,6 +463,14 @@
    }
    @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) {
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -345,6 +345,8 @@
        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();
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -181,9 +181,18 @@
        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 &gt;= 19
          and a.type &lt;= 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>
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -263,7 +263,7 @@
                    //         // '<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'}
                ]]
            });
        }
@@ -298,7 +298,7 @@
                    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)
@@ -313,7 +313,7 @@
                    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)
src/main/resources/templates/febs/views/modules/mallMember/moneyFlow.html
@@ -43,7 +43,6 @@
                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) {
@@ -123,6 +122,7 @@
                                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'}
src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -94,6 +94,19 @@
    </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> 无权限
@@ -127,6 +140,7 @@
            laydate = layui.laydate,
            tableIns;
        let mallOrderOption = $.trim($("#mall-order-option").html())==="" ? true : false;
        //日期范围
        laydate.render({
            elem: '#febs-form-group-date-start'
@@ -199,6 +213,11 @@
            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') {
@@ -308,23 +327,29 @@
                        {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'}
                ]]
            });
        }
src/main/resources/templates/febs/views/modules/order/orderMoneyFlow.html
New file
@@ -0,0 +1,134 @@
<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>
src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -51,28 +51,29 @@
    @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);
    }