1个文件已删除
3 文件已重命名
13个文件已修改
1个文件已添加
| | |
| | | public class CreditExchangeRateAdminController { |
| | | |
| | | private Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new TypeAdapter<Date>() { |
| | | @Override |
| | | public void write(JsonWriter out, Date value) throws IOException { |
| | | String desc = ""; |
| | | if (value != null) { |
| | | // 判断是否是同一天 |
| | | desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); |
| | | out.value(desc); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | @Override |
| | | public void write(JsonWriter out, Date value) throws IOException { |
| | | String desc = ""; |
| | | if (value != null) { |
| | | // 判断是否是同一天 |
| | | desc = TimeUtil.getGernalTime(value.getTime(), "yyyy-MM-dd HH:mm:ss"); |
| | | out.value(desc); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public Date read(JsonReader in) throws IOException { |
| | | return new Date(); |
| | | } |
| | | }).registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() { |
| | | @Override |
| | | public void write(JsonWriter out, BigDecimal value) throws IOException { |
| | | if (value != null) { |
| | | out.value(value.toString()); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | @Override |
| | | public Date read(JsonReader in) throws IOException { |
| | | return new Date(); |
| | | } |
| | | }).registerTypeAdapter(BigDecimal.class, new TypeAdapter<BigDecimal>() { |
| | | @Override |
| | | public void write(JsonWriter out, BigDecimal value) throws IOException { |
| | | if (value != null) { |
| | | out.value(value.toString()); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public BigDecimal read(JsonReader in) throws IOException { |
| | | return new BigDecimal("0.00"); |
| | | } |
| | | }).create(); |
| | | @Override |
| | | public BigDecimal read(JsonReader in) throws IOException { |
| | | return new BigDecimal("0.00"); |
| | | } |
| | | }).registerTypeAdapter(ExchangeRate.ExchangeRateType.class, new TypeAdapter<ExchangeRate.ExchangeRateType>() { |
| | | @Override |
| | | public void write(JsonWriter out, ExchangeRate.ExchangeRateType value) throws IOException { |
| | | if (value != null) { |
| | | out.value(value.getDesc()); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ExchangeRate.ExchangeRateType read(JsonReader in) throws IOException { |
| | | return ExchangeRate.ExchangeRateType.GENERAL_EXCHANGE; |
| | | } |
| | | }) |
| | | |
| | | .create(); |
| | | |
| | | @Resource |
| | | private ExchangeRateService exchangeRateService; |
| | |
| | | @RequestMapping("list") |
| | | public String listExchangeRates(int page, int limit) { |
| | | List<ExchangeRate> exchangeRates = exchangeRateService.listExchangeRates(ExchangeRateMapper.DaoQuery.builder() |
| | | .start((long) (page - 1) * limit) |
| | | .count(limit) |
| | | .start((long) (page - 1) * limit) |
| | | .count(limit) |
| | | .build()); |
| | | long count = exchangeRateService.countExchangeRates(ExchangeRateMapper.DaoQuery.builder().build()); |
| | | JSONObject root=new JSONObject(); |
| | | root.put("list",gson.toJson(exchangeRates)); |
| | | root.put("count",count); |
| | | JSONObject root = new JSONObject(); |
| | | root.put("list", gson.toJson(exchangeRates)); |
| | | root.put("count", count); |
| | | return JsonUtil.loadTrueResult(root); |
| | | } |
| | | |
| | |
| | | */ |
| | | @ResponseBody |
| | | @RequestMapping("update") |
| | | public String updateExchangeRate(ExchangeRate exchangeRate) { |
| | | int success = exchangeRateService.updateExchangeRate(exchangeRate); |
| | | if (success>0) { |
| | | public String updateExchangeRate(Long id, BigDecimal rate) { |
| | | int success = exchangeRateService.updateExchangeRate(ExchangeRate.builder() |
| | | .id(id) |
| | | .rate(rate) |
| | | .build()); |
| | | if (success > 0) { |
| | | return JsonUtil.loadTrueResult("更新成功"); |
| | | } else { |
| | | return JsonUtil.loadFalseResult("更新失败"); |
| | |
| | | return JsonUtil.loadFalseResult("修改失败"); |
| | | } |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | | @RequestMapping("get") |
| | | public String get(Long id) { |
| | | CreditSetting setting = creditSettingService.selectByPrimaryKey(id); |
| | | if (setting!=null) { |
| | | return JsonUtil.loadTrueResult(gson.toJson(setting)); |
| | | } else { |
| | | return JsonUtil.loadFalseResult("ID不存在"); |
| | | } |
| | | } |
| | | } |
| | |
| | | @Resource |
| | | private UserCreditExchangeManager userCreditExchangeManager; |
| | | |
| | | private Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new TypeAdapter<Date>() { |
| | | private Gson gson = new GsonBuilder() |
| | | .registerTypeAdapter(Date.class, new TypeAdapter<Date>() { |
| | | @Override |
| | | public void write(JsonWriter out, Date value) throws IOException { |
| | | String desc = ""; |
| | |
| | | public Date read(JsonReader in) throws IOException { |
| | | return new Date(); |
| | | } |
| | | }).create(); |
| | | }) .registerTypeAdapter(CreditExchangeRecord.ExchangeType.class, new TypeAdapter<CreditExchangeRecord.ExchangeType>() { |
| | | @Override |
| | | public void write(JsonWriter out, CreditExchangeRecord.ExchangeType value) throws IOException { |
| | | String desc = ""; |
| | | if (value != null) { |
| | | desc = value.getDesc(); |
| | | out.value(desc); |
| | | } else { |
| | | out.value(""); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CreditExchangeRecord.ExchangeType read(JsonReader in) throws IOException { |
| | | return null; |
| | | } |
| | | }).create(); |
| | | |
| | | @Resource |
| | | private CreditExchangeRecordService userCreditExchangeRecordService; |
| | |
| | | if (!StringUtil.isNullOrEmpty(search.getUid())) { |
| | | query.uid = Long.parseLong(search.getUid()); |
| | | } |
| | | if (search.getStatus() != null) { |
| | | query.exchangeStatus = search.getStatus(); |
| | | if (!StringUtil.isNullOrEmpty(search.getStatus())) { |
| | | query.exchangeStatus =Integer.parseInt(search.getStatus()); |
| | | } |
| | | |
| | | if (search.getStartDate() != null) { |
| | | query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getStartDate(), "yyyy-MM-dd")); |
| | | if (!StringUtil.isNullOrEmpty(search.getStart_date())) { |
| | | query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getStart_date(), "yyyy-MM-dd")); |
| | | } |
| | | |
| | | if (search.getEndDate() != null) { |
| | | query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getEndDate(), "yyyy-MM-dd")); |
| | | if (!StringUtil.isNullOrEmpty(search.getEnd_date())) { |
| | | query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getEnd_date(), "yyyy-MM-dd")+1000*60*60*24L); |
| | | } |
| | | query.sortList = Arrays.asList(new String[]{"_create_time desc"}); |
| | | query.start = (long) (page - 1) * limit; |
| | |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.yeshi.utils.DateUtil; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | |
| | | if(!StringUtil.isNullOrEmpty(search.getUid())){ |
| | | query.uid = Long.parseLong(search.getUid()); |
| | | } |
| | | if(search.getDirection()!=null){ |
| | | query.direction = search.getDirection(); |
| | | if(!org.yeshi.utils.StringUtil.isNullOrEmpty(search.getDirection())){ |
| | | query.direction = Integer.parseInt(search.getDirection()); |
| | | } |
| | | |
| | | if(search.getStartDate()!=null){ |
| | | query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getStartDate(),"yyyy-MM-dd")); |
| | | if(!StringUtil.isNullOrEmpty(search.getStart_date())){ |
| | | query.minCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getStart_date(),"yyyy-MM-dd")); |
| | | } |
| | | |
| | | if(search.getEndDate()!=null){ |
| | | query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getEndDate(),"yyyy-MM-dd")); |
| | | if(!StringUtil.isNullOrEmpty(search.getEnd_date())){ |
| | | query.maxCreateTime = new Date(TimeUtil.convertToTimeTemp(search.getEnd_date(),"yyyy-MM-dd")+1000*60*60*24L); |
| | | } |
| | | query.sortList = Arrays.asList(new String[]{ "_create_time desc"}); |
| | | query.start = (long) (page - 1) * limit; |
| | |
| | | } |
| | | |
| | | public enum ExchangeType { |
| | | FUND_EXCHANGE // 资金兑换 |
| | | FUND_EXCHANGE("红包兑换"); // 资金兑换 |
| | | private String desc; |
| | | private ExchangeType(String desc) { |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public String getDesc() { |
| | | return desc; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | |
| | | public class ExchangeRate { |
| | | |
| | | public enum ExchangeRateType { |
| | | NEW_USER_EXCHANGE, // 新人兑换 |
| | | GENERAL_EXCHANGE // 一般兑换 |
| | | NEW_USER_EXCHANGE("新人兑换"), // 新人兑换 |
| | | GENERAL_EXCHANGE("一般兑换"); // 一般兑换 |
| | | private String desc; |
| | | |
| | | private ExchangeRateType(String desc) { |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public String getDesc() { |
| | | return desc; |
| | | } |
| | | } |
| | | |
| | | @Tolerate |
| | | public ExchangeRate(){ |
| | | public ExchangeRate() { |
| | | |
| | | } |
| | | |
| | |
| | | */ |
| | | CreditSetting getSettingCacheByType(CreditSetting.CreditSettingType type, Date date); |
| | | |
| | | |
| | | /** |
| | | * 根据id获取设置 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | CreditSetting selectByPrimaryKey(Long id); |
| | | } |
| | |
| | | } |
| | | return settings.get(0); |
| | | } |
| | | |
| | | @Override |
| | | public CreditSetting selectByPrimaryKey(Long id) { |
| | | return creditSettingMapper.selectByPrimaryKey(id); |
| | | } |
| | | } |
| | |
| | | public class UserCreditExchangeRecordSearchVO { |
| | | |
| | | private String uid; // 用户ID |
| | | private Integer status; // 状态(未审核/已通过/已拒绝) |
| | | private String startDate; // 最小日期 |
| | | private String endDate; // 最大日期 |
| | | private String status; // 状态(未审核/已通过/已拒绝) |
| | | private String start_date; // 最小日期 |
| | | private String end_date; // 最大日期 |
| | | } |
| | |
| | | public class UserCreditRecordSearchVO { |
| | | |
| | | private String uid; // 用户ID |
| | | private Integer direction; // 类型(获得/消耗) |
| | | private String startDate; // 最小日期 |
| | | private String endDate; // 最大日期 |
| | | private String direction; // 类型(获得/消耗) |
| | | private String start_date; // 最小日期 |
| | | private String end_date; // 最大日期 |
| | | } |
File was renamed from src/main/resources/static/admin/credit/credit-exchange-record-list.html |
| | |
| | | </select> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <input type="text" name="minCreateTime" id="minCreateTime" placeholder="开始日期" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="start_date" id="start_date" placeholder="开始日期" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <input type="text" name="maxCreateTime" id="maxCreateTime" placeholder="结束日期" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="end_date" id="end_date" placeholder="结束日期" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="search" id="search"><i |
| | |
| | | var laydate = layui.laydate; |
| | | |
| | | // 初始化日期选择器 |
| | | laydate.render({elem: '#minCreateTime', type: 'date'}); |
| | | laydate.render({elem: '#maxCreateTime', type: 'date'}); |
| | | laydate.render({elem: '#start_date', type: 'date'}); |
| | | laydate.render({elem: '#end_date', type: 'date'}); |
| | | |
| | | let table_option = { |
| | | elem: '#table', |
| | |
| | | return { |
| | | "code": res.code, // 解析接口状态 |
| | | "msg": res.msg, // 解析提示文本 |
| | | "count": res.count, // 解析数据长度 |
| | | "data": res.data // 解析数据列表 |
| | | "count": res.data.count, // 解析数据长度 |
| | | "data": res.data.list // 解析数据列表 |
| | | }; |
| | | }, |
| | | page: true, // 开启分页 |
| | |
| | | {field: 'consumedCredits', title: '消耗积分', width: 150}, |
| | | {field: 'creditBalance', title: '积分余额', width: 150}, |
| | | {field: 'status', title: '状态', width: 150, templet: function (d) { |
| | | return d.status === 0 ? '未审核' : (d.status === 1 ? '已通过' : '已拒绝'); |
| | | if(d.exchangeStatus === 0){ |
| | | return '<span style="color: #FF5722;">未审核</span>'; |
| | | } |
| | | else if(d.exchangeStatus===1){ |
| | | return '<span style="color: #5FB878;">已通过</span>'; |
| | | } |
| | | else if(d.exchangeStatus===2){ |
| | | return '<span style="color: #FFB800;">已拒绝</span>'; |
| | | } |
| | | return "未知"; |
| | | }}, |
| | | {field: 'createTime', title: '创建时间', width: 180} |
| | | ] |
File was renamed from src/main/resources/static/admin/credit/credit-record-list.html |
| | |
| | | </select> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <input type="text" name="minCreateTime" id="minCreateTime" placeholder="开始日期" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="start_date" id="start_date" placeholder="开始日期" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <input type="text" name="maxCreateTime" id="maxCreateTime" placeholder="结束日期" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="end_date" id="end_date" placeholder="结束日期" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="search" id="search"><i |
| | |
| | | var laydate = layui.laydate; |
| | | |
| | | // 初始化日期选择器 |
| | | laydate.render({elem: '#minCreateTime', type: 'date'}); |
| | | laydate.render({elem: '#maxCreateTime', type: 'date'}); |
| | | laydate.render({elem: '#start_date', type: 'date'}); |
| | | laydate.render({elem: '#end_date', type: 'date'}); |
| | | |
| | | let table_option = { |
| | | elem: '#table', |
| | |
| | | return { |
| | | "code": res.code, // 解析接口状态 |
| | | "msg": res.msg, // 解析提示文本 |
| | | "count": res.count, // 解析数据长度 |
| | | "data": res.data // 解析数据列表 |
| | | "count": res.data.count, // 解析数据长度 |
| | | "data": res.data.list // 解析数据列表 |
| | | }; |
| | | }, |
| | | page: true, // 开启分页 |
| | |
| | | |
| | | // 监听搜索 |
| | | form.on('submit(search)', function (data) { |
| | | |
| | | |
| | | tableIns.reload({ |
| | | where: data.field, |
| | | page: {curr: 1} |
| | |
| | | |
| | | <body> |
| | | <form class="layui-form" lay-filter="edit"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">类型</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="type" required lay-verify="required" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | <input type="hidden" name="id" required> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">名称</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="name" required lay-verify="required" autocomplete="off" class="layui-input"> |
| | | <input type="text" name="name" required readonly="readonly" lay-verify="required" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | |
| | | <input type="text" name="value" required lay-verify="required" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">开始时间</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="startTime" required lay-verify="required" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">结束时间</label> |
| | | <div class="layui-input-block"> |
| | | <input type="text" name="endTime" required lay-verify="required" autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-block"> |
| | | <button class="layui-btn" lay-submit lay-filter="submit">提交</button> |
| | | </div> |
| | | |
| | | <div class="layui-input-block" style="display: none"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="sure" id="sure">确定</button> |
| | | </div> |
| | | </form> |
| | | |
| | | <script> |
| | | var listener; |
| | | |
| | | function submit(callback) { |
| | | //暂存回调方法 |
| | | listener = callback; |
| | | //表单提交按钮 |
| | | $("#sure").click(); |
| | | } |
| | | |
| | | layui.use(['form', 'laydate'], function () { |
| | | var form = layui.form; |
| | | var laydate = layui.laydate; |
| | |
| | | |
| | | // 加载数据 |
| | | var id = getUrlParam('id'); |
| | | $.get('/admin/api/credit/setting/get', { id: id }, function (res) { |
| | | if (res.code === 0) { |
| | | form.val('edit', res.data); |
| | | $.post("/admin/api/credit/setting/get", { |
| | | "id":id |
| | | }, function(response) { |
| | | if (response.code == 0) { |
| | | form.val("edit", response.data); |
| | | } else { |
| | | layer.msg('加载数据失败:' + res.msg); |
| | | layer.msg(response.msg); |
| | | } |
| | | }, 'json').fail(function(jqXHR, textStatus, errorThrown) { |
| | | layer.msg("网络请求失败"); |
| | | }); |
| | | |
| | | |
| | | // 提交表单 |
| | | form.on('submit(submit)', function (data) { |
| | | $.post('/admin/api/credit/setting/update', data.field, function (res) { |
| | | if (res.code === 0) { |
| | | layer.msg('修改成功'); |
| | | parent.layer.close(parent.layer.getFrameIndex(window.name)); |
| | | } else { |
| | | layer.msg('修改失败:' + res.msg); |
| | | } |
| | | }); |
| | | form.on('submit(sure)', function(data) { |
| | | listener(data.field); |
| | | return false; |
| | | }); |
| | | }); |
| | |
| | | <body> |
| | | <table id="table" lay-filter="table"></table> |
| | | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-sm" lay-event="add">添加</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="bar"> |
| | | <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="delete">删除</a> |
| | | </script> |
| | | |
| | | <script> |
| | |
| | | toolbar: '#toolbar', |
| | | cols: [[ |
| | | { field: 'id', title: 'ID', width: 80 }, |
| | | { field: 'type', title: '类型', width: 120 }, |
| | | { field: 'name', title: '名称', width: 150 }, |
| | | { field: 'value', title: '值', width: 150 }, |
| | | { field: 'startTime', title: '开始时间', width: 180 }, |
| | | { field: 'endTime', title: '结束时间', width: 180 }, |
| | | { fixed: 'right', title: '操作', toolbar: '#bar', width: 150 } |
| | | ]], |
| | | page: true |
| | | }); |
| | | |
| | | // 工具栏事件 |
| | | table.on('toolbar(table)', function (obj) { |
| | | if (obj.event === 'add') { |
| | | layer.open({ |
| | | type: 2, |
| | | title: '添加积分设置', |
| | | area: ['600px', '400px'], |
| | | content: 'credit-setting-add.html', |
| | | btn: ['确定', '取消'], |
| | | yes: function (index, layero) { |
| | | var iframeWin = window[layero.find('iframe')[0]['name']]; |
| | | iframeWin.submitForm(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 行操作事件 |
| | | table.on('tool(table)', function (obj) { |
| | | var data = obj.data; |
| | | if (obj.event === 'edit') { |
| | | layer.open({ |
| | | var layerIndex = layer.open({ |
| | | title: "修改积分设置", |
| | | type: 2, |
| | | title: '修改积分设置', |
| | | area: ['600px', '400px'], |
| | | shade: 0.3, |
| | | shadeClose: false, //默认开启遮罩关闭 |
| | | resize: false, //默认重设大小是否 |
| | | //如果不让iframe出现滚动条, |
| | | //可以content: ['http://sentsin.com', 'no'] |
| | | content: 'credit-setting-edit.html?id=' + data.id, |
| | | btn: ['确定', '取消'], |
| | | yes: function (index, layero) { |
| | | var iframeWin = window[layero.find('iframe')[0]['name']]; |
| | | iframeWin.submitForm(); |
| | | yes: function (index) { |
| | | //submit方法为弹框内容中的方法 |
| | | window["layui-layer-iframe" + index].submit(function (res) { |
| | | console.log(res); |
| | | let fdata = { |
| | | id: data.id |
| | | }; |
| | | for (let key in res) { |
| | | if (key.indexOf(".") >= 0) { |
| | | let k1 = key.split(".")[0]; |
| | | let k2 = key.split(".")[1]; |
| | | if (k1 in fdata) { |
| | | } else { |
| | | fdata[k1] = {}; |
| | | } |
| | | fdata[k1][k2] = res[key]; |
| | | } else { |
| | | fdata[key] = res[key] |
| | | } |
| | | } |
| | | for (let key in fdata) { |
| | | console.log(typeof (fdata[key])) |
| | | if (typeof (fdata[key]) == 'object') { |
| | | fdata[key] = JSON.stringify(fdata[key]); |
| | | } |
| | | } |
| | | console.log(fdata); |
| | | try { |
| | | var index = layer.load(1); |
| | | $.post('/admin/api/credit/setting/update', fdata, function (res) { |
| | | layer.close(index); |
| | | if (res.code === 0) { |
| | | layer.close(layerIndex); |
| | | layer.msg('修改成功'); |
| | | } else { |
| | | layer.msg('修改失败:' + res.msg); |
| | | } |
| | | },'json').fail(function(jqXHR, textStatus, errorThrown) { |
| | | layer.msg("网络请求失败"); |
| | | layer.close(index); |
| | | }); |
| | | } catch (e) { |
| | | console.log(e); |
| | | } |
| | | }); |
| | | }, |
| | | cancel: function () { |
| | | } |
| | | }); |
| | | } else if (obj.event === 'delete') { |
| | | layer.confirm('确定删除该积分设置吗?', function (index) { |
| | | $.post('/admin/api/credit/setting/delete', { id: data.id }, function (res) { |
| | | if (res.code === 0) { |
| | | layer.msg('删除成功'); |
| | | table.reload('table'); |
| | | } else { |
| | | layer.msg('删除失败:' + res.msg); |
| | | } |
| | | }); |
| | | }); |
| | | |
| | | |
| | | } |
| | | }); |
| | | }); |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" |
| | | content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>积分汇率设置</title> |
| | | <link rel="stylesheet" type="text/css" href="layui/css/layui.css"/> |
| | | <link rel="stylesheet" type="text/css" href="css/admin.css"/> |
| | | </head> |
| | | |
| | | <body> |
| | | <div class="page-content-wrap"> |
| | | <form class="layui-form" action="" lay-filter='search'> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <input type="text" name="key" id="key" placeholder="按汇率类型搜索" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="search" id="search"><i |
| | | class="layui-icon layui-icon-search"></i>搜索 |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <div class="layui-form" id="table-list"> |
| | | <table id="table" lay-filter="table"></table> |
| | | </div> |
| | | </div> |
| | | |
| | | <script src="layui/layui.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="js/http_api.js"></script> |
| | | <script type="text/html" id="bar"> |
| | | <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> |
| | | </script> |
| | | <script> |
| | | layui.use(['form', 'jquery', 'layer', 'table', 'laydate'], function () { |
| | | var table = layui.table; |
| | | var form = layui.form; |
| | | var $ = layui.jquery; |
| | | |
| | | let table_option = { |
| | | elem: '#table', |
| | | url: '/admin/api/credit/exchangeRate/list', // 数据接口 |
| | | parseData: function (res) { |
| | | return { |
| | | "code": res.code, // 解析接口状态 |
| | | "msg": res.msg, // 解析提示文本 |
| | | "count": res.data.count, // 解析数据长度 |
| | | "data": res.data.list // 解析数据列表 |
| | | }; |
| | | }, |
| | | page: true, // 开启分页 |
| | | cols: [ |
| | | [ |
| | | {field: 'id', title: 'ID', width: 100, fixed: 'left'}, |
| | | {field: 'exchangeType', title: '兑换类型', width: 150}, |
| | | {field: 'rate', title: '汇率', width: 150}, |
| | | { fixed: 'right', title: '操作', toolbar: '#bar', width: 150 } |
| | | ] |
| | | ] |
| | | }; |
| | | |
| | | // 初始化表格 |
| | | let tableIns = table.render(table_option); |
| | | |
| | | // 监听搜索 |
| | | form.on('submit(search)', function (data) { |
| | | tableIns.reload({ |
| | | where: data.field, |
| | | page: {curr: 1} |
| | | }); |
| | | return false; |
| | | }); |
| | | |
| | | // 编辑积分汇率 |
| | | |
| | | // 行操作事件 |
| | | table.on('tool(table)', function (obj) { |
| | | var data = obj.data; |
| | | if (obj.event === 'edit') { |
| | | var layerIndex = layer.open({ |
| | | title: "修改积分汇率", |
| | | type: 2, |
| | | area: ['600px', '400px'], |
| | | shade: 0.3, |
| | | shadeClose: false, //默认开启遮罩关闭 |
| | | resize: false, //默认重设大小是否 |
| | | //如果不让iframe出现滚动条, |
| | | //可以content: ['http://sentsin.com', 'no'] |
| | | content: 'exchange-rate-update.html?id=' + data.id, |
| | | btn: ['确定', '取消'], |
| | | yes: function (index) { |
| | | //submit方法为弹框内容中的方法 |
| | | window["layui-layer-iframe" + index].submit(function (res) { |
| | | console.log(res); |
| | | let fdata = { |
| | | id: data.id |
| | | }; |
| | | for (let key in res) { |
| | | if (key.indexOf(".") >= 0) { |
| | | let k1 = key.split(".")[0]; |
| | | let k2 = key.split(".")[1]; |
| | | if (k1 in fdata) { |
| | | } else { |
| | | fdata[k1] = {}; |
| | | } |
| | | fdata[k1][k2] = res[key]; |
| | | } else { |
| | | fdata[key] = res[key] |
| | | } |
| | | } |
| | | for (let key in fdata) { |
| | | console.log(typeof (fdata[key])) |
| | | if (typeof (fdata[key]) == 'object') { |
| | | fdata[key] = JSON.stringify(fdata[key]); |
| | | } |
| | | } |
| | | console.log(fdata); |
| | | delete fdata["exchangeType"] |
| | | try { |
| | | var index = layer.load(1); |
| | | $.post('/admin/api/credit/exchangeRate/update', fdata, function (res) { |
| | | layer.close(index); |
| | | if (res.code === 0) { |
| | | layer.close(layerIndex); |
| | | layer.msg('修改成功'); |
| | | tableIns.reload({ |
| | | where: data.field, |
| | | page: {curr: 1} |
| | | }); |
| | | } else { |
| | | layer.msg('修改失败:' + res.msg); |
| | | } |
| | | },'json').fail(function(jqXHR, textStatus, errorThrown) { |
| | | layer.msg("网络请求失败"); |
| | | layer.close(index); |
| | | }); |
| | | } catch (e) { |
| | | console.log(e); |
| | | } |
| | | }); |
| | | }, |
| | | cancel: function () { |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | |
| | | }); |
| | | </script> |
| | | </body> |
| | | |
| | | </html> |
File was renamed from src/main/resources/static/admin/credit/exchange-rate-update.html |
| | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">兑换类型:</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="exchangeType" required lay-verify="required"> |
| | | <option value="NEW_USER_EXCHANGE">新人兑换</option> |
| | | <option value="GENERAL_EXCHANGE">一般兑换</option> |
| | | <select name="exchangeType" required lay-verify="required" readonly="readonly"> |
| | | <option value="新人兑换">新人兑换</option> |
| | | <option value="一般兑换">一般兑换</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">开始时间:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="startTime" required lay-verify="required" placeholder="请选择开始时间" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">结束时间:</label> |
| | | <div class="layui-input-inline"> |
| | | <input type="text" name="endTime" required lay-verify="required" placeholder="请选择结束时间" autocomplete="off" |
| | | class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-form-item"> |
| | | <div class="layui-form-item" style="display: none"> |
| | | <div class="layui-input-block"> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="sure">确定</button> |
| | | <button class="layui-btn layui-btn-normal" lay-submit lay-filter="sure" id="sure">确定</button> |
| | | </div> |
| | | </div> |
| | | </form> |
| | |
| | | <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="js/http_api.js"></script> |
| | | <script> |
| | | var listener; |
| | | |
| | | function submit(callback) { |
| | | //暂存回调方法 |
| | | listener = callback; |
| | | //表单提交按钮 |
| | | $("#sure").click(); |
| | | } |
| | | |
| | | layui.use(['form', 'laydate'], function () { |
| | | var form = layui.form; |
| | | var laydate = layui.laydate; |
| | | |
| | | // 初始化日期选择器 |
| | | laydate.render({elem: 'input[name=startTime]', type: 'datetime'}); |
| | | laydate.render({elem: 'input[name=endTime]', type: 'datetime'}); |
| | | // laydate.render({elem: 'input[name=startTime]', type: 'datetime'}); |
| | | // laydate.render({elem: 'input[name=endTime]', type: 'datetime'}); |
| | | |
| | | // 获取当前ID并填充表单 |
| | | let id = http_util.getQueryString("id"); |
| | |
| | | } |
| | | |
| | | // 提交表单 |
| | | form.on('submit(sure)', function (data) { |
| | | parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引 |
| | | parent.layer.closeAll(); // 再执行关闭 |
| | | parent.location.reload(); // 刷新父页面 |
| | | form.on('submit(sure)', function(data) { |
| | | listener(data.field); |
| | | return false; |
| | | }); |
| | | }); |
| | |
| | | <dd><a href="javascript:;" data-url="order-list.html" data-id='30' data-text="订单列表"><span class="l-line"></span>订单列表</a></dd> |
| | | </dl> |
| | | </li> |
| | | |
| | | <li class="layui-nav-item"> |
| | | <a href="javascript:;"><i class="iconfont"></i>积分系统</a> |
| | | <dl class="layui-nav-child"> |
| | | <dd><a href="javascript:;" data-url="credit-exchange-record-list.html" data-id='73' data-text="兑换记录"><span class="l-line"></span>兑换记录</a></dd> |
| | | <dd><a href="javascript:;" data-url="credit-setting-list.html" data-id='70' data-text="积分设置"><span class="l-line"></span>积分设置</a></dd> |
| | | <dd><a href="javascript:;" data-url="exchange-rate-list.html" data-id='71' data-text="积分汇率"><span class="l-line"></span>积分汇率</a></dd> |
| | | <dd><a href="javascript:;" data-url="credit-record-list.html" data-id='72' data-text="积分记录"><span class="l-line"></span>积分记录</a></dd> |
| | | </dl> |
| | | </li> |
| | | |
| | | <li class="layui-nav-item"> |
| | | <a href="javascript:;"><i class="iconfont"></i>系统设置</a> |
| | | <dl class="layui-nav-child"> |