Administrator
2025-05-08 314fda70e41cf22b5abafaf86b08b8e8bf8c2d7d
refactor(mall): 重构会员管理系统

- 调整会员相关控制器和 mapper 的包结构
- 重写会员列表查询逻辑,增加会员等级和分销等级字段
- 更新会员实体类,添加会员等级和分销等级相关属性
- 修改会员列表页面展示内容,增加真实姓名和会员等级等信息
2 files renamed
5 files modified
79 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/member/AdminMallMemberController.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/member/ViewMallMemberController.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 19 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 41 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/member/AdminMallMemberController.java
File was renamed from src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -1,4 +1,4 @@
package cc.mrbird.febs.mall.controller;
package cc.mrbird.febs.mall.controller.member;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.controller.BaseController;
src/main/java/cc/mrbird/febs/mall/controller/member/ViewMallMemberController.java
File was renamed from src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -1,4 +1,4 @@
package cc.mrbird.febs.mall.controller;
package cc.mrbird.febs.mall.controller.member;
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsConstant;
src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -126,14 +126,18 @@
    private String levelName;
    /**
     * 董事
     * 会员等级
     */
    private Integer director;
    @TableField(exist = false)
    private String directorName;
    /**
     * 店长
     * 分销等级
     */
    private Integer storeMaster;
    @TableField(exist = false)
    private String storeMasterName;
    /**
     * 微信用户标识
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -25,6 +25,8 @@
    IPage<MallMember> selectMallMemberListInPage(Page<MallMember> page, @Param("record")MallMember mallMember);
    IPage<MallMember> selectHappyMemberListInPage(Page<MallMember> page,  @Param("record")MallMember mallMember);
    MallMember selectInfoByInviteId(@Param("inviteId") String inviteId);
    MallMember selectInfoByAccountAndPwd(@Param("account") String account, @Param("password") String password);
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -76,25 +76,16 @@
    private final SalemanCouponMapper salemanCouponMapper;
    private final MallMemberCouponMapper mallMemberCouponMapper;
    private final MallGoodsCouponMapper mallGoodsCouponMapper;
    private final HappySaleLevelMapper  happySaleLevelMapper;
    private final HappyMemberLevelMapper happyMemberLevelMapper;
    @Override
    public IPage<MallMember> getMallMemberList(MallMember mallMember, QueryRequest request) {
        Page<MallMember> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<MallMember> mallMemberLambdaQueryWrapper = new LambdaQueryWrapper<>();
        if(ObjectUtil.isNotEmpty(mallMember.getName())){
            mallMemberLambdaQueryWrapper.like(MallMember::getName, mallMember.getName());
        }
        if(ObjectUtil.isNotEmpty(mallMember.getPhone())){
            mallMemberLambdaQueryWrapper.eq(MallMember::getPhone, mallMember.getPhone());
        }
        if(ObjectUtil.isNotEmpty(mallMember.getCheckOrder())){
            mallMemberLambdaQueryWrapper.eq(MallMember::getCheckOrder, mallMember.getCheckOrder());
        }
        mallMemberLambdaQueryWrapper.orderByDesc(MallMember::getId);
        Page<MallMember> mallMemberPage = this.baseMapper.selectPage(page, mallMemberLambdaQueryWrapper);
//        IPage<MallMember> mallMembers = this.baseMapper.selectMallMemberListInPage(page, mallMember);
        return mallMemberPage;
        IPage<MallMember> mallMembers = this.baseMapper.selectHappyMemberListInPage(page, mallMember);
        return mallMembers;
    }
    @Override
src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -42,6 +42,47 @@
        GROUP BY m.id order by m.CREATED_TIME desc
    </select>
    <select id="selectHappyMemberListInPage" resultType="cc.mrbird.febs.mall.entity.MallMember">
        SELECT
               a.*,
               b.name storeMasterName,
               c.name directorName
        FROM mall_member a
        left join happy_sale_level b on b.code = a.store_master
        left join happy_member_level c on c.code = a.director
        <where>
            <if test="record != null" >
                <if test="record.birthdayQuery!=null">
                    and date_format(m.birthday, '%m-%d') = date_format(#{record.birthdayQuery}, '%m-%d')
                </if>
                <if test="record.name!=null and record.name!=''">
                    and m.name like concat('%',  #{record.name},'%')
                </if>
                <if test="record.account!=null and record.account!=''">
                    and (
                    m.phone like concat('%',  #{record.account},'%')
                    or m.email like concat('%',  #{record.account},'%')
                    or m.bind_phone like concat('%',  #{record.account},'%')
                    or m.invite_id like concat('%',  #{record.account},'%')
                    )
                </if>
                <if test="record.accountStatus!=null">
                    and m.account_status = #{record.accountStatus}
                </if>
                <if test="record.accountType != null" >
                    and m.account_type = #{record.accountType}
                </if>
                <if test="record.level!=null and record.level!=''">
                    and m.level=#{record.level}
                </if>
                <if test="record.isSale!=null and record.isSale!=''">
                    and m.is_sale=#{record.isSale}
                </if>
            </if>
        </where>
        GROUP BY m.id order by m.CREATED_TIME desc
    </select>
    <select id="getMallMemberInfoById" resultType="cc.mrbird.febs.mall.vo.MallMemberVo">
        SELECT a.id,
               a.name,
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -329,8 +329,9 @@
                    {type: 'checkbox'},
                    {type: 'numbers', title: '', width: 80},
                    // {title: '操作', toolbar: '#memberOption', minWidth: 200, align: 'center'},
                    {field: 'phone', title: '手机号码', minWidth: 150,align:'left'},
                    {field: 'name', title: '用户昵称', minWidth: 100,align:'left'},
                    {field: 'name', title: '用户名', minWidth: 100,align:'left'},
                    {field: 'realName', title: '真实姓名', minWidth: 100,align:'left'},
                    {field: 'phone', title: '联系方式', minWidth: 150,align:'left'},
                    {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
                    {field: 'checkOrder', title: '核销员', templet: '#checkOrderSwitch', minWidth: 100,align:'center'},
                    {field: 'createdTime', title: '注册时间', minWidth: 180,align:'center'},