From d0871f4f1ce14c6b74ef8378fd41067cdd213b1a Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 08 Apr 2024 00:26:09 +0800
Subject: [PATCH] fix

---
 src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html  |  151 +++++++++++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java   |    8 ++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java     |    8 +
 src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java        |    5 +
 src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java         |    4 +
 src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java |   28 ++++++
 6 files changed, 200 insertions(+), 4 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 34088f0..e0f0806 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/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);
     }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index e678562..d3277d0 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/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");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java b/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java
index 60a38ac..c00f8f1 100644
--- a/src/main/java/cc/mrbird/febs/vip/controller/ApiMallVipConfigController.java
+++ b/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"));
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java b/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
index f627dd8..764ea68 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
+++ b/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();
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
index 487441b..2b33462 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
+++ b/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;
+    }
 }
diff --git a/src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html b/src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html
new file mode 100644
index 0000000..e4499b4
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/system/vipCenterSetting.html
@@ -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>
\ No newline at end of file

--
Gitblit v1.9.1