KKSU
2024-11-20 e84e66b4fab056b7fe7e9b04c0abdcb6ebc0f1bb
feat(mall): 添加会员余额和积分相关功能

- 新增 getMallMemberWalletById 方法获取会员钱包信息
- 在会员列表页面添加余额充值、积分充值和重置密码按钮
- 修改系统支付弹窗标题和提示信息
- 优化会员信息查询 SQL
6 files modified
43 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberMapper.xml 11 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -79,7 +79,7 @@
    @GetMapping("mallSystemPay/{type}/{id}")
    @RequiresPermissions("mallSystemPay:update")
    public String systemPay(@PathVariable long id, @PathVariable Integer type, Model model) {
        MallMemberVo data = mallMemberService.getMallMemberInfoById(id);
        MallMemberVo data = mallMemberService.getMallMemberWalletById(id);
        model.addAttribute("systemPay", data);
        model.addAttribute("type", type);
        return FebsUtil.view("modules/mallMember/mallSystemPay");
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -3,7 +3,6 @@
import cc.mrbird.febs.mall.dto.AgentDto;
import cc.mrbird.febs.mall.dto.AgentLevelDto;
import cc.mrbird.febs.mall.dto.RankAwardDto;
import cc.mrbird.febs.mall.dto.RankListDto;
import cc.mrbird.febs.mall.entity.AppVersion;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.vo.*;
@@ -31,6 +30,8 @@
    MallMemberVo getMallMemberInfoById(@Param("id")long id);
    MallMemberVo getMallMemberWalletById(@Param("id")long id);
    List<TeamListVo> selectTeamListByInviteId(@Param("inviteId") String inviteId);
    BigDecimal selectOwnOrderAmountByInviteId(@Param("inviteId") String inviteId);
src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -23,6 +23,8 @@
    MallMemberVo getMallMemberInfoById(@NotNull(message = "{required}") long id);
    MallMemberVo getMallMemberWalletById(@NotNull(message = "{required}") long id);
    IPage<AdminMallMoneyFlowVo> moneyFlow(QueryRequest request, MallMember mallMember);
    IPage<AdminMoneyFlowListVo> getMoneyFlowListInPage(MoneyFlowListDto moneyFlowListDto, QueryRequest request);
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -3,16 +3,12 @@
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.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
@@ -33,10 +29,10 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.xmlbeans.impl.store.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -150,6 +146,12 @@
    }
    @Override
    public MallMemberVo getMallMemberWalletById(@NotNull(message = "{required}") long id) {
        MallMemberVo mallMemberVo = mallMemberMapper.getMallMemberWalletById(id);
        return mallMemberVo;
    }
    @Override
    public IPage<AdminMallMoneyFlowVo> moneyFlow(QueryRequest request, MallMember mallMember) {
        Page<AdminMallMoneyFlowVo> page = new Page<>(request.getPageNum(), request.getPageSize());
        IPage<AdminMallMoneyFlowVo> adminMallMoneyFlowVos = mallMoneyFlowMapper.selectMoneyFlowInPage(page, mallMember);
src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -67,6 +67,17 @@
            GROUP BY a.id
    </select>
    <select id="getMallMemberWalletById" resultType="cc.mrbird.febs.mall.vo.MallMemberVo">
        SELECT a.id,
               a.name,
               IFNULL(c.balance,0) balance,
               IFNULL(c.score,0) score,
               IFNULL(c.prize_score,0) prizeScore
        FROM mall_member a
                 LEFT JOIN mall_member_wallet c on c.member_id = a.id
        where a.id = #{id}
    </select>
    <select id="selectInfoByAccount" resultType="cc.mrbird.febs.mall.entity.MallMember">
        select * from mall_member where phone=#{account} or email=#{account} or invite_id=#{account}
    </select>
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -104,6 +104,9 @@
</style>
<script type="text/html" id="toolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="balance">余额充值</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="prizeScore">积分充值</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="resetPwd">登录密码重置</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="updateReferer">修改推荐人</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="updateVipLevel">修改会员等级</button>
        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="addCoupon">优惠券派送</button>
@@ -394,7 +397,7 @@
            }
            if (layEvent === 'resetPwd') {
                febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码?', function () {
                febs.modal.confirm('重置登录密码', '是否重置选中账号登录密码为:【a123456】?', function () {
                    var ids = [];
                    layui.each(checkData, function (key, item) {
                        ids.push(item.id)
@@ -418,21 +421,21 @@
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改余额", checkData[0].id, 1);
                systemPay("余额充值", checkData[0].id, 1);
            }
            if (layEvent === 'score') {
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改赠送积分", checkData[0].id, 2);
                systemPay("积分充值", checkData[0].id, 2);
            }
            if (layEvent === 'prizeScore') {
                if (checkData.length > 1) {
                    febs.alert.warn('请选择一个用户');
                }
                systemPay("修改竞猜积分", checkData[0].id, 3);
                systemPay("积分充值", checkData[0].id, 3);
            }
            if (layEvent === 'agentLevel') {
@@ -461,7 +464,7 @@
        });
        function systemPay(text, id, type) {
            febs.modal.open('text', 'modules/mallMember/mallSystemPay/' + type +'/'+ id, {
            febs.modal.open(text, 'modules/mallMember/mallSystemPay/' + type +'/'+ id, {
                btn: ['提交', '取消'],
                yes: function (index, layero) {
                    $('#systemPay-update').find('#submit').trigger('click');