package cc.mrbird.febs.vip.controller;
|
|
import cc.mrbird.febs.common.entity.FebsConstant;
|
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
|
import cc.mrbird.febs.common.utils.FebsUtil;
|
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
|
import cc.mrbird.febs.mall.entity.MallGoods;
|
import cc.mrbird.febs.mall.entity.MallGoodsCoupon;
|
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
|
import cc.mrbird.febs.mall.mapper.MallGoodsCouponMapper;
|
import cc.mrbird.febs.mall.service.IApiMallGoodsService;
|
import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo;
|
import cc.mrbird.febs.vip.entity.MallVipBenefits;
|
import cc.mrbird.febs.vip.entity.MallVipConfig;
|
import cc.mrbird.febs.vip.entity.MallVipConfigBenefits;
|
import cc.mrbird.febs.vip.service.IMallVipBenefitsService;
|
import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService;
|
import cc.mrbird.febs.vip.service.IMallVipConfigService;
|
import cc.mrbird.febs.vip.vo.VipSettingVo;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
@Controller("mallVipConfig")
|
@RequestMapping(FebsConstant.VIEW_PREFIX + "modules/vip/config")
|
@RequiredArgsConstructor
|
public class ViewVipConfigController {
|
|
private final IMallVipBenefitsService mallVipBenefitsService;
|
private final IApiMallGoodsService apiMallGoodsService;
|
private final MallGoodsCouponMapper mallGoodsCouponMapper;
|
private final IMallVipConfigService mallVipConfigService;
|
private final IMallVipConfigBenefitsService mallVipConfigBenefitsService;
|
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
|
|
@GetMapping(value = "/benefitsList")
|
public String benefitsList() {
|
return FebsUtil.view("modules/vip/vipBenefits-list");
|
}
|
|
@GetMapping(value = "/vipBenefitsAdd")
|
public String vipBenefitsAdd() {
|
return FebsUtil.view("modules/vip/vipBenefits-add");
|
}
|
|
|
@GetMapping(value = "/goodsSelect/{index}")
|
public String goodsSelect(@PathVariable("index") String index, Model model) {
|
model.addAttribute("tableIndex", index);
|
return FebsUtil.view("modules/vip/goods-select-list");
|
}
|
|
|
@GetMapping(value = "/couponSelect/{index}")
|
public String couponSelect(@PathVariable("index") String index, Model model) {
|
model.addAttribute("tableIndex", index);
|
return FebsUtil.view("modules/vip/coupon-select");
|
}
|
|
@GetMapping("/editBenefits/{id}")
|
public String editBenefits(@PathVariable("id") Long id, Model model) {
|
MallVipBenefits vipBenefits = mallVipBenefitsService.findVipBenefitsById(id);
|
|
List<Long> goodsIds = new ArrayList<>();
|
List<Long> couponIds = new ArrayList<>();
|
vipBenefits.getDetails().forEach(item -> {
|
if (StrUtil.isBlank(item.getContent())) {
|
return;
|
}
|
|
if (item.getIsClick() == 2) {
|
return;
|
}
|
|
if (item.getLinkType() == 2) {
|
goodsIds.add(Long.parseLong(item.getContent()));
|
}
|
|
if (item.getLinkType() == 3) {
|
couponIds.add(Long.parseLong(item.getContent()));
|
}
|
});
|
|
List<MallGoods> goodsList = new ArrayList<>();
|
if (CollUtil.isNotEmpty(goodsIds)) {
|
goodsList = apiMallGoodsService.listByIds(goodsIds);
|
}
|
|
List<MallGoodsCoupon> coupons = new ArrayList<>();
|
if (CollUtil.isNotEmpty(couponIds)) {
|
coupons = mallGoodsCouponMapper.selectBatchIds(couponIds);
|
}
|
|
Map<Long, MallGoods> goodsMap = goodsList.stream().collect(Collectors.toMap(MallGoods::getId, MallGoods -> MallGoods));
|
Map<Long, MallGoodsCoupon> couponMap = coupons.stream().collect(Collectors.toMap(MallGoodsCoupon::getId, MallGoodsCoupon -> MallGoodsCoupon));
|
|
vipBenefits.getDetails().forEach(item -> {
|
if (StrUtil.isBlank(item.getContent())) {
|
return;
|
}
|
|
if (item.getIsClick() == 2) {
|
return;
|
}
|
|
if (item.getLinkType() == 2) {
|
MallGoods mallGoods = goodsMap.get(Long.parseLong(item.getContent()));
|
if (mallGoods != null) {
|
item.setContentName(mallGoods.getGoodsName());
|
}
|
}
|
|
if (item.getLinkType() == 3) {
|
MallGoodsCoupon coupon = couponMap.get(Long.parseLong(item.getContent()));
|
if (coupon != null) {
|
item.setContentName(coupon.getName());
|
}
|
}
|
});
|
model.addAttribute("benefitsData", vipBenefits);
|
return FebsUtil.view("modules/vip/vipBenefits-edit");
|
}
|
|
@GetMapping(value = "/levelList")
|
public String levelList() {
|
return FebsUtil.view("modules/vip/vipConfig-list");
|
}
|
|
@GetMapping(value = "/levelAdd")
|
public String levelAdd() {
|
return FebsUtil.view("modules/vip/vipConfig-add");
|
}
|
|
@GetMapping(value = "/levelEdit/{id}")
|
public String levelEdit(@PathVariable("id") Long id, Model model) {
|
MallVipConfig vipConfig = mallVipConfigService.getById(id);
|
if (vipConfig.getType() == 1) {
|
MallGoods goods = apiMallGoodsService.getById(vipConfig.getTargetId());
|
vipConfig.setTargetId(goods.getId());
|
vipConfig.setTargetName(goods.getGoodsName());
|
}
|
|
LambdaQueryWrapper<MallVipConfigBenefits> configBenefitsQuery = new LambdaQueryWrapper<>();
|
configBenefitsQuery.eq(MallVipConfigBenefits::getConfigId, vipConfig.getId());
|
List<MallVipConfigBenefits> list = mallVipConfigBenefitsService.list(configBenefitsQuery);
|
|
List<Long> benefitsIds = list.stream().map(MallVipConfigBenefits::getBenefitsId).collect(Collectors.toList());
|
vipConfig.setBenefitsIdList(benefitsIds);
|
|
model.addAttribute("configData", vipConfig);
|
return FebsUtil.view("modules/vip/vipConfig-edit");
|
}
|
|
@GetMapping(value = "/vipSetting")
|
public String vipSetting(Model model) {
|
DataDictionaryCustom data = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_DATE.getType(), DataDictionaryEnum.VIP_DATE.getCode());
|
VipSettingVo setting = new VipSettingVo();
|
setting.setVipDate(data.getValue());
|
|
DataDictionaryCustom couponData = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode());
|
if (couponData != null && StrUtil.isNotBlank(couponData.getValue())) {
|
List<VipSettingUnAliveSettingBo> items = JSONObject.parseArray(couponData.getValue(), VipSettingUnAliveSettingBo.class);
|
setting.setItems(items);
|
}
|
|
DataDictionaryCustom rule = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.VIP_SCORE_RULE.getType(), DataDictionaryEnum.VIP_SCORE_RULE.getCode());
|
setting.setRule(rule.getValue());
|
model.addAttribute("vipSetting", setting);
|
return FebsUtil.view("modules/vip/vip-setting");
|
}
|
}
|