【修复】修复当新增或者删除会员等级后,【签到设置】连续签到规则数据错误,累计签到设置保存无效的问题。

This commit is contained in:
大灰灰
2022-10-16 01:39:22 +08:00
parent bb3a7d885a
commit 82644f4e2f
11 changed files with 67 additions and 153 deletions

View File

@@ -1,16 +1,19 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text.Json.Nodes;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.Filter;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Helper;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq;
using SqlSugar;
namespace CoreCms.Net.Web.Admin.Controllers.Shop
@@ -63,10 +66,38 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
var userGrade = await _coreCmsUserGradeServices.QueryAsync();
//连续签到规则
var continuousCheckInRules = await _coreCmsContinuousCheckInRulesServices.GetCaChe();
var continuousCheckInRules = await _coreCmsContinuousCheckInRulesServices.GetDataWidthChild();
//制作新数据,防止出现
JArray newDetails = new JArray();
if (continuousCheckInRules.Any())
{
foreach (var item in continuousCheckInRules)
{
JArray di = new JArray();
var newUserGrand = userGrade;
foreach (var itemGrade in newUserGrand)
{
JObject diItem = new JObject();
diItem.Add("grand", JObject.FromObject(itemGrade));
var details = item.details.Find(p => p.userGradeId == itemGrade.id);
if (details != null)
{
diItem.Add("details", JObject.FromObject(details));
}
di.Add(diItem);
}
newDetails.Add(di);
}
}
//累计签到规则
var cumulativeCheckInRules = await _coreCmsCumulativeCheckInRulesServices.GetCaChe();
var cumulativeCheckInRules = await _coreCmsCumulativeCheckInRulesServices.QueryAsync(true, true);
jm.data = new
{
@@ -74,6 +105,7 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
filesStorageOptionsType,
userGrade,
continuousCheckInRules,
newDetails,
cumulativeCheckInRules
};
@@ -133,11 +165,12 @@ namespace CoreCms.Net.Web.Admin.Controllers.Shop
}
//先清理掉数据,因为是配置数据,可直接删除添加新的
var doEnpty = await _coreCmsCumulativeCheckInRulesServices.DeleteAsync(p => p.id > 0);
var doEnpty = await _coreCmsCumulativeCheckInRulesServices.DeleteAsync(p => p.id > 0, true);
//插入新的数据
var insertCount = await _coreCmsCumulativeCheckInRulesServices.InsertAsync(entity.entity, true);
var insertCount = await _coreCmsCumulativeCheckInRulesServices.InsertAsync(entity.entity);
jm.code = 0;
jm.msg = "保存成功";
return jm;

View File

@@ -76,7 +76,6 @@
<div class="layui-form-mid layui-word-aux">清除连续签到次数</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="save">保存更改</button>
@@ -103,24 +102,18 @@
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
<legend>会员组设置</legend>
</fieldset>
{{# layui.each(item.details, function(indexChild, itemChild){ }}
{{# layui.each(d.data.newDetails[index], function(indexChild, itemChild){ }}
<div class="layui-form-item listItems">
<input type="hidden" id="detailsId" name="continuousCheckInRules.details[{{index}}].id[{{indexChild}}]" value="{{itemChild.id}}">
<input type="hidden" id="detailsUserGradeId" name="continuousCheckInRules.details[{{index}}].userGradeId[{{indexChild}}]" value="{{itemChild.userGradeId}}">
<input type="hidden" id="detailsRuleId" name="continuousCheckInRules.details[{{index}}].ruleId[{{indexChild}}]" value="{{itemChild.ruleId}}">
<label class="layui-form-label">
{{# layui.each(d.data.userGrade, function(indexGrade, itemGrade){ }}
{{# if(itemChild.userGradeId === itemGrade.id){ }}
{{ itemGrade.title }}
{{# } }}
{{# }); }}
</label>
<input type="hidden" id="detailsId" name="continuousCheckInRules.details[{{index}}].id[{{indexChild}}]" value="{{ itemChild.details ? itemChild.details.id : 0}}">
<input type="hidden" id="detailsUserGradeId" name="continuousCheckInRules.details[{{index}}].userGradeId[{{indexChild}}]" value="{{itemChild.grand.id}}">
<input type="hidden" id="detailsRuleId" name="continuousCheckInRules.details[{{index}}].ruleId[{{indexChild}}]" value="{{ item.id }}">
<label class="layui-form-label">{{ itemChild.grand.title }}</label>
<div class="layui-input-inline layui-inline-2">
<input type="number" id="detailsNum" name="continuousCheckInRules.details[{{index}}].num[{{indexChild}}]" value="{{itemChild.num}}" lay-verify="required|number" autocomplete="off" placeholder="" class="layui-input">
<input type="number" id="detailsNum" name="continuousCheckInRules.details[{{index}}].num[{{indexChild}}]" value="{{itemChild.details ? itemChild.details.num : 0}}" lay-verify="required|number" autocomplete="off" placeholder="" class="layui-input">
</div>
<div class="layui-input-inline layui-inline-4">
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="1" title="积分" {{itemChild.type==1?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="2" title="余额" {{itemChild.type==2?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="1" title="积分" {{(itemChild.details && itemChild.details.type==1)|| !itemChild.details?'checked="checked"':''}}>
<input type="radio" id="detailsType" name="continuousCheckInRules.details[{{index}}].type[{{indexChild}}]" value="2" title="余额" {{itemChild.details && itemChild.details.type==2?'checked="checked"':''}}>
</div>
</div>
{{# }); }}
@@ -193,7 +186,6 @@
</div>
</script>
<script id="continuousCheckInBoxTmp" type="text/html">
<div class="continuousCheckInBox coreshop-solid" data-id="{{d.index}}">
<div class="layui-form-item">
@@ -264,6 +256,7 @@
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d); }
indexData = d.data;
layui.use(['admin', 'form', 'coreHelper', 'element', 'table', 'util', 'laytpl', 'table', 'laydate'], function () {
var $ = layui.$
, setter = layui.setter
@@ -278,7 +271,6 @@
, router = layui.router()
, search = router.search;
//时间选择器
laydate.render({
elem: '#checkInAlertTime'
@@ -304,7 +296,6 @@
index: continuousCheckInRulesCount,
userGrade: d.data.userGrade
};
console.log(data);
var getTpl = continuousCheckInBoxTmp.innerHTML;
laytpl(getTpl).render(data, function (html) {
$("#continuousCheckInRulesCount").before(html);
@@ -326,7 +317,7 @@
//重置排序
function resetContinuousCheckInRulesInputNameID() {
$.each($("#continuousCheckInBox .continuousCheckInBox"), function (i, item) {
var oldIndex = $(this).attr('data-id');
//var oldIndex = $(this).attr('data-id');
$(this).attr('data-id', i);
$(this).find("#id").attr("name", "continuousCheckInRules.id[" + i + "]");
$(this).find("#days").attr("name", "continuousCheckInRules.days[" + i + "]");
@@ -510,7 +501,6 @@
});
});
form.render();
});
}