mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:43:26 +08:00
# 2022-03-29第2次更新
### 1.4.2开源社区版: 【新增】代码生成器Controller模板的导出excel请求增加decimal类型的处理。#I4WCX1 ### 0.3.3 专业版: 【新增】后台新增支付单查询功能,实现支付单微信反馈支付数据,防止出现极端情况下,导致的支付数据回调失败而影响订单业务。#I4ZRMR 【新增】增加邀请用户注册赠送积分功能,用户主动设置自己的上级将给上级赠送积分的功能。#I4Y1WY 【新增】后台新增发票上传功能,前端小程序新增发票下载功能。【发票表增加一个字段】#I4ZYT3 【新增】商家中心订单查询,增加发票下载查看功能。 【新增】代码生成器Controller模板的导出excel请求增加decimal类型的处理。#I4WCX1 【新增】后台商品管理sku增加原图上传功能,与裁剪上传配合,用户可根据需求选择上传模式。 【优化】调整前端帮助文档默认传值问题,未指定具体分类情况下,默认取第一个栏目数据。 【修复】修复页面设计上传图片后不进行预览的问题。 【修复】修复页面设计【服务商品】前端样式错乱的问题。
This commit is contained in:
@@ -268,6 +268,11 @@ namespace CoreCms.Net.Configuration
|
||||
/// </summary>
|
||||
[Description("取消订单返还")]
|
||||
PointCanCelOrder = 8,
|
||||
/// <summary>
|
||||
/// 邀请用户注册
|
||||
/// </summary>
|
||||
[Description("邀请用户注册")]
|
||||
PointTypeInviterUser = 9,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -135,6 +135,11 @@ namespace CoreCms.Net.Configuration
|
||||
/// </summary>
|
||||
public const string ShowInviterInfo = "showInviterInfo";
|
||||
|
||||
/// <summary>
|
||||
/// 邀请用户赠送积分
|
||||
/// </summary>
|
||||
public const string InviterUserIntegral = "inviterUserIntegral";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 分销层级1,2层
|
||||
|
||||
@@ -96,11 +96,14 @@ namespace CoreCms.Net.Configuration
|
||||
di.Add(SystemSettingConstVars.DistributionGoods, new DictionaryKeyValues() { sKey = "购买商品成为分销商", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.DistributionGoodsId, new DictionaryKeyValues() { sKey = "购买商品成为分销商指定商品序列号", sValue = "0" });
|
||||
|
||||
//邀请好友
|
||||
di.Add(SystemSettingConstVars.CommissionType, new DictionaryKeyValues() { sKey = "佣金类型", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.CommissionFirst, new DictionaryKeyValues() { sKey = "一级佣金", sValue = "0" });
|
||||
di.Add(SystemSettingConstVars.CommissionSecond, new DictionaryKeyValues() { sKey = "二级佣金", sValue = "0" });
|
||||
di.Add(SystemSettingConstVars.CommissionThird, new DictionaryKeyValues() { sKey = "三级佣金", sValue = "0" });
|
||||
|
||||
di.Add(SystemSettingConstVars.InviterUserIntegral, new DictionaryKeyValues() { sKey = "赠送积分", sValue = "0" });
|
||||
|
||||
//代理功能
|
||||
di.Add(SystemSettingConstVars.IsOpenAgent, new DictionaryKeyValues() { sKey = "是否开启代理模块", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.IsShowAgentPortal, new DictionaryKeyValues() { sKey = "前端显示入口", sValue = "1" });
|
||||
|
||||
@@ -352,6 +352,18 @@ namespace CoreCms.Net.Services
|
||||
}
|
||||
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUser() { parentId = superiorId }, p => p.id == userId);
|
||||
|
||||
//增加上级积分
|
||||
if (bl)
|
||||
{
|
||||
var allConfigs = await _settingServices.GetConfigDictionaries();
|
||||
var inviterUserIntegral = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral).ObjectToInt(); //是否开启积分功能
|
||||
if (inviterUserIntegral > 0)
|
||||
{
|
||||
await _userPointLogServices.SetPoint(superiorId, inviterUserIntegral, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分");
|
||||
}
|
||||
}
|
||||
|
||||
jm.status = bl;
|
||||
jm.msg = bl ? "填写邀请码成功!" : "填写邀请码失败!";
|
||||
return jm;
|
||||
@@ -628,6 +640,17 @@ namespace CoreCms.Net.Services
|
||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||
return jm;
|
||||
}
|
||||
|
||||
if (userId > 0 && entity.invitecode > 0 && userInfo.parentId > 0)
|
||||
{
|
||||
var allConfigs = await _settingServices.GetConfigDictionaries();
|
||||
var inviterUserIntegral = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.InviterUserIntegral).ObjectToInt(); //是否开启积分功能
|
||||
if (inviterUserIntegral > 0)
|
||||
{
|
||||
await _userPointLogServices.SetPoint(userId, inviterUserIntegral, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeInviterUser, "发展用户:" + userId + "赠送积分");
|
||||
}
|
||||
|
||||
}
|
||||
userInfo = await _dal.QueryByIdAsync(userId);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
<view class="img-list-item-r">
|
||||
<view class="coreshop-font-14 coreshop-text-bold u-line-1">{{item.title}}</view>
|
||||
<view class="coreshop-font-12 u-line-2 coreshop-margin-top-10 coreshop-margin-bottom-10">{{item.description}}</view>
|
||||
<view class="item-c">
|
||||
<view class="red-price">¥{{item.money}}</view>
|
||||
<view class="coreshop-flex-direction-row coreshop-justify-between">
|
||||
<view>
|
||||
<view class="coreshop-font-30 coreshop-flex-direction-row" v-if="item.status == 0 && item.lastTime > 0">
|
||||
剩余:<u-count-down :time="item.lastTime" format="HH:mm:ss"></u-count-down>
|
||||
<view class="item-c coreshop-flex coreshop-justify-between">
|
||||
<view class="red-price coreshop-justify-between">
|
||||
¥{{item.money}}
|
||||
</view>
|
||||
<view class="goods-salesvolume red-price" v-if="item.status == 1">已结束</view>
|
||||
<view class="goods-salesvolume red-price" v-if="item.status == 2">售罄</view>
|
||||
<view class="coreshop-flex coreshop-flex-direction-row coreshop-justify-between">
|
||||
<view class="red-price coreshop-font-15 coreshop-flex-direction-row" v-if="item.status == 0 && item.lastTime > 0">
|
||||
<u-count-down :time="item.lastTime" format="HH:mm:ss"></u-count-down>
|
||||
</view>
|
||||
<u-icon name="shopping-cart" color="#2979ff" size="20" class="btnCart"></u-icon>
|
||||
<view class="coreshop-font-12 red-price" v-if="item.status == 3">已结束</view>
|
||||
<view class="coreshop-font-12 red-price" v-if="item.status == 2">即将开始</view>
|
||||
<u-icon name="shopping-cart" color="#2979ff" size="25" class="btnCart"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -1162,12 +1162,14 @@
|
||||
支付单表
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsBillPaymentsServices)">
|
||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.#ctor(Microsoft.AspNetCore.Hosting.IWebHostEnvironment,CoreCms.Net.IServices.ICoreCmsBillPaymentsServices,Essensoft.Paylink.WeChatPay.V2.IWeChatPayClient,Microsoft.Extensions.Options.IOptions{Essensoft.Paylink.WeChatPay.WeChatPayOptions})">
|
||||
<summary>
|
||||
构造函数
|
||||
</summary>
|
||||
<param name="webHostEnvironment"></param>
|
||||
<param name="coreCmsBillPaymentsServices"></param>
|
||||
<param name="client"></param>
|
||||
<param name="optionsAccessor"></param>
|
||||
</member>
|
||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.GetPageList">
|
||||
<summary>
|
||||
@@ -1201,6 +1203,13 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillPaymentsController.DoRefresh(CoreCms.Net.Model.FromBody.FMStringId)">
|
||||
<summary>
|
||||
更新微信支付数据
|
||||
</summary>
|
||||
<param name="entity"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:CoreCms.Net.Web.Admin.Controllers.CoreCmsBillRefundController">
|
||||
<summary>
|
||||
退款单表
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<img class="coreshop-upload-img" id="viewImgBoximageUrl" src="{{ layui.setter.noImagePicUrl }}">
|
||||
<button type="button" class="layui-btn" id="upBtn" lay-active="doCropperImg">上传图片</button>
|
||||
<button type="button" class="layui-btn" id="getUpLoadBtn">上传图片</button>
|
||||
<div id="viewTextBox"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
//普通图片上传
|
||||
var uploadInst = upload.render({
|
||||
elem: '#upBtn'
|
||||
elem: '#getUpLoadBtn'
|
||||
, url: layui.setter.apiUrl + 'Api/Tools/UploadFiles'
|
||||
, before: function (obj) {
|
||||
obj.preview(function (index, file, result) {
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
<input type="checkbox" id="product[{{item.spesDesc}}][isDefalut]" name="product[isDefalut][]" title="是否默认" {{item.isDefalut? 'checked="true"':''}} value="{{item.isDefalut? '1':'0'}}" class="isdefalut" lay-filter="isdefalut">
|
||||
</td>
|
||||
<td class="spec-td">
|
||||
<div class="spec_image">
|
||||
<div class="spec_image" style="display: inline-block;width: 60px;overflow: hidden;">
|
||||
<div class="spec_image_item">
|
||||
<!--<div class="del-img">
|
||||
x
|
||||
@@ -336,7 +336,14 @@
|
||||
</div>
|
||||
<input type="hidden" id="productImagesInput" name="product[images][]" value="{{item.images}}">
|
||||
</div>
|
||||
<a class="layui-btn layui-btn-xs upSpecImage" href="javascript:;">上传图片</a>
|
||||
<div style="display: inline-block;width: 60px;overflow: hidden;">
|
||||
<p>
|
||||
<a class="layui-btn layui-btn-xs upSpecImage" style="margin-bottom: 10px;" href="javascript:;">裁剪上传</a>
|
||||
</p>
|
||||
<p>
|
||||
<a class="layui-btn layui-btn-xs upSpecImageOriginal" href="javascript:;">原图上传</a>
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[sn][]" value="{{item.sn}}" placeholder="货号" class="layui-input layui-inline-3">
|
||||
@@ -824,8 +831,9 @@
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
var item = $(_that);
|
||||
item.prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
} else {
|
||||
@@ -837,6 +845,33 @@
|
||||
});
|
||||
form.render();
|
||||
});
|
||||
//SKU原图上传
|
||||
$('.upSpecImageOriginal').click(function () {
|
||||
var _that = this;
|
||||
admin.popup({
|
||||
title: '原图上传',
|
||||
area: ['800px', '300px'],
|
||||
id: 'LAY-app-CoreCmsCommon-GetNoticeIds',
|
||||
success: function (layero, indexChild) {
|
||||
layui.view(this.id).render('common/getUpLoad', null).done(function () {
|
||||
layui.form.on('submit(LAY-app-getUpLoad-submit)',
|
||||
function (data) {
|
||||
console.log(data);
|
||||
var item = $(_that);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(data.field.imagesUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", data.field.imagesUrl);
|
||||
layer.close(indexChild);
|
||||
});
|
||||
});
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-getUpLoad-submit").click();
|
||||
}
|
||||
});
|
||||
form.render();
|
||||
});
|
||||
|
||||
|
||||
//表单验证规则
|
||||
form.verify({
|
||||
@@ -1265,8 +1300,8 @@
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
var item = $(_that);
|
||||
item.prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
@@ -1278,6 +1313,32 @@
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//SKU原图上传
|
||||
$('.upSpecImageOriginal').click(function () {
|
||||
var _that = this;
|
||||
admin.popup({
|
||||
title: '原图上传',
|
||||
area: ['800px', '300px'],
|
||||
id: 'LAY-app-CoreCmsCommon-GetNoticeIds',
|
||||
success: function (layero, indexChild) {
|
||||
layui.view(this.id).render('common/getUpLoad', null).done(function () {
|
||||
layui.form.on('submit(LAY-app-getUpLoad-submit)',
|
||||
function (data) {
|
||||
console.log(data);
|
||||
var item = $(_that);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(data.field.imagesUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", data.field.imagesUrl);
|
||||
layer.close(indexChild);
|
||||
});
|
||||
});
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-getUpLoad-submit").click();
|
||||
}
|
||||
});
|
||||
});
|
||||
form.render();
|
||||
layer.msg("Sku列表获取成功");
|
||||
} else {
|
||||
|
||||
@@ -320,7 +320,7 @@
|
||||
<input type="checkbox" id="product[{{item.spesDesc}}][isDefalut]" name="product[isDefalut][]" title="是否默认" {{item.isDefalut? 'checked="true"':''}} value="{{item.isDefalut? '1':'0'}}" class="isdefalut" lay-filter="isdefalut">
|
||||
</td>
|
||||
<td class="spec-td">
|
||||
<div class="spec_image">
|
||||
<div class="spec_image" style="display: inline-block;width: 60px;overflow: hidden;">
|
||||
<div class="spec_image_item">
|
||||
<!--<div class="del-img">
|
||||
x
|
||||
@@ -329,7 +329,14 @@
|
||||
</div>
|
||||
<input type="hidden" id="productImagesInput" name="product[images][]" value="{{item.images}}">
|
||||
</div>
|
||||
<a class="layui-btn layui-btn-xs upSpecImage" href="javascript:;">上传图片</a>
|
||||
<div style="display: inline-block;width: 60px;overflow: hidden;">
|
||||
<p>
|
||||
<a class="layui-btn layui-btn-xs upSpecImage" style="margin-bottom: 10px;" href="javascript:;">裁剪上传</a>
|
||||
</p>
|
||||
<p>
|
||||
<a class="layui-btn layui-btn-xs upSpecImageOriginal" href="javascript:;">原图上传</a>
|
||||
</p>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[sn][]" value="{{item.sn}}" placeholder="货号" class="layui-input layui-inline-3">
|
||||
@@ -889,8 +896,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
//SKU缩略图上传
|
||||
$('.upSpecImage').click(function () {
|
||||
var _that = this;
|
||||
@@ -902,8 +907,8 @@
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
var item = $(_that);
|
||||
item.prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
@@ -916,6 +921,32 @@
|
||||
});
|
||||
form.render();
|
||||
});
|
||||
//SKU原图上传
|
||||
$('.upSpecImageOriginal').click(function () {
|
||||
var _that = this;
|
||||
admin.popup({
|
||||
title: '原图上传',
|
||||
area: ['800px', '300px'],
|
||||
id: 'LAY-app-CoreCmsCommon-GetNoticeIds',
|
||||
success: function (layero, indexChild) {
|
||||
layui.view(this.id).render('common/getUpLoad', null).done(function () {
|
||||
layui.form.on('submit(LAY-app-getUpLoad-submit)',
|
||||
function (data) {
|
||||
console.log(data);
|
||||
var item = $(_that);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(data.field.imagesUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", data.field.imagesUrl);
|
||||
layer.close(indexChild);
|
||||
});
|
||||
});
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-getUpLoad-submit").click();
|
||||
}
|
||||
});
|
||||
form.render();
|
||||
});
|
||||
|
||||
//表单验证规则
|
||||
form.verify({
|
||||
@@ -1368,8 +1399,8 @@
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
var item = $(_that);
|
||||
item.prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(res.data.fileUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", res.data.fileUrl);
|
||||
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
@@ -1381,6 +1412,33 @@
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//SKU原图上传
|
||||
$('.upSpecImageOriginal').click(function () {
|
||||
var _that = this;
|
||||
admin.popup({
|
||||
title: '原图上传',
|
||||
area: ['800px', '300px'],
|
||||
id: 'LAY-app-CoreCmsCommon-GetNoticeIds',
|
||||
success: function (layero, indexChild) {
|
||||
layui.view(this.id).render('common/getUpLoad', null).done(function () {
|
||||
layui.form.on('submit(LAY-app-getUpLoad-submit)',
|
||||
function (data) {
|
||||
console.log(data);
|
||||
var item = $(_that);
|
||||
item.parent().parent().prev().find('#productImagesInput').val(data.field.imagesUrl);
|
||||
item.parent().parent().prev().find('#productImagesSrc').attr("src", data.field.imagesUrl);
|
||||
layer.close(indexChild);
|
||||
});
|
||||
});
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-getUpLoad-submit").click();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
layer.msg("Sku列表获取成功");
|
||||
} else {
|
||||
layer.msg(e.msg, { icon: 5, anim: 6 });
|
||||
|
||||
@@ -626,6 +626,16 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<blockquote class="layui-elem-quote">
|
||||
邀请一个好友注册成功,赠送多少积分
|
||||
</blockquote>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['inviterUserIntegral']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="text" name="inviterUserIntegral" value="{{d.data.configs['inviterUserIntegral']['sValue']}}" lay-verify="title|money" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"> </label>
|
||||
<div class="layui-input-block">
|
||||
|
||||
Reference in New Issue
Block a user