Helius
2024-04-08 673b280cfc2c77b90cff04140cf59225e495b0cb
Merge branch 'blnka-vip' into blnka
1 files added
5 files modified
204 ■■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java 28 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html 151 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.mall.entity.MallMemberPayment;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.vip.service.IMallVipBenefitsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -17,6 +18,7 @@
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Map;
/**
 * @author wzy
@@ -33,6 +35,7 @@
    private final IMallMemberWithdrawService mallMemberWithdrawService;
    private final IApiMallMemberWalletService walletService;
    private final IApiMallAgentService iApiMallAgentService;
    private final IMallVipBenefitsService mallVipBenefitsService;
    /**
     * 小程序接收用户数据,更新用户信息
@@ -273,6 +276,9 @@
    @ApiOperation(value = "登录事件", notes = "登录事件")
    @GetMapping(value = "/loginEvent")
    public FebsResponse loginEvent() {
        return new FebsResponse().success().data(memberService.loginEvent());
        Map<String, Object> birthdayEvent = mallVipBenefitsService.birthdayEvent();
        Map<String, Object> loginEvent = memberService.loginEvent();
        loginEvent.putAll(birthdayEvent);
        return new FebsResponse().success().data(loginEvent);
    }
}
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -114,4 +114,9 @@
        model.addAttribute("faPiaoDto", faPiaoDto);
        return FebsUtil.view("modules/system/faPiao");
    }
    @GetMapping("vipCenterSetting")
    public String vipCenterSetting() {
        return FebsUtil.view("modules/system/vipCenterSetting");
    }
}
src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java
@@ -3,6 +3,7 @@
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.vip.entity.MallVipBenefits;
import cc.mrbird.febs.vip.entity.MallVipConfig;
import cc.mrbird.febs.vip.service.IMallVipBenefitsService;
@@ -27,6 +28,7 @@
    private final IMallVipConfigService mallVipConfigService;
    private final IMallVipBenefitsService mallVipBenefitsService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @ApiOperation(value = "获取会员等级列表")
@@ -54,4 +56,10 @@
        mallVipBenefitsService.getBenefits(id);
        return new FebsResponse().success().message("领取成功");
    }
    @ApiOperation(value = "获取会员中心背景图片")
    @GetMapping(value = "/findVipCenterBg")
    public FebsResponse findVipCenterBg() {
        return new FebsResponse().success().data(dataDictionaryCustomMapper.selectDicByType("VIP_CENTER_BACKGROUND"));
    }
}
src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
@@ -5,6 +5,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
public interface IMallVipBenefitsService extends IService<MallVipBenefits> {
    IPage<MallVipBenefits> vipBenefitsListInPage(QueryRequest request);
@@ -20,4 +22,6 @@
    void getBenefits(Long id);
    void switchBenefitsShow(Long id);
    Map<String, Object> birthdayEvent();
}
src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
@@ -37,9 +37,8 @@
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@@ -296,4 +295,27 @@
        update.setId(vipBenefits.getId());
        this.baseMapper.updateById(update);
    }
    @Override
    public Map<String, Object> birthdayEvent() {
        MallMember loginUser = LoginUserUtil.getLoginUser();
        MallMember member = this.mallMemberMapper.selectById(loginUser.getId());
        String today = DateUtil.format(new Date(), DatePattern.NORM_DATE_PATTERN);
        boolean isBirthday = member.getBirthday().compareTo(DateUtil.parseDate(today)) == 0;
        if (!isBirthday) {
            return new HashMap<>();
        }
        MallVipConfig configList = mallVipConfigMapper.selectVipConfigByCode(member.getLevel());
        List<MallVipBenefits> benefits = configList.getBenefits().stream().filter(item -> item.getGainType() == 2 && item.getType() != 2).collect(Collectors.toList());
        if (CollUtil.isEmpty(benefits)) {
            return new HashMap<>();
        }
        Map<String, Object> map = new HashMap<>();
        map.put("benefit", benefits.get(0));
        return map;
    }
}
src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html
New file
@@ -0,0 +1,151 @@
<div class="layui-fluid layui-anim febs-anim" id="vip-center-setting" lay-title="会员中心设置">
    <div class="layui-row layui-col-space8 febs-container">
        <form class="layui-form" action="" lay-filter="vip-center-setting-form">
            <div class="layui-card">
                <div class="layui-card-body" id="cardBody">
                </div>
                <div class="layui-card-footer">
                    <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="vip-center-setting-form-submit" id="submit">保存</button>
                </div>
            </div>
        </form>
    </div>
</div>
<style>
    .layui-form-label {
        width: 120px;
    }
    .layui-form-item .layui-input-block {
        margin-left: 150px;
    }
    .layui-table-form .layui-form-item {
        margin-bottom: 20px !important;
    }
</style>
<script type="text/html" id="vipCenterSettingOperate">
    {{#  layui.each(d, function(index, item){ }}
    <div class="layui-form-item">
        <label class="layui-form-label febs-form-item-require">{{item.description}}:</label>
        <div class="layui-input-block">
            <div class="layui-upload">
                <button type="button" class="layui-btn layui-btn-normal layui-btn" id="upload-btn-{{index}}">
                    上传
                </button>
                <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                    <div class="layui-upload-list" id="upload-{{index}}">
                        {{# if(item.value != null && item.value != '') { }}
                            <img src="{{item.value}}" class="layui-upload-img single-image-{{index}}" style="width: 130px">
                        {{# }}}
                    </div>
                </blockquote>
                <div class="layui-word-aux">双击图片删除</div>
            </div>
        </div>
        <input type="text" id="thumb-{{index}}" lay-verify="required" name="{{item.code}}"
               autoComplete="off" value="{{item.value}}" class="layui-input febs-hide" readOnly>
    </div>
    {{# }) }}
</script>
<script data-th-inline="javascript" type="text/javascript">
    layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree', 'laytpl', 'upload'], function () {
        var $ = layui.jquery,
            febs = layui.febs,
            form = layui.form,
            validate = layui.validate
            , templateHtml = vipCenterSettingOperate.innerHTML
            , $cardBody = $("#cardBody")
            , laytpl = layui.laytpl
            , upload = layui.upload
            , $view = $('#vip-center-setting');
        form.verify(validate);
        form.render();
        dicDataReq("VIP_CENTER_BACKGROUND");
        function dicDataReq(type) {
            $cardBody.empty();
            $.get(ctx + 'admin/common/findDicByType/' + type, function (r) {
                if (r.code === 200) {
                    var data = r.data;
                    laytpl(templateHtml).render(data, function(html) {
                        $cardBody.append(html);
                    })
                    for(var i = 0; i < r.data.length; i++) {
                        uploadFun(i);
                    }
                }
            });
        }
        form.on('submit(vip-center-setting-form-submit)', function (data) {
            $.ajax({
                'url':ctx + 'admin/system/bonusSystemSetting',
                'type':'post',
                'dataType':'json',
                'headers' : {'Content-Type' : 'application/json;charset=utf-8'},
                'traditional': true,
                'data':JSON.stringify(data.field),
                'success':function (data) {
                    if (data.code == 200) {
                        febs.alert.success(data.message);
                    }
                },
                'error':function () {
                    febs.alert.warn('服务器繁忙');
                }
            })
            return false;
        });
        function uploadFun(classIndex) {
            var uploadElem = '#upload-btn-' + classIndex;
            upload.render({
                elem: uploadElem
                ,url: ctx + 'admin/goods/uploadFileBase64' //改成您自己的上传接口
                ,multiple: true
                ,before: function(obj){
                    //预读本地文件示例,不支持ie8
                    obj.preview(function(index, file, result){
                        if ($("#thumb-" + classIndex).val()) {
                            $("#upload-"+classIndex).html('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img single-image" style="width: 130px">')
                        } else {
                            $("#upload-"+classIndex).append('<img src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img single-image" style="width: 130px">')
                        }
                    });
                }
                ,done: function(res){
                    $("#thumb-" + classIndex).val(res.data.src);
                    imgUnBind(".single-image-" + classIndex);
                    imgSingleBind(classIndex);
                }
            });
        }
        function imgSingleBind(classIndex) {
            $(".single-image-" + classIndex).each(function(index, element) {
                $(this).on("dblclick", function() {
                    var imgThumb = $(".single-image-" + classIndex)[index];
                    $(imgThumb).remove();
                    $("#thumb-" + classIndex).val("");
                    imgUnBind(".single-image-" + classIndex);
                    imgSingleBind();
                });
            })
        }
        function imgUnBind(className) {
            $(className).each(function() {
                $(this).unbind('dblclick');
            })
        }
    });
</script>