mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 15:53:26 +08:00
【新增】后台提现审核功能增加【企业付款到零钱】【企业付款到银行卡】
This commit is contained in:
@@ -320,15 +320,31 @@ namespace CoreCms.Net.Configuration
|
||||
/// <summary>
|
||||
/// 用户提现状态[对应CoreCmsUserTocash表的status字段]
|
||||
/// </summary>
|
||||
public enum UserTocashTypes
|
||||
public enum UserTocashStatus
|
||||
{
|
||||
[Description("待审核")]
|
||||
待审核 = 1,
|
||||
[Description("提现成功")]
|
||||
提现成功 = 2,
|
||||
[Description("提现失败")]
|
||||
提现失败 = 3
|
||||
提现失败 = 3,
|
||||
[Description("提现异常")]
|
||||
提现异常 = 4
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 用户提现状态[对应CoreCmsUserTocash表的type字段]
|
||||
/// </summary>
|
||||
public enum UserTocashType
|
||||
{
|
||||
[Description("银行线下转账")]
|
||||
银行线下转账 = 0,
|
||||
[Description("微信付款到零钱")]
|
||||
微信付款到零钱 = 1,
|
||||
[Description("微信付款到银行卡")]
|
||||
微信付款到银行卡 = 2
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Order订单相关=========================================================
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
using System;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.Model.Entities;
|
||||
using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
@@ -46,7 +47,7 @@ namespace CoreCms.Net.IServices
|
||||
/// <param name="id"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <returns></returns>
|
||||
Task<WebApiCallBack> Examine(int id = 0, int status = 0);
|
||||
Task<WebApiCallBack> Examine(int id = 0, int status = 0, int type = (int)GlobalEnumVars.UserTocashType.银行线下转账);
|
||||
|
||||
|
||||
#region 重写根据条件查询分页数据
|
||||
|
||||
@@ -3,11 +3,13 @@
|
||||
* ProjectName: 核心内容管理系统
|
||||
* Web: https://www.corecms.net
|
||||
* Author: 大灰灰
|
||||
* Email: jianweie@163.com
|
||||
* CreateTime: 2021-06-08 22:14:59
|
||||
* Email: jianweie@163.com
|
||||
* CreateTime: 2022/7/4 23:39:39
|
||||
* Description: 暂无
|
||||
***********************************************************************/
|
||||
***********************************************************************/
|
||||
|
||||
using SqlSugar;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace CoreCms.Net.Model.Entities
|
||||
@@ -15,11 +17,10 @@ namespace CoreCms.Net.Model.Entities
|
||||
/// <summary>
|
||||
/// 用户提现记录表
|
||||
/// </summary>
|
||||
[SugarTable("CoreCmsUserTocash",TableDescription = "用户提现记录表")]
|
||||
public partial class CoreCmsUserTocash
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户提现记录表
|
||||
/// 构造函数
|
||||
/// </summary>
|
||||
public CoreCmsUserTocash()
|
||||
{
|
||||
@@ -29,90 +30,144 @@ namespace CoreCms.Net.Model.Entities
|
||||
/// id
|
||||
/// </summary>
|
||||
[Display(Name = "id")]
|
||||
[SugarColumn(ColumnDescription = "id", IsPrimaryKey = true, IsIdentity = true)]
|
||||
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Int32 id { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 用户ID
|
||||
/// </summary>
|
||||
[Display(Name = "用户ID")]
|
||||
[SugarColumn(ColumnDescription = "用户ID")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Int32 userId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提现金额
|
||||
/// </summary>
|
||||
[Display(Name = "提现金额")]
|
||||
[SugarColumn(ColumnDescription = "提现金额")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Decimal money { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 银行名称
|
||||
/// </summary>
|
||||
[Display(Name = "银行名称")]
|
||||
[SugarColumn(ColumnDescription = "银行名称", IsNullable = true)]
|
||||
[StringLength(60, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
||||
[StringLength(maximumLength: 60, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String bankName { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 银行缩写
|
||||
/// </summary>
|
||||
[Display(Name = "银行缩写")]
|
||||
[SugarColumn(ColumnDescription = "银行缩写", IsNullable = true)]
|
||||
[StringLength(12, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
||||
[StringLength(maximumLength: 12, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String bankCode { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 账号地区ID
|
||||
/// </summary>
|
||||
[Display(Name = "账号地区ID")]
|
||||
[SugarColumn(ColumnDescription = "账号地区ID", IsNullable = true)]
|
||||
public System.Int32? bankAreaId { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 开户行
|
||||
/// </summary>
|
||||
[Display(Name = "开户行")]
|
||||
[SugarColumn(ColumnDescription = "开户行", IsNullable = true)]
|
||||
[StringLength(255, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
||||
[StringLength(maximumLength: 255, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String accountBank { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 账户名
|
||||
/// </summary>
|
||||
[Display(Name = "账户名")]
|
||||
[SugarColumn(ColumnDescription = "账户名", IsNullable = true)]
|
||||
[StringLength(60, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
||||
[StringLength(maximumLength: 60, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String accountName { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 卡号
|
||||
/// </summary>
|
||||
[Display(Name = "卡号")]
|
||||
[SugarColumn(ColumnDescription = "卡号", IsNullable = true)]
|
||||
[StringLength(30, ErrorMessage = "【{0}】不能超过{1}字符长度")]
|
||||
[StringLength(maximumLength: 30, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String cardNumber { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提现服务费
|
||||
/// </summary>
|
||||
[Display(Name = "提现服务费")]
|
||||
[SugarColumn(ColumnDescription = "提现服务费")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Decimal withdrawals { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提现状态
|
||||
/// </summary>
|
||||
[Display(Name = "提现状态")]
|
||||
[SugarColumn(ColumnDescription = "提现状态")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Int32 status { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Display(Name = "创建时间")]
|
||||
[SugarColumn(ColumnDescription = "创建时间")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.DateTime createTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
/// </summary>
|
||||
[Display(Name = "更新时间")]
|
||||
[SugarColumn(ColumnDescription = "更新时间", IsNullable = true)]
|
||||
public System.DateTime? updateTime { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提现方式
|
||||
/// </summary>
|
||||
[Display(Name = "提现方式")]
|
||||
[Required(ErrorMessage = "请输入{0}")]
|
||||
|
||||
|
||||
public System.Int32 type { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 反馈结果
|
||||
/// </summary>
|
||||
[Display(Name = "反馈结果")]
|
||||
[StringLength(maximumLength: 100, ErrorMessage = "{0}不能超过{1}字")]
|
||||
|
||||
|
||||
public System.String message { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -140,4 +140,26 @@ namespace CoreCms.Net.Model.FromBody
|
||||
/// </summary>
|
||||
public string propsDate { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class FMUserTocash
|
||||
{
|
||||
/// <summary>
|
||||
/// 提现记录序列
|
||||
/// </summary>
|
||||
public int id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 设置状态
|
||||
/// </summary>
|
||||
public int status { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 提现方式
|
||||
/// </summary>
|
||||
public int type { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,6 +12,7 @@ using System;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Caching.AccressToken;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.IRepository;
|
||||
using CoreCms.Net.IRepository.UnitOfWork;
|
||||
@@ -23,9 +24,17 @@ using CoreCms.Net.Model.ViewModels.Basics;
|
||||
using CoreCms.Net.Model.ViewModels.UI;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using CoreCms.Net.Utility.Helper;
|
||||
using CoreCms.Net.WeChat.Service.HttpClients;
|
||||
using Essensoft.Paylink.WeChatPay;
|
||||
using Essensoft.Paylink.WeChatPay.V2;
|
||||
using Essensoft.Paylink.WeChatPay.V2.Request;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
using Yitter.IdGenerator;
|
||||
|
||||
|
||||
namespace CoreCms.Net.Services
|
||||
@@ -38,22 +47,28 @@ namespace CoreCms.Net.Services
|
||||
private readonly ICoreCmsUserTocashRepository _dal;
|
||||
private readonly IUnitOfWork _unitOfWork;
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ICoreCmsSettingServices _settingServices;
|
||||
private readonly ICoreCmsUserServices _userServices;
|
||||
private readonly ICoreCmsUserBalanceServices _userBalanceServices;
|
||||
private readonly ICoreCmsUserWeChatInfoServices _weChatInfoServices;
|
||||
private readonly IOptions<WeChatPayOptions> _optionsAccessor;
|
||||
private readonly IWeChatPayClient _client;
|
||||
private readonly IHttpContextAccessor _httpContextAccessor;
|
||||
|
||||
|
||||
|
||||
public CoreCmsUserTocashServices(IUnitOfWork unitOfWork, ICoreCmsUserTocashRepository dal,
|
||||
IServiceProvider serviceProvider, ICoreCmsSettingServices settingServices, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices)
|
||||
IServiceProvider serviceProvider, ICoreCmsUserServices userServices, ICoreCmsUserBalanceServices userBalanceServices, ICoreCmsUserWeChatInfoServices weChatInfoServices, IOptions<WeChatPayOptions> optionsAccessor, IWeChatPayClient client, IHttpContextAccessor httpContextAccessor)
|
||||
{
|
||||
this._dal = dal;
|
||||
base.BaseDal = dal;
|
||||
_unitOfWork = unitOfWork;
|
||||
_serviceProvider = serviceProvider;
|
||||
_settingServices = settingServices;
|
||||
_userServices = userServices;
|
||||
_userBalanceServices = userBalanceServices;
|
||||
_weChatInfoServices = weChatInfoServices;
|
||||
_optionsAccessor = optionsAccessor;
|
||||
_client = client;
|
||||
_httpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -134,9 +149,10 @@ namespace CoreCms.Net.Services
|
||||
cashModel.accountBank = bankcardsInfo.accountBank;
|
||||
cashModel.accountName = bankcardsInfo.accountName;
|
||||
cashModel.cardNumber = bankcardsInfo.cardNumber;
|
||||
cashModel.status = (int)GlobalEnumVars.UserTocashTypes.待审核;
|
||||
cashModel.status = (int)GlobalEnumVars.UserTocashStatus.待审核;
|
||||
cashModel.withdrawals = cateMoney;
|
||||
cashModel.createTime = DateTime.Now;
|
||||
cashModel.type = (int)GlobalEnumVars.UserTocashType.银行线下转账;
|
||||
|
||||
var res = await _dal.InsertAsync(cashModel);
|
||||
if (res > 0)
|
||||
@@ -182,7 +198,7 @@ namespace CoreCms.Net.Services
|
||||
{
|
||||
foreach (var item in list)
|
||||
{
|
||||
item.statusName = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.UserTocashTypes>(item.status);
|
||||
item.statusName = EnumHelper.GetEnumDescriptionByValue<GlobalEnumVars.UserTocashStatus>(item.status);
|
||||
item.cardNumber = UserHelper.BankCardNoFormat(item.cardNumber);
|
||||
}
|
||||
}
|
||||
@@ -206,57 +222,156 @@ namespace CoreCms.Net.Services
|
||||
/// <param name="id"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<WebApiCallBack> Examine(int id = 0, int status = 0)
|
||||
public async Task<WebApiCallBack> Examine(int id = 0, int status = 0, int type = (int)GlobalEnumVars.UserTocashType.银行线下转账)
|
||||
{
|
||||
var jm = new WebApiCallBack();
|
||||
|
||||
var info = await _dal.QueryByClauseAsync(p =>
|
||||
p.id == id && p.status == (int)GlobalEnumVars.UserTocashTypes.待审核);
|
||||
var info = await _dal.QueryByClauseAsync(p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
if (info == null)
|
||||
{
|
||||
jm.msg = "没有此记录或不是待审核状态";
|
||||
return jm;
|
||||
}
|
||||
|
||||
if (status > 0)
|
||||
switch (type)
|
||||
{
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now }, p =>
|
||||
p.id == id && p.status == (int)GlobalEnumVars.UserTocashTypes.待审核);
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
if (bl)
|
||||
{
|
||||
//失败给用户退钱到余额
|
||||
if (status == (int)GlobalEnumVars.UserTocashTypes.提现失败)
|
||||
case (int)GlobalEnumVars.UserTocashType.银行线下转账 when status > 0:
|
||||
{
|
||||
var toCashInfo = await _dal.QueryByIdAsync(id);
|
||||
|
||||
// 提现金额 加 服务费返还
|
||||
var newMoney = toCashInfo.money + toCashInfo.withdrawals;
|
||||
var up = await _userServices.UpdateAsync(p => new CoreCmsUser() { balance = p.balance + newMoney }, p => p.id == toCashInfo.userId);
|
||||
if (up)
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
if (bl)
|
||||
{
|
||||
//添加记录
|
||||
var user = await _userServices.QueryByIdAsync(toCashInfo.userId);
|
||||
//失败给用户退钱到余额
|
||||
if (status == (int)GlobalEnumVars.UserTocashStatus.提现失败)
|
||||
{
|
||||
var toCashInfo = await _dal.QueryByIdAsync(id);
|
||||
|
||||
var balance = new CoreCmsUserBalance();
|
||||
balance.type = (int)GlobalEnumVars.UserBalanceSourceTypes.Tocash;
|
||||
balance.userId = toCashInfo.userId;
|
||||
balance.balance = user.balance;
|
||||
balance.createTime = DateTime.Now;
|
||||
balance.memo = UserHelper.GetMemo(balance.type, toCashInfo.money);
|
||||
balance.money = newMoney;
|
||||
balance.sourceId = id.ToString();
|
||||
// 提现金额 加 服务费返还
|
||||
var newMoney = toCashInfo.money + toCashInfo.withdrawals;
|
||||
var up = await _userServices.UpdateAsync(p => new CoreCmsUser() { balance = p.balance + newMoney }, p => p.id == toCashInfo.userId);
|
||||
if (up)
|
||||
{
|
||||
//添加记录
|
||||
var user = await _userServices.QueryByIdAsync(toCashInfo.userId);
|
||||
|
||||
await _userBalanceServices.InsertAsync(balance);
|
||||
var balance = new CoreCmsUserBalance();
|
||||
balance.type = (int)GlobalEnumVars.UserBalanceSourceTypes.Tocash;
|
||||
balance.userId = toCashInfo.userId;
|
||||
balance.balance = user.balance;
|
||||
balance.createTime = DateTime.Now;
|
||||
balance.memo = UserHelper.GetMemo(balance.type, toCashInfo.money);
|
||||
balance.money = newMoney;
|
||||
balance.sourceId = id.ToString();
|
||||
|
||||
await _userBalanceServices.InsertAsync(balance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||
jm.status = false;
|
||||
case (int)GlobalEnumVars.UserTocashType.银行线下转账:
|
||||
jm.msg = GlobalErrorCodeVars.Code10000;
|
||||
jm.status = false;
|
||||
break;
|
||||
case (int)GlobalEnumVars.UserTocashType.微信付款到零钱:
|
||||
{
|
||||
var user = await _userServices.QueryByIdAsync(info.userId);
|
||||
if (user == null)
|
||||
{
|
||||
jm.msg = "用户信息获取失败";
|
||||
return jm;
|
||||
}
|
||||
var weChatUserInfo = await _weChatInfoServices.QueryByClauseAsync(p => p.userId == info.userId);
|
||||
if (weChatUserInfo == null)
|
||||
{
|
||||
jm.msg = "微信用户数据获取失败";
|
||||
return jm;
|
||||
}
|
||||
//按分计算
|
||||
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
||||
//企业付款到零钱
|
||||
var request = new WeChatPayPromotionTransfersRequest
|
||||
{
|
||||
PartnerTradeNo = YitIdHelper.NextId().ToString(),
|
||||
OpenId = weChatUserInfo.openid,
|
||||
CheckName = "NO_CHECK",
|
||||
ReUserName = info.accountName,
|
||||
Amount = amount,
|
||||
Desc = "余额提现零钱",
|
||||
SpBillCreateIp = _httpContextAccessor.HttpContext?.Connection.RemoteIpAddress != null ? _httpContextAccessor.HttpContext.Connection.RemoteIpAddress.MapToIPv4().ToString() : "127.0.0.1"
|
||||
};
|
||||
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||
{
|
||||
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||
var message = JsonConvert.SerializeObject(response);
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
|
||||
var message = JsonConvert.SerializeObject(response);
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case (int)GlobalEnumVars.UserTocashType.微信付款到银行卡:
|
||||
{
|
||||
var user = await _userServices.QueryByIdAsync(info.userId);
|
||||
if (user == null)
|
||||
{
|
||||
jm.msg = "用户信息获取失败";
|
||||
return jm;
|
||||
}
|
||||
var weChatUserInfo = await _weChatInfoServices.QueryByClauseAsync(p => p.userId == info.userId);
|
||||
if (weChatUserInfo == null)
|
||||
{
|
||||
jm.msg = "微信用户数据获取失败";
|
||||
return jm;
|
||||
}
|
||||
//按分计算
|
||||
var amount = Convert.ToInt16((info.money - info.withdrawals) * 100);
|
||||
//企业付款到零钱
|
||||
var request = new WeChatPayPayBankRequest
|
||||
{
|
||||
PartnerTradeNo = YitIdHelper.NextId().ToString(),
|
||||
BankNo = info.cardNumber,
|
||||
TrueName = info.accountName,
|
||||
BankCode = info.accountBank,
|
||||
Amount = amount,
|
||||
Desc = "余额提现银行卡",
|
||||
};
|
||||
var response = await _client.ExecuteAsync(request, _optionsAccessor.Value);
|
||||
if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success)
|
||||
{
|
||||
status = (int)GlobalEnumVars.UserTocashStatus.提现成功;
|
||||
var message = JsonConvert.SerializeObject(response);
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = (int)GlobalEnumVars.UserTocashStatus.提现异常;
|
||||
var message = JsonConvert.SerializeObject(response);
|
||||
var bl = await _dal.UpdateAsync(p => new CoreCmsUserTocash() { status = status, updateTime = DateTime.Now, message = message }, p => p.id == id && (p.status == (int)GlobalEnumVars.UserTocashStatus.待审核 || p.status == (int)GlobalEnumVars.UserTocashStatus.提现异常));
|
||||
jm.status = bl;
|
||||
jm.data = status;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
jm.msg = "提现方式获取失败";
|
||||
jm.status = false;
|
||||
break;
|
||||
}
|
||||
|
||||
return jm;
|
||||
|
||||
@@ -224,17 +224,54 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
//返回数据
|
||||
var jm = new AdminUiCallBack { code = 0 };
|
||||
|
||||
var userTocashTypes = EnumHelper.EnumToList<GlobalEnumVars.UserTocashTypes>();
|
||||
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||
|
||||
jm.data = new
|
||||
{
|
||||
userTocashTypes
|
||||
userTocashStatus,
|
||||
userTocashType
|
||||
};
|
||||
return jm;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 提现处理============================================================
|
||||
// POST: Api/CoreCmsUserTocash/GetTocash
|
||||
/// <summary>
|
||||
/// 提现处理
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Description("提现处理")]
|
||||
public async Task<AdminUiCallBack> GetTocash([FromBody] FMIntId entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var model = await _coreCmsUserTocashServices.QueryByIdAsync(entity.id, false);
|
||||
if (model == null)
|
||||
{
|
||||
jm.msg = "不存在此信息";
|
||||
return jm;
|
||||
}
|
||||
jm.code = 0;
|
||||
|
||||
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||
|
||||
jm.data = new
|
||||
{
|
||||
model,
|
||||
userTocashStatus,
|
||||
userTocashType
|
||||
};
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 设置状态============================================================
|
||||
|
||||
@@ -246,7 +283,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Description("设置状态")]
|
||||
public async Task<AdminUiCallBack> SetStatus([FromBody] FMIntId entity)
|
||||
public async Task<AdminUiCallBack> SetStatus([FromBody] FMUserTocash entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
@@ -257,17 +294,54 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
||||
return jm;
|
||||
}
|
||||
|
||||
var res = await _coreCmsUserTocashServices.Examine(entity.id, entity.data.ObjectToInt(0));
|
||||
var res = await _coreCmsUserTocashServices.Examine(entity.id, entity.status, entity.type);
|
||||
jm.code = res.status ? 0 : 1;
|
||||
jm.data = res.data;
|
||||
jm.msg = res.status ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||
|
||||
jm.msg = res.msg;
|
||||
jm.otherData = entity;
|
||||
return jm;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region 预览数据============================================================
|
||||
// POST: Api/CoreCmsUserTocash/GetDetails/10
|
||||
/// <summary>
|
||||
/// 预览数据
|
||||
/// </summary>
|
||||
/// <param name="entity"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Description("预览数据")]
|
||||
public async Task<AdminUiCallBack> GetDetails([FromBody] FMIntId entity)
|
||||
{
|
||||
var jm = new AdminUiCallBack();
|
||||
|
||||
var model = await _coreCmsUserTocashServices.QueryByIdAsync(entity.id, false);
|
||||
if (model == null)
|
||||
{
|
||||
jm.msg = "不存在此信息";
|
||||
return jm;
|
||||
}
|
||||
jm.code = 0;
|
||||
|
||||
var userTocashStatus = EnumHelper.EnumToList<GlobalEnumVars.UserTocashStatus>();
|
||||
var userTocashType = EnumHelper.EnumToList<GlobalEnumVars.UserTocashType>();
|
||||
|
||||
jm.data = new
|
||||
{
|
||||
model,
|
||||
userTocashStatus,
|
||||
userTocashType
|
||||
};
|
||||
|
||||
return jm;
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region 选择导出============================================================
|
||||
|
||||
// POST: Api/CoreCmsUserTocash/SelectExportExcel/10
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsUserTocash-detailsForm" id="LAY-app-CoreCmsUserTocash-detailsForm">
|
||||
<colgroup>
|
||||
<col width="100">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="id">id</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.id || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="userId">用户ID</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.userId || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="money">提现金额</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.money || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="bankName">银行名称</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.bankName || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="bankCode">银行缩写</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.bankCode || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="bankAreaId">账号地区ID</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.bankAreaId || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="accountBank">开户行</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.accountBank || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="accountName">账户名</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.accountName || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="cardNumber">卡号</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.cardNumber || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="withdrawals">提现服务费</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.withdrawals || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="status">提现状态</label>
|
||||
</td>
|
||||
<td>
|
||||
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||
{{# if (d.params.data.model.status===item.value) {}}
|
||||
{{ item.title }}
|
||||
{{# }}}
|
||||
{{# }); }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="createTime">创建时间</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.createTime || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="updateTime">更新时间</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.updateTime || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="type">提现方式</label>
|
||||
</td>
|
||||
<td>
|
||||
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||
{{# if (d.params.data.model.type===item.value) {}}
|
||||
{{ item.title }}
|
||||
{{# }}}
|
||||
{{# }); }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="message">反馈结果</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.model.message || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</script>
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
|
||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||
var $ = layui.$
|
||||
, setter = layui.setter
|
||||
, admin = layui.admin
|
||||
, coreHelper = layui.coreHelper
|
||||
, form = layui.form;
|
||||
form.render(null, 'LAY-app-CoreCmsUserTocash-detailsForm');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,74 @@
|
||||
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsUserTocash-editForm" id="LAY-app-CoreCmsUserTocash-editForm">
|
||||
<input type="hidden" name="id" value="{{d.params.data.model.id }}" />
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="type" class="layui-form-label layui-form-required">提现方式</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="type" lay-verify="required|number" lay-reqText="请选择提现方式" lay-filter="selectType">
|
||||
<option value="">请选择提现方式</option>
|
||||
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="selectStatusBox">
|
||||
<label for="type" class="layui-form-label layui-form-required">审核状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status" lay-verify="required|number" lay-reqText="请选择审核状态">
|
||||
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||
<option value="{{ item.value }}" {{item.value===d.params.data.model.status?'selected="selected"':''}}>{{ item.title }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-form-mid">
|
||||
注:<br />
|
||||
1、微信提现需微信支付商户开通了企业付款到零钱功能。<br />
|
||||
2、只有【提现方式】为【银行卡】,才可主动设置成功失败。<br />
|
||||
3、微信提现方式下,将依据请求微信api接口返回信息,进行状态处理。<br />
|
||||
4、【微信提现付款到零钱】【微信提现付款到银行卡】再有异常的情况下,都可继续进行新的处理,可能会存在网络,微信支付商户余额,用户填写的银行卡信息错误等。<br />
|
||||
5、【微信提现付款到银行卡】需要配置【RsaPublicKey】,请自行添加,不然会报异常。
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsUserTocash-editForm-submit" id="LAY-app-CoreCmsUserTocash-editForm-submit" value="确认提现">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.sendParams = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
$('#selectStatusBox').hide();
|
||||
|
||||
form.on('select(selectType)', function (data) {
|
||||
console.log(data.value); //复选框value值,也可以通过data.elem.value得到
|
||||
if (data.value === '0') {
|
||||
$('#selectStatusBox').show();
|
||||
} else {
|
||||
$('#selectStatusBox').hide();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-CoreCmsUserTocash-editForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -31,9 +31,19 @@
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" id="status" lay-filter="conditionCode">
|
||||
<select name="status">
|
||||
<option value="">请选择提现状态</option>
|
||||
{{# layui.each(indexData.userTocashTypes, function(index, item){ }}
|
||||
{{# layui.each(indexData.userTocashStatus, function(index, item){ }}
|
||||
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="type">
|
||||
<option value="">请选择提现方式</option>
|
||||
{{# layui.each(indexData.userTocashType, function(index, item){ }}
|
||||
<option value="{{ item.value }}">{{ item.title }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
@@ -58,6 +68,16 @@
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
<script type="text/html" id="LAY-app-CoreCmsUserTocash-tableBox-bar">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||
{{# if(d.status === 1 || d.status === 4) { }}
|
||||
<a class="layui-btn layui-btn-xs" lay-event="getTocash">处理</a>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var indexData;
|
||||
var debug = layui.setter.debug;
|
||||
@@ -78,7 +98,7 @@
|
||||
, util = layui.util
|
||||
, view = layui.view;
|
||||
|
||||
|
||||
|
||||
//重载form
|
||||
form.render();
|
||||
var searchwhere;
|
||||
@@ -109,20 +129,20 @@
|
||||
{ type: "checkbox", fixed: "left" },
|
||||
{ field: 'id', title: 'ID号', width: 60, sort: false },
|
||||
{
|
||||
field: 'userNickName', title: '用户', sort: false, width: 105, templet: function (d) {
|
||||
field: 'userNickName', title: '用户', sort: false, width: 200, templet: function (d) {
|
||||
return d.userNickName + '(' + d.userId + ')';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'operating', title: '操作', width: 100, align: 'center', templet: function (data) {
|
||||
var html = '';
|
||||
if (data.status == 1) {
|
||||
html += '<a class="layui-btn layui-btn-xs option-yes" data-type="2" data-id="' + data.id + '">通过</a>';
|
||||
html += '<a class="layui-btn layui-btn-danger layui-btn-xs option-no" data-type="3" data-id="' + data.id + '" >驳回</a>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
//{
|
||||
// field: 'operating', title: '操作', width: 100, align: 'center', templet: function (data) {
|
||||
// var html = '';
|
||||
// if (data.status == 1) {
|
||||
// html += '<a class="layui-btn layui-btn-xs option-yes" data-type="2" data-id="' + data.id + '">通过</a>';
|
||||
// html += '<a class="layui-btn layui-btn-danger layui-btn-xs option-no" data-type="3" data-id="' + data.id + '" >驳回</a>';
|
||||
// }
|
||||
// return html;
|
||||
// }
|
||||
//},
|
||||
{ field: 'money', title: '提现金额', sort: false, width: 80, templet: function (data) { return '¥' + data.money } },
|
||||
{ field: 'bankName', title: '银行名称', sort: false, width: 105 },
|
||||
{ field: 'bankCode', title: '银行缩写', sort: false, width: 65 },
|
||||
@@ -133,9 +153,9 @@
|
||||
{ field: 'withdrawals', title: '提现服务费', sort: false, width: 85 },
|
||||
{
|
||||
field: 'status', title: '提现状态', sort: false, width: 65, templet: function (data) {
|
||||
for (var i = 0; i < d.data.userTocashTypes.length; i++) {
|
||||
if (data.status == d.data.userTocashTypes[i].value) {
|
||||
return d.data.userTocashTypes[i].title;
|
||||
for (var i = 0; i < d.data.userTocashStatus.length; i++) {
|
||||
if (data.status == d.data.userTocashStatus[i].value) {
|
||||
return d.data.userTocashStatus[i].title;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
@@ -143,6 +163,8 @@
|
||||
},
|
||||
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
||||
{ field: 'updateTime', title: '更新时间', width: 130, sort: false },
|
||||
{ width: 120, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsUserTocash-tableBox-bar' },
|
||||
{ field: 'message', title: '反馈信息', width: 130, sort: false },
|
||||
]
|
||||
]
|
||||
});
|
||||
@@ -173,8 +195,57 @@
|
||||
function (obj) {
|
||||
if (obj.event === 'detail') {
|
||||
doDetails(obj);
|
||||
} else if (obj.event === 'getTocash') {
|
||||
getTocash(obj)
|
||||
}
|
||||
});
|
||||
|
||||
//执行提现操作
|
||||
function getTocash(obj) {
|
||||
coreHelper.Post("Api/CoreCmsUserTocash/GetTocash", { id: obj.data.id }, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '提现操作',
|
||||
area: ['400px', '400px'],
|
||||
id: 'LAY-popup-CoreCmsUserTocash-edit',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('financial/usertocash/edit', { data: e.data }).done(function () {
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-CoreCmsUserTocash-editForm-submit)',
|
||||
function (data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
|
||||
|
||||
if (debug) { console.log(field); } //开启调试返回数据
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
coreHelper.Post("Api/CoreCmsUserTocash/SetStatus", field, function (e) {
|
||||
console.log(e)
|
||||
if (e.code === 0) {
|
||||
layui.table.reloadData('LAY-app-CoreCmsUserTocash-tableBox'); //重载表格
|
||||
layer.close(index); //再执行关闭
|
||||
layer.msg(e.msg);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-CoreCmsUserTocash-editForm-submit").click();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//执行预览操作
|
||||
function doDetails(obj) {
|
||||
coreHelper.Post("Api/CoreCmsUserTocash/GetDetails", { id: obj.data.id }, function (e) {
|
||||
@@ -182,10 +253,10 @@
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '查看详情',
|
||||
area: ['600px', '400px'],
|
||||
area: ['600px', '500px'],
|
||||
id: 'LAY-popup-CoreCmsUserTocash-details',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('base/CoreCmsUserTocash/details', { data: e.data }).done(function () {
|
||||
view(this.id).render('financial/usertocash/details', { data: e.data }).done(function () {
|
||||
form.render();
|
||||
});
|
||||
}
|
||||
|
||||
2
数据库/MySql/20220705/升级脚本.sql
Normal file
2
数据库/MySql/20220705/升级脚本.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE CoreCmsUserTocash ADD COLUMN type int DEFAULT 0 NOT NULL COMMENT '提现方式' AFTER updateTime;
|
||||
ALTER TABLE CoreCmsUserTocash ADD COLUMN message VARCHAR(1000) DEFAULT NULL COMMENT '反馈结果' AFTER type;
|
||||
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本aliyun导出.zip
Normal file
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本aliyun导出.zip
Normal file
Binary file not shown.
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本navicat导出.rar
Normal file
BIN
数据库/MySql/20220705/完整脚本/coreshop2022705带商品演示脚本navicat导出.rar
Normal file
Binary file not shown.
BIN
数据库/SqlServer/20220705/20220705完整数据库带演示商品.rar
Normal file
BIN
数据库/SqlServer/20220705/20220705完整数据库带演示商品.rar
Normal file
Binary file not shown.
6
数据库/SqlServer/20220705/升级脚本.sql
Normal file
6
数据库/SqlServer/20220705/升级脚本.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE [dbo].[CoreCmsUserTocash] ADD [type] INT DEFAULT 0 NOT NULL;
|
||||
ALTER TABLE [dbo].[CoreCmsUserTocash] ADD [message] NVARCHAR (1000) NULL;
|
||||
|
||||
GO
|
||||
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'提现方式', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'CoreCmsUserTocash', @level2type = N'COLUMN', @level2name = N'type';
|
||||
EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'反馈结果', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'CoreCmsUserTocash', @level2type = N'COLUMN', @level2name = N'message';
|
||||
@@ -1,3 +1,6 @@
|
||||
2022-07-05
|
||||
【新增】表【CoreCmsUserTocash】用户提现表,增加【type】提现方式,【message】反馈信息两个字段
|
||||
|
||||
2022-07-04
|
||||
【新增】表【WeChatTransactionComponentOrder】微信交易订单,表增加【paymentId】字段。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user