feat(sign): 增加签到获得会员经验或积分的功能
- 在 ApiSignVo 中添加 mostSignIn 字段,用于区分签到获得的类型
- 在 ScoreFlowTypeEnum 中新增 SIGN_EXPERIENCE 和 SIGN_SCORE 类型
- 修改 ScoreServiceImpl 中的签到逻辑,支持获得会员经验和积分
- 更新 ScoreSettingDto,添加 mostSignIn 字段用于配置签到获得类型
- 在前端设置页面添加签到获得类型的选项
5 files modified
58 ■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ScoreSettingDto.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java 36 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/signActivity/ApiSignVo.java 4 ●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/score/setting.html 15 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/ScoreFlowTypeEnum.java
@@ -8,6 +8,8 @@
    /**
     *
     */
    SIGN_EXPERIENCE(7, "签到获得会员经验"),
    SIGN_SCORE(7, "签到获得积分"),
    SALE_RECOMMEND(6, "好友下单获得佣金"),
    OTHER_RECOMMEND(5, "推荐下单获得积分"),
    MINE_RECOMMEND(4, "下单获得积分"),
src/main/java/cc/mrbird/febs/mall/dto/ScoreSettingDto.java
@@ -19,5 +19,6 @@
    private Integer signInTotal;
    private Integer signInMore;
    //1:会员经验 2:会员积分
    private Integer mostSignIn;
}
src/main/java/cc/mrbird/febs/mall/service/impl/ScoreServiceImpl.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.mall.dto.ScoreSettingDto;
@@ -283,18 +284,37 @@
        mallScoreSignRecord.setTotalCnt(days);
        mallScoreSignRecord.setSignTime(new Date());
        mallScoreSignRecordMapper.insert(mallScoreSignRecord);
        /**
         * 1:会员经验 2:会员积分
         */
        Integer mostSignIn = scoreSetting.getMostSignIn();
        BigDecimal amount = BigDecimal.valueOf(mallScoreSignRecord.getScore());
        walletService.add(amount, member.getId(), "prizeScore");
        mallMoneyFlowService.addMoneyFlow(
                member.getId(),
                amount,
                MoneyFlowTypeEnum.SCORE_SIGN.getValue(),
                null,
                FlowTypeEnum.PRIZE_SCORE.getValue());
        if(mostSignIn == 1){
            walletService.add(amount, member.getId(), "score");
            mallMoneyFlowService.addMoneyFlow(
                    member.getId(),
                    amount,
                    ScoreFlowTypeEnum.SIGN_EXPERIENCE.getValue(),
                    mallScoreSignRecord.getId().toString(),
                    FlowTypeEnum.SCORE.getValue(),
                    ScoreFlowTypeEnum.SIGN_EXPERIENCE.getDesc(),
                    2);
        }
        if(mostSignIn == 2){
            walletService.add(amount, member.getId(), "prizeScore");
            mallMoneyFlowService.addMoneyFlow(
                    member.getId(),
                    amount,
                    ScoreFlowTypeEnum.SIGN_SCORE.getValue(),
                    mallScoreSignRecord.getId().toString(),
                    FlowTypeEnum.PRIZE_SCORE.getValue(),
                    ScoreFlowTypeEnum.SIGN_SCORE.getDesc(),
                    2);
        }
        ApiSignVo apiSignVo = new ApiSignVo();
        apiSignVo.setMineScore(mallScoreSignRecord.getScore());
        apiSignVo.setMostSignIn(mostSignIn);
        return new FebsResponse().success().data(apiSignVo);
    }
}
src/main/java/cc/mrbird/febs/mall/vo/signActivity/ApiSignVo.java
@@ -8,7 +8,9 @@
@ApiModel(value = "ApiSignVo", description = "信息返回类")
public class ApiSignVo {
    @ApiModelProperty(value = "获得积分")
    @ApiModelProperty(value = "获得")
    private Integer mineScore;
    @ApiModelProperty(value = "1:会员经验 2:会员积分")
    private Integer mostSignIn;
}
src/main/resources/templates/febs/views/modules/score/setting.html
@@ -4,13 +4,18 @@
            <div class="layui-card">
                <div class="layui-card-body">
                    <blockquote class="layui-elem-quote blue-border">基本规则:</blockquote>
                    <div class="layui-form-item">
                        <label class="layui-form-label">签到获得:</label>
                        <div class="layui-input-block">
                            <input type="radio" name="mostSignIn" value="1" title="会员经验" />
                            <input type="radio" name="mostSignIn" value="2" title="积分" checked/>
                        </div>
                    </div>
                    <div class="layui-form-item">
                        <label class="layui-form-label ">每次签到获得</label>
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInOne" lay-verify="number" th:value="${obj != null ? obj.signInOne : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -18,7 +23,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInTwo" lay-verify="number" th:value="${obj != null ? obj.signInTwo : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -26,7 +30,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInThree" lay-verify="number" th:value="${obj != null ? obj.signInThree : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -34,7 +37,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInFour" lay-verify="number" th:value="${obj != null ? obj.signInFour : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -42,7 +44,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInFive" lay-verify="number" th:value="${obj != null ? obj.signInFive : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -50,7 +51,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInSix" lay-verify="number" th:value="${obj != null ? obj.signInSix : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
                    <div class="layui-form-item">
@@ -58,7 +58,6 @@
                        <div class="layui-input-inline" style="width: 120px">
                            <input type="text" name="signInSeven" lay-verify="number" th:value="${obj != null ? obj.signInSeven : null}" autocomplete="off" class="layui-input">
                        </div>
                        <div class="layui-form-mid">积分</div>
                    </div>
<!--                    <div class="layui-form-item">-->