mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:13:26 +08:00
# 2022-02-25
### 1.3.7 开源社区版: 无 ### 0.2.5 会员专业版: 【新增】数据库sku表【CoreCmsProducts】增加"赠送积分"【points】字段。 【新增】商品sku新增赠送积分功能,订单结算后可根据单品的积分与数量进行计算。与订单积分按照金额比例获取并存。 【新增】前端新增是否显示单品赠送积分功能,勾选显示,将在商品详情,购物车等界面显示购买此物品赠送多少积分的效果。 【优化】前端使用显示“积分”两个字的界面,替换为后台设置的名称。 【修复】修复form表单录入编辑界面属性值重复的问题。#I4V1PE 【修复】修复商品添加和编辑界面存在的错别字。#I4V1OR 【修复】修复广告位设置商品,弹出选择框不显示图片的问题。#I4V1EO
This commit is contained in:
@@ -231,12 +231,12 @@ namespace CoreCms.Net.Configuration
|
||||
/// <summary>
|
||||
/// 购物返积分
|
||||
/// </summary>
|
||||
[Description("购物返积分")]
|
||||
[Description("购物返")]
|
||||
PointTypeRebate = 2,
|
||||
/// <summary>
|
||||
/// 购物使用积分
|
||||
/// </summary>
|
||||
[Description("购物使用积分")]
|
||||
[Description("购物使用")]
|
||||
PointTypeDiscount = 3,
|
||||
/// <summary>
|
||||
/// 后台编辑
|
||||
@@ -246,7 +246,7 @@ namespace CoreCms.Net.Configuration
|
||||
/// <summary>
|
||||
/// 奖励积分
|
||||
/// </summary>
|
||||
[Description("奖励积分")]
|
||||
[Description("奖励")]
|
||||
PointTypePrize = 5,
|
||||
/// <summary>
|
||||
/// 积分兑换
|
||||
|
||||
@@ -256,6 +256,17 @@ namespace CoreCms.Net.Configuration
|
||||
/// </summary>
|
||||
public const string PointShowExchangePrice = "pointShowExchangePrice";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 积分赠送模式
|
||||
/// </summary>
|
||||
public const string PointGetModel = "pointGetModel";
|
||||
|
||||
/// <summary>
|
||||
/// 显示积分赠送信息
|
||||
/// </summary>
|
||||
public const string PointShowPoint = "pointShowPoint";
|
||||
|
||||
/// <summary>
|
||||
/// 订单积分折现比例
|
||||
/// </summary>
|
||||
|
||||
@@ -117,9 +117,14 @@ namespace CoreCms.Net.Configuration
|
||||
di.Add(SystemSettingConstVars.ContinuitySignAdditional, new DictionaryKeyValues() { sKey = "连续签到追加", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.SignMostPoint, new DictionaryKeyValues() { sKey = "单日最大奖励", sValue = "10" });
|
||||
di.Add(SystemSettingConstVars.PointSwitch, new DictionaryKeyValues() { sKey = "开启积分功能", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.PointExchangeModel, new DictionaryKeyValues() { sKey = "积分模式", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.PointExchangeModel, new DictionaryKeyValues() { sKey = "积分兑换模式", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.PointShowName, new DictionaryKeyValues() { sKey = "积分昵称", sValue = "积分" });
|
||||
di.Add(SystemSettingConstVars.PointShowExchangePrice, new DictionaryKeyValues() { sKey = "显示积分组合兑换价", sValue = "1" });
|
||||
|
||||
di.Add(SystemSettingConstVars.PointGetModel, new DictionaryKeyValues() { sKey = "积分赠送模式", sValue = "1" });
|
||||
di.Add(SystemSettingConstVars.PointShowPoint, new DictionaryKeyValues() { sKey = "显示积分赠送信息", sValue = "1" });
|
||||
|
||||
|
||||
di.Add(SystemSettingConstVars.PointDiscountedProportion, new DictionaryKeyValues() { sKey = "订单积分折现比例", sValue = "100" });
|
||||
di.Add(SystemSettingConstVars.OrdersPointProportion, new DictionaryKeyValues() { sKey = "订单积分使用比例", sValue = "10" });
|
||||
di.Add(SystemSettingConstVars.OrdersRewardProportion, new DictionaryKeyValues() { sKey = "订单积分奖励比例", sValue = "1" });
|
||||
|
||||
@@ -77,6 +77,13 @@ namespace CoreCms.Net.Model.Entities
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public decimal pointsDeduction { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 赠送积分
|
||||
/// </summary>
|
||||
[Display(Name = "赠送积分")]
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public int points { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 图集
|
||||
/// </summary>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Web: https://www.corecms.net
|
||||
* Author: 大灰灰
|
||||
* Email: jianweie@163.com
|
||||
* CreateTime: 2022/2/22 0:43:08
|
||||
* CreateTime: 2022/2/24 23:51:11
|
||||
* Description: 暂无
|
||||
***********************************************************************/
|
||||
|
||||
@@ -136,6 +136,18 @@ namespace CoreCms.Net.Model.Entities
|
||||
public System.Decimal pointsDeduction { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 赠送积分
|
||||
/// </summary>
|
||||
[Display(Name = "赠送积分")]
|
||||
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
|
||||
public System.Int32 points { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 重量(千克)
|
||||
/// </summary>
|
||||
|
||||
@@ -187,6 +187,7 @@ namespace CoreCms.Net.Repository
|
||||
obj.freezeStock = 0;
|
||||
obj.spesDesc = p.spesDesc;
|
||||
obj.pointsDeduction = p.pointsDeduction;
|
||||
obj.points = p.points;
|
||||
obj.isDefalut = p.isDefalut;
|
||||
obj.isDel = false;
|
||||
products.Add(obj);
|
||||
@@ -235,6 +236,7 @@ namespace CoreCms.Net.Repository
|
||||
obj.freezeStock = 0;
|
||||
obj.spesDesc = oldObj.spesDesc;
|
||||
obj.pointsDeduction = oldObj.pointsDeduction;
|
||||
obj.points = oldObj.points;
|
||||
obj.isDefalut = true;
|
||||
obj.isDel = false;
|
||||
if (string.IsNullOrEmpty(obj.images) || !obj.images.Contains(".jpg"))
|
||||
@@ -517,6 +519,7 @@ namespace CoreCms.Net.Repository
|
||||
p.price = child.price;
|
||||
p.spesDesc = child.spesDesc;
|
||||
p.pointsDeduction = child.pointsDeduction;
|
||||
p.points = child.points;
|
||||
p.stock = child.stock;
|
||||
p.weight = child.weight;
|
||||
|
||||
@@ -611,6 +614,7 @@ namespace CoreCms.Net.Repository
|
||||
obj.freezeStock = 0;
|
||||
obj.spesDesc = p.spesDesc;
|
||||
obj.pointsDeduction = p.pointsDeduction;
|
||||
obj.points = p.points;
|
||||
obj.isDefalut = p.isDefalut;
|
||||
obj.images = p.images;
|
||||
if (string.IsNullOrEmpty(p.images) || !p.images.Contains(".jpg"))
|
||||
@@ -666,6 +670,7 @@ namespace CoreCms.Net.Repository
|
||||
obj.stock = newObj.stock;
|
||||
obj.weight = newObj.weight;
|
||||
obj.pointsDeduction = newObj.pointsDeduction;
|
||||
obj.points = newObj.points;
|
||||
obj.images = newObj.images;
|
||||
obj.isDefalut = true;
|
||||
obj.isDel = false;
|
||||
@@ -696,6 +701,7 @@ namespace CoreCms.Net.Repository
|
||||
obj.stock = newObj.stock;
|
||||
obj.weight = newObj.weight;
|
||||
obj.pointsDeduction = newObj.pointsDeduction;
|
||||
obj.points = newObj.points;
|
||||
obj.freezeStock = 0;
|
||||
obj.spesDesc = "";
|
||||
obj.isDefalut = true;
|
||||
@@ -918,6 +924,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -981,6 +988,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -1054,6 +1062,7 @@ namespace CoreCms.Net.Repository
|
||||
costprice = pd.costprice,
|
||||
mktprice = pd.mktprice,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
weight = pd.weight
|
||||
@@ -1105,6 +1114,7 @@ namespace CoreCms.Net.Repository
|
||||
costprice = pd.costprice,
|
||||
mktprice = pd.mktprice,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
weight = pd.weight
|
||||
@@ -1180,6 +1190,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.With(SqlWith.NoLock)
|
||||
@@ -1233,6 +1244,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -1304,6 +1316,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.With(SqlWith.NoLock)
|
||||
@@ -1357,6 +1370,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -1426,6 +1440,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.With(SqlWith.NoLock)
|
||||
@@ -1479,6 +1494,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -1551,6 +1567,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.With(SqlWith.NoLock)
|
||||
@@ -1604,6 +1621,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
@@ -1680,6 +1698,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.With(SqlWith.NoLock)
|
||||
@@ -1733,6 +1752,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = pd.stock,
|
||||
freezeStock = pd.freezeStock,
|
||||
pointsDeduction = pd.pointsDeduction,
|
||||
points = pd.points,
|
||||
weight = pd.weight
|
||||
})
|
||||
.MergeTable()
|
||||
|
||||
@@ -128,6 +128,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = product.stock,
|
||||
freezeStock = product.freezeStock,
|
||||
pointsDeduction = product.pointsDeduction,
|
||||
points = product.points,
|
||||
spesDesc = product.spesDesc,
|
||||
isDefalut = product.isDefalut,
|
||||
images = product.images,
|
||||
@@ -160,6 +161,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = product.stock,
|
||||
freezeStock = product.freezeStock,
|
||||
pointsDeduction = product.pointsDeduction,
|
||||
points = product.points,
|
||||
spesDesc = product.spesDesc,
|
||||
isDefalut = product.isDefalut,
|
||||
images = product.images,
|
||||
@@ -208,6 +210,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = p.stock,
|
||||
freezeStock = p.freezeStock,
|
||||
pointsDeduction = p.pointsDeduction,
|
||||
points = p.points,
|
||||
spesDesc = p.spesDesc,
|
||||
isDefalut = p.isDefalut,
|
||||
images = p.images,
|
||||
@@ -314,6 +317,7 @@ namespace CoreCms.Net.Repository
|
||||
stock = p.stock,
|
||||
freezeStock = p.freezeStock,
|
||||
pointsDeduction = p.pointsDeduction,
|
||||
points = p.points,
|
||||
spesDesc = p.spesDesc,
|
||||
isDefalut = p.isDefalut,
|
||||
images = p.images,
|
||||
|
||||
@@ -296,7 +296,7 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
jm.msg += "积分核销";
|
||||
var pointLogRes = await _userPointLogServices.SetPoint(userId, 0 - order.point,
|
||||
(int)GlobalEnumVars.UserPointSourceTypes.PointTypeDiscount, "订单" + order.orderId + "使用积分");
|
||||
(int)GlobalEnumVars.UserPointSourceTypes.PointTypeDiscount, "订单" + order.orderId + "使用");
|
||||
if (pointLogRes.status == false)
|
||||
{
|
||||
return pointLogRes;
|
||||
|
||||
@@ -106,21 +106,50 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
using (var container = _serviceProvider.CreateScope())
|
||||
{
|
||||
var _settingServices = container.ServiceProvider.GetService<ICoreCmsSettingServices>();
|
||||
var allConfigs = await _settingServices.GetConfigDictionaries();
|
||||
|
||||
var ordersRewardProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersRewardProportion).ObjectToInt();
|
||||
if (ordersRewardProportion > 0)
|
||||
var settingServices = container.ServiceProvider.GetService<ICoreCmsSettingServices>();
|
||||
var orderItemServices = container.ServiceProvider.GetService<ICoreCmsOrderItemServices>();
|
||||
var productsServices = container.ServiceProvider.GetService<ICoreCmsProductsServices>();
|
||||
var allConfigs = await settingServices.GetConfigDictionaries();
|
||||
//获取积分获取模式
|
||||
var pointGetModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointGetModel).ObjectToInt();
|
||||
if (pointGetModel == 1)
|
||||
{
|
||||
var point = Convert.ToInt32(money / ordersRewardProportion);
|
||||
await SetPoint(userId, point, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeRebate,
|
||||
"订单:" + orderId + " 积分奖励");
|
||||
|
||||
//如果是订单获取,直接走金额计算。
|
||||
var ordersRewardProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.OrdersRewardProportion).ObjectToInt();
|
||||
if (ordersRewardProportion > 0)
|
||||
{
|
||||
var point = Convert.ToInt32(money / ordersRewardProportion);
|
||||
await SetPoint(userId, point, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeRebate,
|
||||
"订单:" + orderId + " 奖励");
|
||||
}
|
||||
}
|
||||
else if (pointGetModel == 2)
|
||||
{
|
||||
//如果是单品获取模式,则找订单商品详情
|
||||
var orderItems = await orderItemServices.QueryListByClauseAsync(p => p.orderId == orderId);
|
||||
if (orderItems.Any())
|
||||
{
|
||||
var productIds = orderItems.Select(p => p.productId).ToList();
|
||||
var products = await productsServices.QueryListByClauseAsync(p => productIds.Contains(p.id));
|
||||
var point = 0;
|
||||
foreach (var item in orderItems)
|
||||
{
|
||||
var pd = products.Find(p => p.id == item.productId);
|
||||
if (pd != null && pd.points > 0)
|
||||
{
|
||||
point += pd.points * item.nums;
|
||||
}
|
||||
}
|
||||
if (point > 0)
|
||||
{
|
||||
await SetPoint(userId, point, (int)GlobalEnumVars.UserPointSourceTypes.PointTypeRebate,
|
||||
"订单:" + orderId + " 奖励");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 判断今天是否签到
|
||||
/// </summary>
|
||||
|
||||
@@ -111,6 +111,14 @@
|
||||
{{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ item.price - item.pointsDeduction}}元
|
||||
</view>
|
||||
</view>
|
||||
<view class="coreshop-flex coreshop-flex-direction-row coreshop-font-11 coreshop-margin-top-5" v-if="pointSwitch==1 && pointGetModel==2 && pointShowPoint==1 && item.points > 0">
|
||||
<view>
|
||||
购买赠送:
|
||||
</view>
|
||||
<view class="coreshop-text-red">
|
||||
{{item.points}}{{ pointShowName}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="coreshop-btn-all">
|
||||
@@ -121,7 +129,7 @@
|
||||
<view class="coreshop-emptybox" v-else>
|
||||
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/data.png'" icon-size="150" text="当前列表为空" mode="list"></u-empty>
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
|
||||
<!-- 列表图片 -->
|
||||
@@ -320,6 +328,8 @@
|
||||
pointDiscountedProportion() { return this.$store.state.config.pointDiscountedProportion },
|
||||
pointExchangeModel() { return this.$store.state.config.pointExchangeModel },
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
pointGetModel() { return this.$store.state.config.pointGetModel },
|
||||
pointShowPoint() { return this.$store.state.config.pointShowPoint },
|
||||
},
|
||||
methods: {
|
||||
listGrid() {
|
||||
|
||||
@@ -25,11 +25,15 @@
|
||||
<view class="coreshop-flex coreshop-flex-wrap coreshop-flex-direction-row">
|
||||
<view class="coreshop-text-through coreshop-padding-bottom-5">原价¥{{ product.mktprice || '0.00'}}</view>
|
||||
<view class="coreshop-margin-left-10">{{ goodsInfo.buyCount || '0' }} 人已购买</view>
|
||||
<view class="coreshop-margin-left-10" v-if="pointSwitch==1 && pointGetModel==2 && pointShowPoint==1 && product.points > 0">购买赠送:{{product.points}}{{ pointShowName}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
<view class="coreshop-text-through coreshop-padding-bottom-5">原价¥{{ product.mktprice || '0.00'}}</view>
|
||||
<view>{{ goodsInfo.buyCount || '0' }} 人已购买</view>
|
||||
<view class="coreshop-flex coreshop-flex-wrap coreshop-flex-direction-row">
|
||||
<view>{{ goodsInfo.buyCount || '0' }} 人已购买</view>
|
||||
<view class="coreshop-margin-left-10" v-if="pointSwitch==1 && pointGetModel==2 && pointShowPoint==1 && product.points > 0">购买赠送:{{product.points}}{{ pointShowName}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="coreshop-text-right coreshop-share-right">
|
||||
@@ -520,6 +524,8 @@
|
||||
pointDiscountedProportion() { return this.$store.state.config.pointDiscountedProportion },
|
||||
pointExchangeModel() { return this.$store.state.config.pointExchangeModel },
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
pointGetModel() { return this.$store.state.config.pointGetModel },
|
||||
pointShowPoint() { return this.$store.state.config.pointShowPoint },
|
||||
shopName() {
|
||||
return this.$store.state.config.shopName;
|
||||
},
|
||||
|
||||
@@ -28,7 +28,12 @@
|
||||
</view>
|
||||
|
||||
<view class="coreshop-flex coreshop-flex-direction-row coreshop-justify-between coreshop-margin-top-10">
|
||||
<text class="cart-shoppingcard-goods-price">¥{{item.products.price}}</text>
|
||||
<view class="coreshop-flex coreshop-flex-direction-row coreshop-align-center">
|
||||
<text class="cart-shoppingcard-goods-price">¥{{item.products.price}}</text>
|
||||
<text class="coreshop-font-10 coreshop-margin-left-5" v-if="pointSwitch==1 && pointGetModel==2 && pointShowPoint==1 && item.products.points > 0">
|
||||
(送 {{item.products.points}}{{ pointShowName}})
|
||||
</text>
|
||||
</view>
|
||||
<view class="cart-shoppingcard-goods-number">
|
||||
<u-number-box buttonSize="24" integer :name="index" :value="item.nums" ref="index" @change="toNumberChange" :step="1" :min="1" :max="item.products.stock"></u-number-box>
|
||||
</view>
|
||||
@@ -85,7 +90,6 @@
|
||||
<text class="coreshop-font-12">{{ pointShowName}}兑换价:</text>
|
||||
<text class="coreshop-font-12 coreshop-text-red">{{pointShowText}}</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="cart-shoppingcard-count coreshop-flex coreshop-flex-direction-row coreshop-justify-between coreshop-align-center coreshop-margin-right-5" v-else>
|
||||
<text class="cart-text">合计 :</text>
|
||||
@@ -137,6 +141,8 @@
|
||||
pointDiscountedProportion() { return this.$store.state.config.pointDiscountedProportion },
|
||||
pointExchangeModel() { return this.$store.state.config.pointExchangeModel },
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
pointGetModel() { return this.$store.state.config.pointGetModel },
|
||||
pointShowPoint() { return this.$store.state.config.pointShowPoint },
|
||||
},
|
||||
methods: {
|
||||
//数组转字符串
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<u-toast ref="uToast" /><u-no-network></u-no-network>
|
||||
<u-navbar leftIcon="search" title="会员中心" safeAreaInsetTop fixed placeholder @leftClick="goSearch"></u-navbar>
|
||||
|
||||
<view class="headBox coreshop-bg-red">
|
||||
<view class="headBox coreshop-bg-green">
|
||||
<!--标题栏-->
|
||||
<!--小程序端不显示-->
|
||||
<!--用户信息-->
|
||||
@@ -46,7 +46,7 @@
|
||||
<text class="coreshop-font-12">等级:{{ userInfo.gradeName }}</text>
|
||||
</view>
|
||||
<view class="coreshop-font-12 coreshop-flex-direction-row">
|
||||
<text class="text-border-x">积分: {{ userInfo.point }}</text>
|
||||
<text class="text-border-x">{{pointShowName}}: {{ userInfo.point }}</text>
|
||||
<text>余额: {{ userInfo.balance }}</text>
|
||||
</view>
|
||||
</view>
|
||||
@@ -76,7 +76,7 @@
|
||||
<view class="user-info-num-box">
|
||||
|
||||
<u-row customStyle="margin-bottom: 10px">
|
||||
<u-col span="3" @tap="navigateToHandle('/pages/member/history/index')" textAlign="center">
|
||||
<u-col span="3" @tap="navigateToHandle('/pages/member/history/index')" textAlign="center">
|
||||
<view class="coreshop-font-18" v-if="!hasLogin">-</view>
|
||||
<view class="coreshop-font-18" v-else>{{ userInfo.footPrintCount }}</view>
|
||||
<text class="coreshop-font-11">足迹</text>
|
||||
@@ -289,7 +289,7 @@
|
||||
showItem: true
|
||||
},
|
||||
myIntegral: {
|
||||
name: '我的积分',
|
||||
name: '我的' + this.$store.state.config.pointShowName,
|
||||
icon: 'integral',
|
||||
router: '/pages/member/integral/index',
|
||||
showItem: true
|
||||
@@ -414,7 +414,8 @@
|
||||
set(val) {
|
||||
this.$store.commit('userInfo', val);
|
||||
}
|
||||
}
|
||||
},
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
},
|
||||
methods: {
|
||||
goAgentPanel() {
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
<u-sticky customNavHeight="48">
|
||||
<view class="integral-top coreshop-bg-red coreshop-flex coreshop-flex-direction-column coreshop-justify-center">
|
||||
<view class="coreshop-font-md text-white coreshop-margin-bottom-10">
|
||||
可用积分
|
||||
可用{{pointShowName}}
|
||||
</view>
|
||||
<view class="coreshop-font-xl coreshop-text-white coreshop-margin-bottom-10">
|
||||
{{ pointList.length ? pointList[0].balance : 0}}
|
||||
</view>
|
||||
<view class="coreshop-font-xs coreshop-text-gray">
|
||||
截止{{ nowDate }}可用积分
|
||||
截止{{ nowDate }}可用{{pointShowName}}
|
||||
</view>
|
||||
</view>
|
||||
</u-sticky>
|
||||
@@ -43,7 +43,7 @@
|
||||
</view>
|
||||
<!-- 无数据时默认显示 -->
|
||||
<view class="coreshop-emptybox" v-else>
|
||||
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/history.png'" icon-size="150" text="暂无积分记录" mode="list"></u-empty>
|
||||
<u-empty :icon="$globalConstVars.apiFilesUrl+'/static/images/empty/history.png'" icon-size="150" text="暂无记录" mode="list"></u-empty>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@@ -69,7 +69,8 @@
|
||||
computed: {
|
||||
nowDate() {
|
||||
return this.$u.timeFormat(Math.round(new Date().getTime() / 1000))
|
||||
}
|
||||
},
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
},
|
||||
methods: {
|
||||
userPointLog() {
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="coreshop-text-black title-view" v-if="orderInfo.pointMoney > 0">
|
||||
<view class="title">积分优惠</view>
|
||||
<view class="title">{{pointShowName}}优惠</view>
|
||||
<view class="coreshop-text-right">
|
||||
<text class="coreshop-margin-right-10">-</text>
|
||||
<text class="coreshop-text-price">{{ orderInfo.pointMoney }}</text>
|
||||
@@ -495,6 +495,7 @@
|
||||
orderCancelTime() {
|
||||
return this.$store.state.config.orderCancelTime || 60;
|
||||
},
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
},
|
||||
methods: {
|
||||
// 获取订单详情
|
||||
|
||||
@@ -131,6 +131,14 @@
|
||||
{{pointDiscountedProportion * item.products.pointsDeduction * item.nums }}{{ pointShowName}}+{{(item.products.price - item.products.pointsDeduction)*item.nums }}元
|
||||
</view>
|
||||
</view>
|
||||
<view class="coreshop-flex coreshop-flex-direction-row coreshop-font-13 coreshop-margin-top-10" v-if="pointSwitch==1 && pointGetModel==2 && pointShowPoint==1 && item.products.points > 0">
|
||||
<view>
|
||||
购买将赠送:
|
||||
</view>
|
||||
<view class="coreshop-text-red">
|
||||
{{item.products.points * item.nums }}{{ pointShowName}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
@@ -228,7 +236,7 @@
|
||||
<text class="coreshop-text-right">- {{ cartData.couponPromotionMoney || '0'}}</text>
|
||||
</view>
|
||||
<view class="coreshop-text-black item-view">
|
||||
<view class="u-line-1 title">积分抵扣</view>
|
||||
<view class="u-line-1 title">{{ pointShowName}}抵扣</view>
|
||||
<text class="coreshop-text-right">- {{ cartData.pointExchangeMoney || '0'}}</text>
|
||||
</view>
|
||||
<view class="coreshop-text-black item-view">
|
||||
@@ -869,6 +877,8 @@
|
||||
pointDiscountedProportion() { return this.$store.state.config.pointDiscountedProportion },
|
||||
pointExchangeModel() { return this.$store.state.config.pointExchangeModel },
|
||||
pointShowName() { return this.$store.state.config.pointShowName },
|
||||
pointGetModel() { return this.$store.state.config.pointGetModel },
|
||||
pointShowPoint() { return this.$store.state.config.pointShowPoint },
|
||||
},
|
||||
watch: {
|
||||
// 监听数据状态(切换收货地址, 是否使用优惠券, 是否使用积分) 重新请求订单数据
|
||||
|
||||
@@ -86,10 +86,10 @@
|
||||
{ field: 'id', title: '商品ID', width: 80, sort: false },
|
||||
{ field: 'name', title: '商品名称', sort: false },
|
||||
{
|
||||
field: 'images', title: '图集', width: 100, sort: false,
|
||||
field: 'image', title: '图集', width: 100, sort: false,
|
||||
templet: function (d) {
|
||||
if (d.images) {
|
||||
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + d.images + '")><image style="max-width:28px;max-height:28px;" src="' + d.images + '" /></a>';
|
||||
if (d.image) {
|
||||
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + d.image + '")><image style="max-width:28px;max-height:28px;" src="' + d.image + '" /></a>';
|
||||
} else {
|
||||
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + setter.noImagePicUrl + '")><image style="max-width:30px;max-height:30px;" src="' + setter.noImagePicUrl + '" /></a>';
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
<div class="layui-form-item">
|
||||
<label for="description" class="layui-form-label">表单描述</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="description" id="description" lay-verify="required|verifydescription" placeholder="请输入内容" class="layui-textarea" lay-reqText="请输入表单描述" placeholder="请输入表单描述"></textarea>
|
||||
<textarea name="description" id="description" lay-verify="required|verifydescription" class="layui-textarea" lay-reqText="请输入表单描述" placeholder="请输入表单描述"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -525,7 +525,6 @@
|
||||
});
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyname: [/^[\S]{0,100}$/, '表单名称最大只允许输入100位字符,且不能出现空格'],
|
||||
verifydescription: [/^(.|\n){0,500}$/, '表单描述最大只允许输入255位字符,且不能出现空格'],
|
||||
verifyheadTypeValue: [/^[\S]{0,200}$/, '表单头值最大只允许输入200位字符,且不能出现空格'],
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
<div class="layui-form-item">
|
||||
<label for="description" class="layui-form-label">表单描述</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="description" id="description" lay-verify="required|verifydescription" placeholder="请输入内容" class="layui-textarea" lay-reqText="请输入表单描述" placeholder="请输入表单描述">{{d.params.data.model.description || '' }}</textarea>
|
||||
<textarea name="description" id="description" lay-verify="required|verifydescription" class="layui-textarea" lay-reqText="请输入表单描述" placeholder="请输入表单描述">{{d.params.data.model.description || '' }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -543,6 +543,7 @@
|
||||
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyname: [/^[\S]{0,100}$/, '表单名称最大只允许输入100位字符,且不能出现空格'],
|
||||
verifydescription: [/^(.|\n){0,500}$/, '表单描述最大只允许输入255位字符,且不能出现空格'],
|
||||
verifyheadTypeValue: [/^[\S]{0,200}$/, '表单头值最大只允许输入200位字符,且不能出现空格'],
|
||||
|
||||
@@ -306,7 +306,8 @@
|
||||
<th>货号</th>
|
||||
<th>SKU</th>
|
||||
<th>重量(克)</th>
|
||||
<th>低分最大<br />可抵金额</th>
|
||||
<th>赠送积分</th>
|
||||
<th>积分最大<br />可抵金额</th>
|
||||
<th>库存</th>
|
||||
<th><i class="required-color">*</i>销售价</th>
|
||||
<th>成本价</th>
|
||||
@@ -345,13 +346,16 @@
|
||||
{{item.spesDesc}}
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[weight][]" value="{{item.weight}}" placeholder="重量" class="layui-input layui-inline-1">
|
||||
<input type="number" name="product[weight][]" value="{{item.weight}}" placeholder="重量" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="product[points][]" value="{{item.points}}" placeholder="积分" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[pointsDeduction][]" value="{{item.pointsDeduction}}" placeholder="金额" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td class="have-add-td">
|
||||
<input type="text" name="product[stock][]" value="{{item.stock}}" placeholder="库存" class="layui-input layui-inline-1 goods-stock">
|
||||
<input type="number" name="product[stock][]" value="{{item.stock}}" placeholder="库存" class="layui-input layui-inline-1 goods-stock">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[price][]" value="{{item.price}}" placeholder="销售价" class="layui-input layui-inline-1">
|
||||
@@ -513,6 +517,7 @@
|
||||
spesDesc: "",
|
||||
stock: 1000,
|
||||
pointsDeduction: 0,
|
||||
points: 0,
|
||||
weight: 0,
|
||||
price: 0,
|
||||
costprice: 0,
|
||||
@@ -1435,6 +1440,7 @@
|
||||
productModel.levelTwo = field['product[levelTwo][' + i + ']'];
|
||||
productModel.levelThree = field['product[levelThree][' + i + ']'];
|
||||
productModel.pointsDeduction = field['product[pointsDeduction][' + i + ']'];
|
||||
productModel.points = field['product[points][' + i + ']'];
|
||||
products.push(productModel);
|
||||
}
|
||||
//会员价格模型
|
||||
|
||||
@@ -299,7 +299,8 @@
|
||||
<th>SKU</th>
|
||||
<th>冻结库存</th>
|
||||
<th>重量(克)</th>
|
||||
<th>低分最大<br />可抵金额</th>
|
||||
<th>赠送积分</th>
|
||||
<th>积分最大<br />可抵金额</th>
|
||||
<th>库存</th>
|
||||
<th><i class="required-color">*</i>销售价</th>
|
||||
<th>成本价</th>
|
||||
@@ -341,13 +342,16 @@
|
||||
{{item.freezeStock}}
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[weight][]" value="{{item.weight}}" placeholder="重量" class="layui-input layui-inline-1">
|
||||
<input type="number" name="product[weight][]" value="{{item.weight}}" placeholder="重量" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<input type="number" name="product[points][]" value="{{item.points}}" placeholder="积分" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[pointsDeduction][]" value="{{item.pointsDeduction}}" placeholder="金额" class="layui-input layui-inline-1">
|
||||
</td>
|
||||
<td class="have-add-td">
|
||||
<input type="text" name="product[stock][]" value="{{item.stock}}" placeholder="库存" class="layui-input layui-inline-1 goods-stock">
|
||||
<input type="number" name="product[stock][]" value="{{item.stock}}" placeholder="库存" class="layui-input layui-inline-1 goods-stock">
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="product[price][]" value="{{item.price}}" placeholder="销售价" class="layui-input layui-inline-1">
|
||||
@@ -615,6 +619,7 @@
|
||||
spesDesc: "",
|
||||
stock: 1000,
|
||||
pointsDeduction: 0,
|
||||
points: 0,
|
||||
weight: 0,
|
||||
price: 0,
|
||||
costprice: 0,
|
||||
@@ -1543,6 +1548,7 @@
|
||||
productModel.levelTwo = field['product[levelTwo][' + i + ']'];
|
||||
productModel.levelThree = field['product[levelThree][' + i + ']'];
|
||||
productModel.pointsDeduction = field['product[pointsDeduction][' + i + ']'];
|
||||
productModel.points = field['product[points][' + i + ']'];
|
||||
products.push(productModel);
|
||||
}
|
||||
//会员价格模型
|
||||
|
||||
@@ -448,10 +448,10 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['pointExchangeModel']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-7">
|
||||
<input type="radio" lay-filter="pointExchangeModel" name="pointExchangeModel" value="1" title="全局计算" {{d.data.configs['pointExchangeModel']['sValue']==="1" ? 'checked':''}}>
|
||||
<input type="radio" lay-filter="pointExchangeModel" name="pointExchangeModel" value="2" title="单品计算" {{d.data.configs['pointExchangeModel']['sValue']==="2" ? 'checked':''}}>
|
||||
<input type="radio" lay-filter="pointExchangeModel" name="pointExchangeModel" value="1" title="全局兑换" {{d.data.configs['pointExchangeModel']['sValue']==="1" ? 'checked':''}}>
|
||||
<input type="radio" lay-filter="pointExchangeModel" name="pointExchangeModel" value="2" title="单品兑换" {{d.data.configs['pointExchangeModel']['sValue']==="2" ? 'checked':''}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">【全局计算】是指直接对订单按照使用比例进行计算,【单品计算】是指根据单个商品下sku独立设置的最高可抵扣金额进行计算。</div>
|
||||
<div class="layui-form-mid layui-word-aux">【全局兑换】是指直接对订单按照使用比例进行计算,【单品兑换】是指根据单个商品下sku独立设置的最高可抵扣金额进行计算。</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['pointShowExchangePrice']['sKey']}}:</label>
|
||||
@@ -461,6 +461,24 @@
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">勾选显示,将在商品详情,购物车等界面显示积分加价格的效果。</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['pointGetModel']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-7">
|
||||
<input type="radio" lay-filter="pointGetModel" name="pointGetModel" value="1" title="订单获取" {{d.data.configs['pointGetModel']['sValue']==="1" ? 'checked':''}}>
|
||||
<input type="radio" lay-filter="pointGetModel" name="pointGetModel" value="2" title="单品获取" {{d.data.configs['pointGetModel']['sValue']==="2" ? 'checked':''}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">【订单获取】通过订单的比例,【单品获取】。</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['pointShowPoint']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-7">
|
||||
<input type="radio" lay-filter="pointShowPoint" name="pointShowPoint" value="1" title="显示" {{d.data.configs['pointShowPoint']['sValue']==="1" ? 'checked':''}}>
|
||||
<input type="radio" lay-filter="pointShowPoint" name="pointShowPoint" value="2" title="不显示" {{d.data.configs['pointShowPoint']['sValue']==="2" ? 'checked':''}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">勾选显示,将在商品详情,购物车等界面显示积分获取的效果。</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['pointShowName']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
@@ -480,14 +498,14 @@
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="number" name="ordersPointProportion" value="{{d.data.configs['ordersPointProportion']['sValue']}}" lay-verify="title|number" autocomplete="off" placeholder="请输入正整数" class="layui-input" max="100" min="0">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">(%)单个订单积分折现最大百分比【仅全局计算下有小,单品计算模式直接根据单品的设置】</div>
|
||||
<div class="layui-form-mid layui-word-aux">(%)单个订单积分折现最大百分比【仅全局兑换模式有效,单品兑换模式直接根据单品的设置】</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['ordersRewardProportion']['sKey']}}:</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="number" name="ordersRewardProportion" value="{{d.data.configs['ordersRewardProportion']['sValue']}}" lay-verify="title|number" autocomplete="off" placeholder="请输入正整数" class="layui-input" min="0">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">订单多少人民币奖励1个积分</div>
|
||||
<div class="layui-form-mid layui-word-aux">订单多少人民币奖励1个积分【积分赠送模式仅订单获取模式下有效,单品获取模式直接根据单品的设置积分计算】</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">{{d.data.configs['signPointType']['sKey']}}:</label>
|
||||
|
||||
@@ -111,6 +111,10 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
||||
var pointDiscountedProportion = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointDiscountedProportion).ObjectToInt(); //积分折现比例
|
||||
var pointShowName = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointShowName); //积分昵称
|
||||
var pointShowExchangePrice = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointShowExchangePrice).ObjectToInt(); //积分昵称
|
||||
|
||||
var pointGetModel = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointGetModel).ObjectToInt(); //积分昵称
|
||||
var pointShowPoint = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.PointShowPoint).ObjectToInt(); //积分昵称
|
||||
|
||||
var statistics = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.StatisticsCode); //获取统计代码
|
||||
var recommendKeysStr = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.RecommendKeys);
|
||||
var recommendKeys = !string.IsNullOrEmpty(recommendKeysStr) ? recommendKeysStr.Split("|") : new string[] { }; //搜索推荐关键字
|
||||
@@ -181,6 +185,8 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
||||
pointShowName,
|
||||
pointShowExchangePrice,
|
||||
pointDiscountedProportion,
|
||||
pointGetModel,
|
||||
pointShowPoint,
|
||||
statistics,
|
||||
recommendKeys,
|
||||
invoiceSwitch,
|
||||
|
||||
BIN
数据库/MySql/20220225/coreshop20220225完整脚本.rar
Normal file
BIN
数据库/MySql/20220225/coreshop20220225完整脚本.rar
Normal file
Binary file not shown.
1
数据库/MySql/20220225/升级脚本.sql
Normal file
1
数据库/MySql/20220225/升级脚本.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE CoreCmsProducts ADD COLUMN points int DEFAULT 0 NOT NULL COMMENT '赠送积分' AFTER pointsDeduction;
|
||||
@@ -1,3 +1,6 @@
|
||||
2022-02-25
|
||||
【新增】表【CoreCmsProducts】增加【赠送积分points】字段
|
||||
|
||||
2022-02-24
|
||||
【新增】表【CoreCmsProducts】增加【积分可抵扣金额pointsDeduction】字段
|
||||
|
||||
|
||||
BIN
数据库/SqlServer/20220225/20220225完整数据库带演示商品.rar
Normal file
BIN
数据库/SqlServer/20220225/20220225完整数据库带演示商品.rar
Normal file
Binary file not shown.
4
数据库/SqlServer/20220225/升级脚本.sql
Normal file
4
数据库/SqlServer/20220225/升级脚本.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
ALTER TABLE [dbo].[CoreCmsProducts]
|
||||
ADD [points] INT DEFAULT 0 NOT NULL;
|
||||
|
||||
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'<EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'CoreCmsProducts', @level2type = N'COLUMN', @level2name = N'points';
|
||||
@@ -1,3 +1,6 @@
|
||||
2022-02-25
|
||||
【新增】表【CoreCmsProducts】增加【赠送积分points】字段
|
||||
|
||||
2022-02-24
|
||||
【新增】表【CoreCmsProducts】增加【积分可抵扣金额pointsDeduction】字段
|
||||
|
||||
|
||||
Reference in New Issue
Block a user