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>