| | |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | /** |
| | | * 会员配置接口类 |
| | |
| | | public FebsResponse list(QueryRequest request) { |
| | | return new FebsResponse().success().data(getDataTable(mallVipConfigService.vipConfigList(request))); |
| | | } |
| | | |
| | | |
| | | @PostMapping(value = "/add") |
| | | public FebsResponse add(@RequestBody MallVipConfig config) { |
| | | mallVipConfigService.addVipConfig(config); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @GetMapping(value = "/del/{id}") |
| | | public FebsResponse del(@PathVariable("id") Long id) { |
| | | mallVipConfigService.delVipConfig(id); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | } |
| | |
| | | |
| | | @TableField(exist = false) |
| | | private List<MallVipBenefits> benefits; |
| | | |
| | | @TableField(exist = false) |
| | | private String benefitsIds; |
| | | } |
| | |
| | | IPage<MallVipConfig> vipConfigList(QueryRequest request); |
| | | |
| | | List<MallVipConfig> findConfigList(); |
| | | |
| | | void addVipConfig(MallVipConfig config); |
| | | |
| | | void delVipConfig(Long id); |
| | | } |
| | |
| | | |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.vip.entity.MallVipConfig; |
| | | import cc.mrbird.febs.vip.entity.MallVipConfigBenefits; |
| | | import cc.mrbird.febs.vip.mapper.MallVipConfigBenefitsMapper; |
| | | import cc.mrbird.febs.vip.mapper.MallVipConfigMapper; |
| | | import cc.mrbird.febs.vip.service.IMallVipConfigBenefitsService; |
| | | import cc.mrbird.febs.vip.service.IMallVipConfigService; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | @RequiredArgsConstructor |
| | | public class MallVipConfigServiceImpl extends ServiceImpl<MallVipConfigMapper, MallVipConfig> implements IMallVipConfigService { |
| | | |
| | | private final IMallVipConfigBenefitsService mallVipConfigBenefitsService; |
| | | |
| | | @Override |
| | | public IPage<MallVipConfig> vipConfigList(QueryRequest request) { |
| | | Page<MallVipConfig> page = new Page<>(request.getPageNum(), request.getPageNum()); |
| | | Page<MallVipConfig> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return this.baseMapper.findVipConfigListInPage(page); |
| | | } |
| | | |
| | |
| | | public List<MallVipConfig> findConfigList() { |
| | | return this.baseMapper.selectVipConfigList(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void addVipConfig(MallVipConfig config) { |
| | | this.baseMapper.insert(config); |
| | | |
| | | List<MallVipConfigBenefits> configBenefitsList = new ArrayList<>(); |
| | | List<String> benefitsIds = StrUtil.split(config.getBenefitsIds(), ','); |
| | | benefitsIds.forEach(item -> { |
| | | MallVipConfigBenefits configBenefits = new MallVipConfigBenefits(); |
| | | configBenefits.setConfigId(config.getId()); |
| | | configBenefits.setBenefitsId(Long.parseLong(item)); |
| | | configBenefitsList.add(configBenefits); |
| | | }); |
| | | |
| | | mallVipConfigBenefitsService.saveBatch(configBenefitsList); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void delVipConfig(Long id) { |
| | | this.baseMapper.deleteById(id); |
| | | |
| | | LambdaQueryWrapper<MallVipConfigBenefits> delQuery = new LambdaQueryWrapper<>(); |
| | | delQuery.eq(MallVipConfigBenefits::getConfigId, id); |
| | | this.mallVipConfigBenefitsService.remove(delQuery); |
| | | } |
| | | } |
| | |
| | | </div> |
| | | |
| | | <div class="layui-col-lg6 febs-hide" id="targetShopping"> |
| | | <div class="layui-input-inline"> |
| | | <div class="layui-input-inline layui-col-lg2"> |
| | | <input type="text" name="times" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">月内,消费</div> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="times" autocomplete="off" class="layui-input" > |
| | | <div class="layui-input-inline layui-col-lg2"> |
| | | <input type="text" name="amount" autocomplete="off" class="layui-input" > |
| | | </div> |
| | | <div class="layui-form-mid">金额</div> |
| | | </div> |
| | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label febs-form-item-require">选择会员权益:</label> |
| | | <div class="layui-input-block"> |
| | | <select name="benefitsIds" class="vip-benefits-list" id="vip-benefits-list"> |
| | | <option value="">请选择</option> |
| | | </select> |
| | | <!-- <select name="benefitsIds" class="vip-benefits-list" id="vip-benefits-list">--> |
| | | <!-- </select>--> |
| | | <div id="vip-benefits-list"></div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | |
| | | <script data-th-inline="javascript"> |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload'], function () { |
| | | layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload', 'xmSelect'], function () { |
| | | var $ = layui.$, |
| | | febs = layui.febs, |
| | | layer = layui.layer, |
| | |
| | | $view = $('#vipConfig-add'), |
| | | validate = layui.validate; |
| | | |
| | | var benefitsList = xmSelect.render({ |
| | | el: '#vip-benefits-list', |
| | | prop: { |
| | | name: 'name', |
| | | value: 'id', |
| | | }, |
| | | data: [] |
| | | }) |
| | | |
| | | |
| | | //(下拉框) |
| | | $.get(ctx + 'admin/vip/benefits/findAllBenefits', function (data) { |
| | | var arr = data.data; |
| | | for (let i = 0; i < arr.length; i++) { |
| | | $(".vip-benefits-list").append("<option value='" + arr[i].id + "'>" + arr[i].name + "</option>"); |
| | | } |
| | | layui.use('form', function () { |
| | | var form = layui.form; |
| | | form.render(); |
| | | // for (let i = 0; i < arr.length; i++) { |
| | | // $(".vip-benefits-list").append("<option value='" + arr[i].id + "'>" + arr[i].name + "</option>"); |
| | | // } |
| | | // layui.use('form', function () { |
| | | // var form = layui.form; |
| | | // form.render(); |
| | | // }); |
| | | |
| | | benefitsList.update({ |
| | | data : data.data, |
| | | autoRow: true, |
| | | }); |
| | | }); |
| | | |
| | |
| | | |
| | | formSelects.render(); |
| | | form.on('submit(vipConfig-add-form-submit)', function (data) { |
| | | febs.post(ctx + 'admin/news/addNewsInfo', data.field, function () { |
| | | layer.closeAll(); |
| | | febs.alert.success('操作成功'); |
| | | $('#febs-newInfo').find('#reset').click(); |
| | | }); |
| | | data.field.benefitsIds = benefitsList.getValue('valueStr'); |
| | | $.ajax({ |
| | | 'url':ctx + 'admin/vip/config/add', |
| | | 'type':'post', |
| | | 'dataType':'json', |
| | | 'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式 |
| | | 'traditional': true,//ajax传递数组必须添加属性 |
| | | 'data':JSON.stringify(data.field), |
| | | 'success':function (data) { |
| | | if(data.code==200){ |
| | | layer.closeAll(); |
| | | febs.alert.success(data.message); |
| | | $('#febs-vip-level').find('#reset').click(); |
| | | }else{ |
| | | febs.alert.warn(data.message); |
| | | } |
| | | }, |
| | | 'error':function () { |
| | | febs.alert.warn('服务器繁忙'); |
| | | } |
| | | }) |
| | | return false; |
| | | return false; |
| | | }); |
| | | |
| | |
| | | <a lay-event="edit" shiro:hasPermission="vipConfig:update"><i |
| | | class="layui-icon febs-edit-area febs-blue"></i></a> |
| | | </script> |
| | | |
| | | <script type="text/html" id="validTypeFormat"> |
| | | {{# if(d.validType == "day") { }} |
| | | <span>日</span> |
| | | {{# } else if(d.validType == "month") { }} |
| | | <span>月</span> |
| | | {{# } else { }} |
| | | <span>年</span> |
| | | {{# } }} |
| | | </script> |
| | | <!-- 表格操作栏 end --> |
| | | <script data-th-inline="none" type="text/javascript"> |
| | | // 引入组件并初始化 |
| | |
| | | } |
| | | }); |
| | | } |
| | | if (layEvent === 'delBenefits') { |
| | | if (layEvent === 'delVipConfig') { |
| | | febs.modal.confirm('删除', '确认删除?', function () { |
| | | delBenefits(data.id); |
| | | delVipConfig(data.id); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | function delBenefits(id) { |
| | | febs.get(ctx + 'admin/vip/benefits/delBenefits/' + id, null, function () { |
| | | function delVipConfig(id) { |
| | | febs.get(ctx + 'admin/vip/config/del/' + id, null, function () { |
| | | febs.alert.success('操作成功'); |
| | | $query.click(); |
| | | }); |
| | |
| | | cols: [[ |
| | | {field: 'name', title: '会员名称', minWidth: 120, align: 'center'}, |
| | | { |
| | | field: 'icon', title: '主图', |
| | | field: 'thumb', title: '主图', |
| | | templet: function (d) { |
| | | return ''; |
| | | return '<a lay-event="seeImgThumb"><img id="seeImgThumb'+d.id+'" src="'+d.thumb+'" alt=""></a>'; |
| | | }, minWidth: 150, align: 'center' |
| | | }, |
| | | {field: 'level', title: '等级', minWidth: 120, align: 'center'}, |
| | | {field: 'validType', title: '有效类型', minWidth: 120, align: 'center'}, |
| | | {field: 'validTime', title: '有效时长', minWidth: 120, align: 'center'}, |
| | | {templet:"#validTypeFormat",title: '有效类型', minWidth: 120, align: 'center'}, |
| | | {field: 'type', title: '成为会员条件', minWidth: 120, align: 'center'}, |
| | | { |
| | | title: '操作', |
| | | templet: function (d) { |
| | | return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="benefitsUpdate" shiro:hasPermission="user:update">编辑</button>' |
| | | + '<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delBenefits" shiro:hasPermission="user:update">删除</button>' |
| | | + '<button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delVipConfig" shiro:hasPermission="user:update">删除</button>' |
| | | }, minWidth: 300, align: 'center' |
| | | } |
| | | ]] |