mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:33:27 +08:00
【新增】增加表【CoreCmsAppUpdateLog】版本更新表,用于发布版本更新。
【新增】增加安卓app版本在线更新功能。 【优化】优化app端头部导航按钮错位的问题。
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:31:04
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IRepository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表 工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsAppUpdateLogRepository : IBaseRepository<CoreCmsAppUpdateLog>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsAppUpdateLog entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsAppUpdateLog entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsAppUpdateLog> entity);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="pageIndex">当前页面索引</param>
|
||||||
|
/// <param name="pageSize">分布大小</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<IPageList<CoreCmsAppUpdateLog>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
84
CoreCms.Net.IServices/System/ICoreCmsAppUpdateLogServices.cs
Normal file
84
CoreCms.Net.IServices/System/ICoreCmsAppUpdateLogServices.cs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:31:04
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.IServices
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表 服务工厂接口
|
||||||
|
/// </summary>
|
||||||
|
public interface ICoreCmsAppUpdateLogServices : IBaseServices<CoreCmsAppUpdateLog>
|
||||||
|
{
|
||||||
|
#region 重写增删改查操作===========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> InsertAsync(CoreCmsAppUpdateLog entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(CoreCmsAppUpdateLog entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> UpdateAsync(List<CoreCmsAppUpdateLog> entity);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdAsync(object id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 重写根据条件查询分页数据
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="pageIndex">当前页面索引</param>
|
||||||
|
/// <param name="pageSize">分布大小</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
new Task<IPageList<CoreCmsAppUpdateLog>> QueryPageAsync(
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false);
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
99
CoreCms.Net.Model/Entities/System/CoreCmsAppUpdateLog.cs
Normal file
99
CoreCms.Net.Model/Entities/System/CoreCmsAppUpdateLog.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:55:06
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Model.Entities;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsAppUpdateLog
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 构造函数
|
||||||
|
/// </summary>
|
||||||
|
public CoreCmsAppUpdateLog()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 序列
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "序列")]
|
||||||
|
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
public int id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 版本号
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "版本号")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
public int version { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新内容
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "更新内容")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
[StringLength(255, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public string note { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安卓地址
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "安卓地址")]
|
||||||
|
[StringLength(255, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public string android { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IOS地址
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "IOS地址")]
|
||||||
|
[StringLength(255, ErrorMessage = "{0}不能超过{1}字")]
|
||||||
|
|
||||||
|
|
||||||
|
public string ios { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 创建时间
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "创建时间")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
public DateTime addTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 开启更新
|
||||||
|
/// </summary>
|
||||||
|
[Display(Name = "开启更新")]
|
||||||
|
[Required(ErrorMessage = "请输入{0}")]
|
||||||
|
|
||||||
|
|
||||||
|
public bool isUpdate { get; set; }
|
||||||
|
}
|
||||||
195
CoreCms.Net.Repository/System/CoreCmsAppUpdateLogRepository.cs
Normal file
195
CoreCms.Net.Repository/System/CoreCmsAppUpdateLogRepository.cs
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:31:04
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Caching.Manual;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Repository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsAppUpdateLogRepository : BaseRepository<CoreCmsAppUpdateLog>, ICoreCmsAppUpdateLogRepository
|
||||||
|
{
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
public CoreCmsAppUpdateLogRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
|
{
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0;
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await DbClient.Queryable<CoreCmsAppUpdateLog>().In(entity.id).SingleAsync();
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
//事物处理过程开始
|
||||||
|
oldModel.id = entity.id;
|
||||||
|
oldModel.version = entity.version;
|
||||||
|
oldModel.note = entity.note;
|
||||||
|
oldModel.android = entity.android;
|
||||||
|
oldModel.ios = entity.ios;
|
||||||
|
//oldModel.addTime = entity.addTime;
|
||||||
|
oldModel.isUpdate = entity.isUpdate;
|
||||||
|
|
||||||
|
//事物处理过程结束
|
||||||
|
var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsAppUpdateLog> entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsAppUpdateLog>(id).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var bl = await DbClient.Deleteable<CoreCmsAppUpdateLog>().In(ids).ExecuteCommandHasChangeAsync();
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 重写根据条件查询分页数据
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="pageIndex">当前页面索引</param>
|
||||||
|
/// <param name="pageSize">分布大小</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<IPageList<CoreCmsAppUpdateLog>> QueryPageAsync(Expression<Func<CoreCmsAppUpdateLog, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
RefAsync<int> totalCount = 0;
|
||||||
|
List<CoreCmsAppUpdateLog> page;
|
||||||
|
if (blUseNoLock)
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsAppUpdateLog>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsAppUpdateLog
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
version = p.version,
|
||||||
|
note = p.note,
|
||||||
|
android = p.android,
|
||||||
|
ios = p.ios,
|
||||||
|
addTime = p.addTime,
|
||||||
|
isUpdate = p.isUpdate,
|
||||||
|
|
||||||
|
}).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
page = await DbClient.Queryable<CoreCmsAppUpdateLog>()
|
||||||
|
.OrderByIF(orderByExpression != null, orderByExpression, orderByType)
|
||||||
|
.WhereIF(predicate != null, predicate).Select(p => new CoreCmsAppUpdateLog
|
||||||
|
{
|
||||||
|
id = p.id,
|
||||||
|
version = p.version,
|
||||||
|
note = p.note,
|
||||||
|
android = p.android,
|
||||||
|
ios = p.ios,
|
||||||
|
addTime = p.addTime,
|
||||||
|
isUpdate = p.isUpdate,
|
||||||
|
|
||||||
|
}).ToPageListAsync(pageIndex, pageSize, totalCount);
|
||||||
|
}
|
||||||
|
var list = new PageList<CoreCmsAppUpdateLog>(page, pageIndex, pageSize, totalCount);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
117
CoreCms.Net.Services/System/CoreCmsAppUpdateLogServices.cs
Normal file
117
CoreCms.Net.Services/System/CoreCmsAppUpdateLogServices.cs
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:31:04
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.IRepository;
|
||||||
|
using CoreCms.Net.IRepository.UnitOfWork;
|
||||||
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.ViewModels.Basics;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Services
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表 接口实现
|
||||||
|
/// </summary>
|
||||||
|
public class CoreCmsAppUpdateLogServices : BaseServices<CoreCmsAppUpdateLog>, ICoreCmsAppUpdateLogServices
|
||||||
|
{
|
||||||
|
private readonly ICoreCmsAppUpdateLogRepository _dal;
|
||||||
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public CoreCmsAppUpdateLogServices(IUnitOfWork unitOfWork, ICoreCmsAppUpdateLogRepository dal)
|
||||||
|
{
|
||||||
|
this._dal = dal;
|
||||||
|
base.BaseDal = dal;
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 实现重写增删改查操作==========================================================
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步插入方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity">实体数据</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> InsertAsync(CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
return await _dal.InsertAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写异步更新方法方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsAppUpdateLog> entity)
|
||||||
|
{
|
||||||
|
return await _dal.UpdateAsync(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID的数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdAsync(object id)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdAsync(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 重写删除指定ID集合的数据(批量删除)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
|
||||||
|
{
|
||||||
|
return await _dal.DeleteByIdsAsync(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 重写根据条件查询分页数据
|
||||||
|
/// <summary>
|
||||||
|
/// 重写根据条件查询分页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="predicate">判断集合</param>
|
||||||
|
/// <param name="orderByType">排序方式</param>
|
||||||
|
/// <param name="pageIndex">当前页面索引</param>
|
||||||
|
/// <param name="pageSize">分布大小</param>
|
||||||
|
/// <param name="orderByExpression"></param>
|
||||||
|
/// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public new async Task<IPageList<CoreCmsAppUpdateLog>> QueryPageAsync(Expression<Func<CoreCmsAppUpdateLog, bool>> predicate,
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
|
||||||
|
int pageSize = 20, bool blUseNoLock = false)
|
||||||
|
{
|
||||||
|
return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
export default {
|
export default {
|
||||||
//使用方法
|
//使用方法
|
||||||
//getApp().globalData.showLoginTip = false
|
//getApp().globalData.showLoginTip = false
|
||||||
//console.log(getApp().globalData.text)
|
//console.log(getApp().globalData.text)
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
onShow: function (obj) {
|
onShow: function (obj) {
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
this.$store.commit('scene', obj.scene)
|
this.$store.commit('scene', obj.scene)
|
||||||
//console.log(obj);
|
console.log(obj);
|
||||||
// #endif
|
// #endif
|
||||||
//console.log('App Show')
|
//console.log('App Show')
|
||||||
},
|
},
|
||||||
@@ -116,37 +116,37 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
// #ifdef APP-PLUS || APP-PLUS-NVUE
|
// #ifdef APP-PLUS || APP-PLUS-NVUE
|
||||||
// app更新检测
|
// app更新检测
|
||||||
checkVersion() {
|
checkVersion() {
|
||||||
// 获取应用版本号
|
// 获取应用版本号
|
||||||
|
let _this = this;
|
||||||
let version = plus.runtime.version;
|
let version = plus.runtime.version;
|
||||||
|
console.log('版本号:' + version);
|
||||||
//检测当前平台,如果是安卓则启动安卓更新
|
//检测当前平台,如果是安卓则启动安卓更新
|
||||||
uni.getSystemInfo({
|
uni.getSystemInfo({
|
||||||
success: res => {
|
success: res => {
|
||||||
this.updateHandler(res.platform, version);
|
console.log('当前平台:' + res.platform);
|
||||||
|
if (res.platform == 'android') {
|
||||||
|
_this.updateHandler(version);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// 更新操作
|
// 更新操作
|
||||||
updateHandler(platform, version) {
|
updateHandler(version) {
|
||||||
let data = {
|
|
||||||
platform: platform,
|
|
||||||
version: version
|
|
||||||
}
|
|
||||||
let _this = this;
|
let _this = this;
|
||||||
this.$u.api.getAppVersion(data).then(res => {
|
this.$u.api.getAppVersion().then(res => {
|
||||||
if (res.status && res.data[0].version) {
|
console.log(res);
|
||||||
const info = res.data[0];
|
if (res.status && res.data) {
|
||||||
if (info.version !== '' && info.version > version) {
|
if (res.data.version !== '' && res.data.version > version) {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
//提醒用户更新
|
//提醒用户更新
|
||||||
title: '更新提示',
|
title: '更新提示',
|
||||||
content: info.note,
|
content: res.data.note,
|
||||||
success: res => {
|
success: res => {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
plus.runtime.openURL(info.download_url)
|
plus.runtime.openURL(res.data.android)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -163,16 +163,14 @@
|
|||||||
@import "@/uni_modules/uview-ui/index.scss";
|
@import "@/uni_modules/uview-ui/index.scss";
|
||||||
/*公共css */
|
/*公共css */
|
||||||
@import '@/static/style/coreCommon.scss';
|
@import '@/static/style/coreCommon.scss';
|
||||||
@import '@/static/style/corePage.scss';
|
|
||||||
|
|
||||||
|
// vue App的样式
|
||||||
// 非nvue的样式
|
/* #ifdef APP-PLUS */
|
||||||
/* #ifndef APP-NVUE */
|
|
||||||
@import "@/static/style/style.vue.scss";
|
@import "@/static/style/style.vue.scss";
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
// nvue的特有样式
|
// nvue的特有样式
|
||||||
/* #ifdef APP-NVUE */
|
// #ifdef APP-PLUS-NVUE
|
||||||
@import "@/static/style/style.nvue.scss";
|
@import "@/static/style/style.nvue.scss";
|
||||||
/* #endif */
|
/* #endif */
|
||||||
|
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ const install = (Vue, vm) => {
|
|||||||
//================================================================////微信图文消息
|
//================================================================////微信图文消息
|
||||||
let messageDetail = (params, config = {}) => http.post('/Api/Articles/GetWeChatMessage', params, { custom: { methodName: 'articles.getweixinmessage', needToken: false } });
|
let messageDetail = (params, config = {}) => http.post('/Api/Articles/GetWeChatMessage', params, { custom: { methodName: 'articles.getweixinmessage', needToken: false } });
|
||||||
//================================================================////获取APP版本
|
//================================================================////获取APP版本
|
||||||
let getAppVersion = (params, config = {}) => http.post('/Api/App/CheckVersion', params, { custom: { methodName: 'app-api-checkVersion', needToken: false } });
|
let getAppVersion = (params, config = {}) => http.post('/Api/Common/GetAppVersions', params, { custom: { methodName: 'Common.checkVersion', needToken: false } });
|
||||||
|
|
||||||
//============================================================//公众号授权获取openid(第三方登录)
|
//============================================================//公众号授权获取openid(第三方登录)
|
||||||
let getOpenId = (params, config = {}) => http.post('/Api/User/OfficialLogin', params, { custom: { methodName: 'user.officiallogin', needToken: false } });
|
let getOpenId = (params, config = {}) => http.post('/Api/User/OfficialLogin', params, { custom: { methodName: 'user.officiallogin', needToken: false } });
|
||||||
|
|||||||
@@ -106,31 +106,25 @@
|
|||||||
|
|
||||||
let data = {
|
let data = {
|
||||||
payment_code: code,
|
payment_code: code,
|
||||||
payment_type: _this.type
|
payment_type: _this.type,
|
||||||
}
|
params: {
|
||||||
|
|
||||||
data['ids'] = (this.type == 1 || this.type == 5 || this.type == 6) ? this.orderId : this.uid
|
|
||||||
if ((this.type == 5 || this.type == 6) && this.recharge) {
|
|
||||||
data['params'] = {
|
|
||||||
trade_type: 'APP',
|
trade_type: 'APP',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
data['ids'] = (this.type == this.$globalConstVars.paymentType.common || this.type == this.$globalConstVars.paymentType.pinTuan || this.type == this.$globalConstVars.paymentType.group || this.type == this.$globalConstVars.paymentType.skill || this.type == this.$globalConstVars.paymentType.bargain || this.type == this.$globalConstVars.paymentType.giveaway || this.type == this.$globalConstVars.paymentType.solitaire || this.type == this.$globalConstVars.paymentType.transactionComponent || this.type == this.$globalConstVars.paymentType.serviceOrder) ? this.orderId : this.uid
|
||||||
|
|
||||||
|
// 判断订单支付类型
|
||||||
|
if (this.type == this.$globalConstVars.paymentType.recharge && this.recharge) {
|
||||||
|
data.params.money = this.recharge;
|
||||||
|
} else if ((this.type == this.$globalConstVars.paymentType.formPay || this.type == this.$globalConstVars.paymentType.formOrder) && this.recharge) {
|
||||||
|
data.ids = this.orderId;
|
||||||
|
}
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case 'alipay':
|
case 'alipay':
|
||||||
/**
|
/**
|
||||||
* 支付宝支付需要模拟GET提交数据
|
* 支付宝支付需要模拟GET提交数据
|
||||||
*/
|
*/
|
||||||
if (_this.type == 1 && _this.orderId) {
|
|
||||||
data['params'] = {
|
|
||||||
trade_type: 'APP'
|
|
||||||
}
|
|
||||||
} else if (_this.type == 2 && _this.recharge) {
|
|
||||||
data['params'] = {
|
|
||||||
trade_type: 'APP',
|
|
||||||
money: _this.recharge
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_this.$u.api.pay(data).then(res => {
|
_this.$u.api.pay(data).then(res => {
|
||||||
if (res.status) {
|
if (res.status) {
|
||||||
uni.requestPayment({
|
uni.requestPayment({
|
||||||
@@ -151,18 +145,7 @@
|
|||||||
})
|
})
|
||||||
break
|
break
|
||||||
case 'wechatpay':
|
case 'wechatpay':
|
||||||
// 微信 H5支付
|
|
||||||
if (_this.type == 1 && _this.orderId) {
|
|
||||||
data['params'] = {
|
|
||||||
trade_type: 'APP'
|
|
||||||
}
|
|
||||||
} else if (_this.type == 2 && _this.recharge) {
|
|
||||||
data['params'] = {
|
|
||||||
trade_type: 'APP',
|
|
||||||
money: _this.recharge
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 微信app支付
|
// 微信app支付
|
||||||
_this.$u.api.pay(data).then(res => {
|
_this.$u.api.pay(data).then(res => {
|
||||||
if (res.status) {
|
if (res.status) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<view class="coreshop-text-gray coreshop-font-sm flex coreshop-text-left">
|
<view class="coreshop-text-gray coreshop-font-sm flex coreshop-text-left">
|
||||||
<view class="u-line-1 coreshop-text-red" v-if="item.code == 'balancepay'">
|
<view class="u-line-1 coreshop-text-red" v-if="item.code == 'balancepay'">
|
||||||
当前余额:{{userInfo.balance}}元
|
当前余额:{{userInfo.balance}}元
|
||||||
</view>
|
</view>
|
||||||
<view class="u-line-1" v-else>
|
<view class="u-line-1" v-else>
|
||||||
{{item.memo}}
|
{{item.memo}}
|
||||||
</view>
|
</view>
|
||||||
@@ -129,19 +129,18 @@
|
|||||||
let data = {
|
let data = {
|
||||||
payment_code: code,
|
payment_code: code,
|
||||||
payment_type: this.type,
|
payment_type: this.type,
|
||||||
params: {}
|
params: {
|
||||||
|
trade_type: 'JSAPI',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
data['ids'] = (this.type == this.$globalConstVars.paymentType.common || this.type == this.$globalConstVars.paymentType.pinTuan || this.type == this.$globalConstVars.paymentType.group || this.type == this.$globalConstVars.paymentType.skill || this.type == this.$globalConstVars.paymentType.bargain || this.type == this.$globalConstVars.paymentType.giveaway || this.type == this.$globalConstVars.paymentType.solitaire || this.type == this.$globalConstVars.paymentType.transactionComponent || this.type == this.$globalConstVars.paymentType.serviceOrder) ? this.orderId : this.uid
|
data['ids'] = (this.type == this.$globalConstVars.paymentType.common || this.type == this.$globalConstVars.paymentType.pinTuan || this.type == this.$globalConstVars.paymentType.group || this.type == this.$globalConstVars.paymentType.skill || this.type == this.$globalConstVars.paymentType.bargain || this.type == this.$globalConstVars.paymentType.giveaway || this.type == this.$globalConstVars.paymentType.solitaire || this.type == this.$globalConstVars.paymentType.transactionComponent || this.type == this.$globalConstVars.paymentType.serviceOrder) ? this.orderId : this.uid
|
||||||
|
|
||||||
// 判断订单支付类型
|
// 判断订单支付类型
|
||||||
if (this.type == this.$globalConstVars.paymentType.recharge && this.recharge) {
|
if (this.type == this.$globalConstVars.paymentType.recharge && this.recharge) {
|
||||||
data['params'] = {
|
data.params.money = this.recharge;
|
||||||
money: this.recharge
|
|
||||||
}
|
|
||||||
} else if ((this.type == this.$globalConstVars.paymentType.formPay || this.type == this.$globalConstVars.paymentType.formOrder) && this.recharge) {
|
} else if ((this.type == this.$globalConstVars.paymentType.formPay || this.type == this.$globalConstVars.paymentType.formOrder) && this.recharge) {
|
||||||
data['ids'] = this.orderId;
|
data.ids = this.orderId;
|
||||||
data['params'] = {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
let _this = this
|
let _this = this
|
||||||
switch (code) {
|
switch (code) {
|
||||||
|
|||||||
@@ -62,3 +62,646 @@ uni-toast { z-index: 10090; }
|
|||||||
|
|
||||||
.u-reset-button::after { border: none; }
|
.u-reset-button::after { border: none; }
|
||||||
/* end--去除button的所有默认样式--end */
|
/* end--去除button的所有默认样式--end */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//占位使用,结合顶部通用标题
|
||||||
|
.coreshop-seat-height { width: 100%; /* #ifndef MP */ height: calc(var(--status-bar-height) + 50px); /* #endif */ /* #ifdef MP */ height: calc(var(--status-bar-height) + 70px); /* #endif */ }
|
||||||
|
|
||||||
|
//占位线
|
||||||
|
.coreshop-solid-line { width: 100%; height: 1px; background: #f9f9f9; }
|
||||||
|
.coreshop-coreshop-solid-top::after { border-top: 1px solid rgba(0, 0, 0, 0.1); }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 格式化页面
|
||||||
|
.coreshop-pageBox { height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: space-between; overflow-x: hidden; background: #f6f6f6; }
|
||||||
|
.coreshop-scroll-box { flex: 1; height: 100%; position: relative; }
|
||||||
|
.coreshop-content-box { flex: 1; overflow-y: auto; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*头像大小自定义*/
|
||||||
|
.coreshop-head-icon { width: 20px; height: 20px; display: inline-block; margin-right: 4px; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//底部按钮框样式
|
||||||
|
.coreshop-bottomBox { background-color: #fff; position: fixed; bottom: 0; height: 45px; width: 100%; display: flex; z-index: 66; box-shadow: 0 0 10px #ccc;
|
||||||
|
.coreshop-btn { flex: 1; }
|
||||||
|
}
|
||||||
|
.coreshop-category-bottomBox { background-color: #fff; bottom: 0; /*height: 45px;*/ width: 100%; display: flex; z-index: 66; box-shadow: 0 0 10px #ccc;
|
||||||
|
view { width: calc(50% - 10px); margin: 5px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//底部多按钮区
|
||||||
|
.coreshop-add-btn-view-box { position: fixed; z-index: 10000; bottom: 90px; right: 14px;
|
||||||
|
.cu-btn { margin: auto; width: 40px; height: 40px; font-weight: 800; border-radius: 50%; font-size: 18px; border: 5px solid #fff; box-shadow: 0 0 7px 4px #d0d0d0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
//底部浮动区域,用于放置按钮内容
|
||||||
|
.coreshop-footer-fixed { position: fixed; z-index: 100; width: 100%; bottom: 0; left: 0; padding: 5px 20px; min-height: 60px; display: flex; align-items: center; flex-direction: row; justify-content: center; }
|
||||||
|
.coreshop-foot-padding-bottom { padding-bottom: calc(env(safe-area-inset-bottom) / 2); }
|
||||||
|
.coreshop-tip-view { position: relative; padding: 5px 11px;
|
||||||
|
.coreshop-content { position: relative; padding-right: 28px; }
|
||||||
|
.coreshop-icon { position: absolute; font-size: 16px; right: 14px; color: #8799a3; top: 5px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*底部*/
|
||||||
|
.wecanui-footer-fixed { position: fixed; z-index: 10000; width: 100%; bottom: 0; left: 0; }
|
||||||
|
.wecanui-footer-fixed.foot-pb { padding-bottom: calc(env(safe-area-inset-bottom) / 2); }
|
||||||
|
.wecanui-footer-tabbar-hight-view { position: relative; width: 100%; height: calc((env(safe-area-inset-bottom) / 2) + 68px); }
|
||||||
|
.cu-form-group picker .picker { text-align: left; }
|
||||||
|
|
||||||
|
/*浮动按钮*/
|
||||||
|
.floatingButton { width: 40px; height: 40px; background-color: #fff; border-radius: 50%; position: fixed; right: 20px; bottom: 50px; display: flex; justify-content: center; align-items: center; box-shadow: 0 0 5px #ccc; padding: 0; z-index: 996; }
|
||||||
|
.floatingButton .icon { width: 30px; height: 30px; }
|
||||||
|
|
||||||
|
//顶部搜索框导航条设置
|
||||||
|
.coreshop-bar-search-title-box {
|
||||||
|
.cu-bar .action > text[class*="cuIcon-"] { font-size: 18px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
//滚动商品图标颜色
|
||||||
|
.coreshop-goods-swiper-view {
|
||||||
|
swiper.screen-swiper .uni-swiper-dot { background: #f0f0f0; }
|
||||||
|
swiper.screen-swiper.square-dot .uni-swiper-dot { background-color: #aaaaaa; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*分享浮层*/
|
||||||
|
.coreshop-share-Box { width: 100%; background: #FFFFFF; }
|
||||||
|
.coreshop-share-pop { width: 100%; display: flex; }
|
||||||
|
.coreshop-share-item { flex: 1; text-align: center; font-size: 13px; color: #333; padding: 10px 0;
|
||||||
|
image { width: 40px; height: 40px; margin: 10px; }
|
||||||
|
.coreshop-btn { line-height: 1; display: block; font-size: 13px; background-color: #fff; }
|
||||||
|
}
|
||||||
|
.coreshop-share-bottomBox { background-color: #fff; height: 45px; width: 100%; display: flex; box-shadow: 0 0 10px #ccc;
|
||||||
|
.coreshop-btn { flex: 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
//顶部通用标题
|
||||||
|
.coreshop-bar-view-box { position: fixed; top: 0; width: 100%; z-index: 10000; background: #FAFAFA; /* #ifndef MP */ height: calc(var(--status-bar-height) + 50px); /* #endif */ /* #ifdef MP */ height: calc(var(--status-bar-height) + 65px); /* #endif */ padding: var(--status-bar-height) 14px 0 14px; align-items: center;
|
||||||
|
.coreshop-bar-box { position: relative; width: 100%; align-items: center; line-height: 50px;
|
||||||
|
.close { position: absolute; right: 14px; font-size: 20px; bottom: 5px; }
|
||||||
|
}
|
||||||
|
.coreshop-small-routine-title { padding: 10px 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*通用列表*/
|
||||||
|
.coreshop-cell-group { background-color: #fff;
|
||||||
|
.coreshop-cell-item { padding: 10px 13px 10px 10px; border-bottom: 1px solid #f3f3f3; position: relative; background-color: #fff; color: #333; display: flex; min-height: 45px; align-items: center; justify-content: space-between; flex-direction: row;
|
||||||
|
.coreshop-cell-item-hd { display: flex; align-items: center; font-size: 14px; position: relative;
|
||||||
|
.coreshop-cell-hd-title { display: inline-block; position: relative; /* #ifdef MP-ALIPAY */ top: 2px; /* #endif */ }
|
||||||
|
.coreshop-cell-bd-input { display: inline-block; float: left; font-size: 13px; }
|
||||||
|
}
|
||||||
|
.coreshop-cell-item-bd { display: flex; min-height: 15px; overflow: hidden; align-items: center; padding-right: 15px;
|
||||||
|
.coreshop-cell-bd-view { position: relative; display: flex;
|
||||||
|
.coreshop-cell-bd-text { position: relative; font-size: 12px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.coreshop-cell-item-ft { display: flex; align-items: center;
|
||||||
|
.coreshop-cell-ft-view { position: relative; overflow: hidden; color: #666; font-size: 12px; text-align: right; }
|
||||||
|
.coreshop-cell-ft-text { font-size: 14px; float: right; position: relative; line-height: 25px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.coreshop-cell-item:last-child { border: none; }
|
||||||
|
.coreshop-cell-textarea { }
|
||||||
|
.right-img {
|
||||||
|
.coreshop-cell-item-ft { right: 4px; height: 25px; position: absolute; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*二列商品列表展示*/
|
||||||
|
.coreshop-goods-group { border-radius: 8px; color: #333333 !important; margin: 0 5px;
|
||||||
|
.good_box { border-radius: 8px; margin: 3px; background-color: #ffffff; padding: 5px; position: relative; width: calc(100% - 6px);
|
||||||
|
.good_title { font-size: 13px; margin-top: 5px; color: $u-main-color; }
|
||||||
|
.good_title-xl { font-size: 14px; margin-top: 5px; color: $u-main-color; }
|
||||||
|
.good_image { width: 100%; border-radius: 4px; }
|
||||||
|
.good-tag-hot { display: flex; margin-top: 5px; position: absolute; top: 7.5px; left: 7.5px; background-color: $u-type-error; color: #ffffff; display: flex; align-items: center; padding: 2px 7px; border-radius: 25px; font-size: 10px; line-height: 1; }
|
||||||
|
.good-tag-recommend { display: flex; margin-top: 5px; position: absolute; top: 7.5px; right: 7.5px; background-color: $u-type-primary; color: #ffffff; margin-left: 10px; border-radius: 25px; line-height: 1; padding: 2px 7px; display: flex; align-items: center; border-radius: 25px; font-size: 10px; }
|
||||||
|
.good-tag-recommend2 { display: flex; margin-top: 5px; position: absolute; bottom: 7.5px; left: 7.5px; background-color: $u-type-primary; color: #ffffff; border-radius: 25px; line-height: 1; padding: 2px 7px; display: flex; align-items: center; border-radius: 25px; font-size: 10px; }
|
||||||
|
.good-price { font-size: 15px; color: $u-type-error; margin-top: 5px; }
|
||||||
|
.good-des { font-size: 10px; color: $u-tips-color; margin-top: 5px; }
|
||||||
|
.grid-text { font-size: 14px; margin-top: 2px; color: $u-type-info; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*优惠券列表*/
|
||||||
|
.coreshop-coupon {
|
||||||
|
.coreshop-coupon-card-view { position: relative;
|
||||||
|
.card-price-view { position: relative; background: #FFF5F5; border-radius: 7px 7px 0 0; padding: 9px;
|
||||||
|
.price-left-view { position: absolute; height: 63px; width: 78px; text-align: center; line-height: 63px;
|
||||||
|
.price { font-size: 23px; font-weight: 400; }
|
||||||
|
.icon { width: 61px; height: 48px; margin-top: 50%; transform: translateY(-50%); overflow: initial; }
|
||||||
|
}
|
||||||
|
.name-content-view { position: relative; padding-left: 82px; padding-right: 53px; line-height: 1.8; color: #999898; }
|
||||||
|
.name-content-view::before { content: ''; position: absolute; top: -9px; bottom: -9px; margin-left: -9px; border-left: 1px dashed #fdbabc; }
|
||||||
|
.btn-right-view { position: absolute; right: 10px; top: 15px;
|
||||||
|
.u-size-medium { padding: 0; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.card-num-view { position: relative; background: #FFECED; border-radius: 0 0 7.5px 7.5px; border-top: 1px dashed #dedbdb; padding: 5px 5px; color: #999898;
|
||||||
|
.btnUnfold { position: absolute; right: 14px; top: 7.5px; }
|
||||||
|
}
|
||||||
|
/* .card-num-view::before { content: ''; position: absolute; width: 18px; height: 18px; background: #ffffff; border-radius: 50%; top: -9px; left: -9px; }
|
||||||
|
.card-num-view::after { content: ''; position: absolute; width: 18px; height: 18px; background: #ffffff; border-radius: 50%; top: -9px; right: -9px; }*/ }
|
||||||
|
|
||||||
|
.coreshop-lower-shelf {
|
||||||
|
.card-price-view { opacity: 0.5; }
|
||||||
|
.card-num-view { opacity: 0.5; }
|
||||||
|
.img-lower-box { position: absolute; height: 50px; width: 50px; background-color: rgba(0, 0, 0, 0.6); border-radius: 90px; text-align: center; line-height: 50px; font-size: 12px; color: #fff; top: 13px; left: 17.5px; -webkit-transition: left .15s; transition: left .15s; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*订单列表*/
|
||||||
|
.orderWrap { display: flex; flex-direction: column; height: calc(100vh - var(--window-top)); width: 100%; }
|
||||||
|
.orderList { background-color: #ffffff; margin: 10px; border-radius: 10px; box-sizing: border-box; padding: 10px; font-size: 14px;
|
||||||
|
.item { display: flex; margin: 10px 0 0;
|
||||||
|
.left { margin-right: 10px; }
|
||||||
|
.content {
|
||||||
|
.title { font-size: 14px; line-height: 25px; }
|
||||||
|
.type { margin: 5px 0; font-size: 12px; color: $core-tips-color; }
|
||||||
|
.delivery-time { color: #e5d001; font-size: 12px; }
|
||||||
|
}
|
||||||
|
.right { margin-left: 5px; padding-top: 10px; text-align: right;
|
||||||
|
.decimal { font-size: 12px; margin-top: 2px; }
|
||||||
|
.number { color: $core-tips-color; font-size: 12px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.total { margin-top: 10px; text-align: right; font-size: 12px;
|
||||||
|
.total-price { font-size: 16px; color: red; }
|
||||||
|
}
|
||||||
|
.bottom { display: flex; margin-top: 10px; padding: 0 5px; justify-content: space-between; align-items: center;
|
||||||
|
.coreshop-btn { line-height: 26px; width: 90px; border-radius: 13px; border: 1px solid $core-border-color; font-size: 13px; text-align: center; color: $core-type-info-dark; margin-left: 10px; }
|
||||||
|
.evaluate { color: $core-type-warning-dark; border-color: $core-type-warning-dark; }
|
||||||
|
.logistics { border-color: #e4e7ed; color: #82848a; }
|
||||||
|
.exchange { color: #8dc63f; border-color: #8dc63f; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*订单详情*/
|
||||||
|
.coreshop-solid-top::after { border-top: 1px solid rgba(0, 0, 0, 0.1); }
|
||||||
|
.coreshop-order-priceBox { position: relative; }
|
||||||
|
.coreshop-order-nums { position: absolute; top: 0; right: 0; }
|
||||||
|
|
||||||
|
/*步进器*/
|
||||||
|
.coreshop-status-img-view { position: relative;
|
||||||
|
.are-img-view { position: relative; margin-bottom: 10px;
|
||||||
|
.are-img { width: 165px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*拼团区域*/
|
||||||
|
.user-head-img-c { position: relative; width: 40px; height: 40px; border-radius: 50%; margin-right: 10px; box-sizing: border-box; display: inline-block; float: left; border: 1px solid #f3f3f3; margin-bottom: 10px; margin-top: 10px; }
|
||||||
|
.user-head-img-tip { position: absolute; top: -3px; left: -5px; display: inline-block; background-color: #FF7159; color: #fff; font-size: 11px; z-index: 99; padding: 0 5px; border-radius: 5px; transform: scale(.8); }
|
||||||
|
.group-swiper .coreshop-cell-item .user-head-img { width: 100%; height: 100%; border-radius: 50%; }
|
||||||
|
.group-swiper .coreshop-cell-item .user-head-img-c:first-child { border: 1px solid #FF7159; }
|
||||||
|
.uhihn { width: 40px; height: 40px; border-radius: 50%; margin-right: 10px; display: inline-block; border: 1px dashed #e1e1e1; text-align: center; line-height: 40px; color: #d1d1d1; font-size: 20px; box-sizing: border-box; }
|
||||||
|
|
||||||
|
|
||||||
|
/*订单卡片*/
|
||||||
|
.coreshop-card-box { padding: 14px 14px 0; }
|
||||||
|
.coreshop-card-view { position: relative; border-radius: 5px; padding: 10px; box-shadow: 0 0 7.5px #f1f1f1; }
|
||||||
|
.coreshop-price-view { position: relative;
|
||||||
|
.title-view { position: relative; margin-bottom: 10px;
|
||||||
|
.title { position: relative; padding-right: 90px; }
|
||||||
|
.coreshop-text-right { position: absolute; top: 2px; right: 0; }
|
||||||
|
}
|
||||||
|
.title-right-view { position: relative; margin-top: 14px; text-align: right; }
|
||||||
|
.title-left-view { position: relative; margin-top: 14px; text-align: left; }
|
||||||
|
.solid-line { margin: 14px 0; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*卡片-商品信息*/
|
||||||
|
.coreshop-shop-view { position: relative;
|
||||||
|
.shop-info-view { position: relative; margin-bottom: 14px; line-height: 24px; height: 24px;
|
||||||
|
.coreshop-avatar { position: absolute; }
|
||||||
|
.title-view { position: relative; padding-left: 32px; }
|
||||||
|
}
|
||||||
|
.goods-list-view { position: relative; margin: 10 0;
|
||||||
|
.coreshop-avatar { position: absolute; height: 77.5px; width: 77.5px; }
|
||||||
|
.goods-info-view { position: relative; padding-left: 86.5px; min-height: 77.5px;
|
||||||
|
.name { position: relative; height: 20px; width: 100%; }
|
||||||
|
.introduce { position: relative; height: 16px; width: 100%; }
|
||||||
|
.tag-view { position: relative; margin-bottom: 5px; margin-top: 3px; width: 100%;
|
||||||
|
.cu-tag { position: relative; top: -1px; }
|
||||||
|
}
|
||||||
|
.coreshop-text-price { position: relative; height: 18px; width: 100%; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.coreshop-foot-view { position: relative; background: #FFFCFC; margin: 0 -10px -10px -10px; border-radius: 0 0 5px 5px; padding: 10px;
|
||||||
|
.left-view { position: relative; padding-right: 90px;
|
||||||
|
.af5-img { position: relative; margin-right: 5px; width: 18px; top: 2px; }
|
||||||
|
}
|
||||||
|
.coreshop-text-right { position: absolute; right: 10px; top: 10px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*卡片-订单内容区域*/
|
||||||
|
.coreshop-order-view { position: relative;
|
||||||
|
.solid-line { margin: 14px 0; }
|
||||||
|
.title-view { position: relative; margin-bottom: 10px;
|
||||||
|
&:last-child { margin-bottom: 6.5px; }
|
||||||
|
.title { position: absolute; top: 2px; left: 0; }
|
||||||
|
.coreshop-text-right { position: relative; padding-left: 90px;
|
||||||
|
.cu-btn { padding: 0 5px; height: 15px; top: -2px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*卡片-物流信息*/
|
||||||
|
.coreshop-address-view { position: relative;
|
||||||
|
.solid-line { margin: 10px 0; }
|
||||||
|
.coreshop-list.menu-avatar > .coreshop-list-item { height: 55px;
|
||||||
|
&:after { width: 0; height: 0; border-bottom: 0; }
|
||||||
|
.icon-view { position: absolute; border-radius: 100%; text-align: center; line-height: 23px; height: 23px; width: 23px; left: 5px; top: 13px; }
|
||||||
|
.content { left: 56px; width: calc(100% - 47.5px); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*推荐商品列表*/
|
||||||
|
.coreshop-recommend-goods-list-view { position: relative;
|
||||||
|
.coreshop-flex-wrap { padding: 5px; }
|
||||||
|
.list-item { text-align: center; margin-bottom: 10px;
|
||||||
|
.coreshop-avatar { width: 124px; height: 124px; }
|
||||||
|
.goods-info-view { position: relative; padding: 8px; text-align: left;
|
||||||
|
.coreshop-text-price { margin: 5px 0; }
|
||||||
|
.foot-box { position: relative;
|
||||||
|
.cu-tag { position: absolute; right: 0; top: 0; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*团队列表样式*/
|
||||||
|
.coreshop-team-box { margin-top: 10px;
|
||||||
|
.coreshop-team-list {
|
||||||
|
.coreshop-team-children { padding-left: 15px; padding-right: 15px; height: 66px; border-bottom: 0.5px solid #eee; background: #fff;
|
||||||
|
.head-img { width: 30px; height: 30px; border-radius: 50%; margin-right: 20px; }
|
||||||
|
.head-info { width: calc( 100% - 50px);
|
||||||
|
.head-time { font-size: 12px; font-weight: 400; color: #999999; }
|
||||||
|
.child-num { font-size: 12px; font-weight: 400; color: #999999; }
|
||||||
|
.name-box { margin-bottom: 6px;
|
||||||
|
.name-text { font-size: 12px; font-weight: 500; color: #666; }
|
||||||
|
.tag-box { background: rgba(0, 0, 0, 0.2); border-radius: 10px; line-height: 15px; padding-right: 5px; margin-left: 5px;
|
||||||
|
.tag-img { width: 17px; height: 17px; margin-right: 3px; border-radius: 50%; }
|
||||||
|
.tag-title { font-size: 9px; font-family: PingFang SC; font-weight: 500; color: white; line-height: 10px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 头像*/
|
||||||
|
.coreshop-avatar { font-variant: small-caps; margin: 0; padding: 0; display: inline-flex; text-align: center; justify-content: center; align-items: center; background-color: #ccc; color: #ffffff; white-space: nowrap; position: relative; width: 32px; height: 32px; background-size: cover; background-position: center; vertical-align: middle; font-size: 1.5em;
|
||||||
|
&.sm { width: 24px; height: 24px; font-size: 1em; }
|
||||||
|
&.lg { width: 48px; height: 48px; font-size: 2em; }
|
||||||
|
&.xl { width: 64px; height: 64px; font-size: 2.5em; }
|
||||||
|
.avatar-text { font-size: 0.4em; }
|
||||||
|
}
|
||||||
|
.coreshop-avatar-group { direction: rtl; unicode-bidi: bidi-override; padding: 0 5px 0 20px; display: inline-block;
|
||||||
|
.coreshop-avatar { margin-left: -15px; border: 2px solid #f1f1f1; vertical-align: middle;
|
||||||
|
&.sm { margin-left: -10px; border: 0.5px solid #f1f1f1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*通用列表样式*/
|
||||||
|
.coreshop-list {
|
||||||
|
& + .coreshop-list { margin-top: 15px; }
|
||||||
|
& > .coreshop-list-item { transition: all .6s ease-in-out 0s; transform: translateX(0px);
|
||||||
|
&.move-cur { transform: translateX(-130px); }
|
||||||
|
.move { position: absolute; right: 0; display: flex; width: 130px; height: 100%; transform: translateX(100%);
|
||||||
|
view { display: flex; flex: 1; justify-content: center; align-items: center; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.menu-avatar { overflow: hidden;
|
||||||
|
& > .coreshop-list-item { position: relative; display: flex; padding-right: 5px; height: 70px; background-color: #ffffff; justify-content: flex-end; align-items: center;
|
||||||
|
& > .coreshop-avatar { position: absolute; left: 15px; }
|
||||||
|
.flex {
|
||||||
|
.text-cut { max-width: 255px; }
|
||||||
|
}
|
||||||
|
.content { position: absolute; left: 73px; width: calc(100% - 48px - 30px - 20px); line-height: 1.6em;
|
||||||
|
&.flex-sub { width: calc(100% - 48px - 30px - 10px); }
|
||||||
|
& > view {
|
||||||
|
&:first-child { font-size: 15px; display: flex; align-items: center; }
|
||||||
|
}
|
||||||
|
.coreshop-tag {
|
||||||
|
&.sm { display: inline-block; margin-left: 5px; height: 14px; font-size: 8px; line-height: 16px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.action { width: 50px; text-align: center;
|
||||||
|
view {
|
||||||
|
& + view { margin-top: 5px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.comment {
|
||||||
|
& > .coreshop-list-item { padding: 15px 15px 15px 60px; height: auto;
|
||||||
|
.content { position: relative; left: 0; width: auto; flex: 1; }
|
||||||
|
}
|
||||||
|
.coreshop-avatar { align-self: flex-start; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.menu { display: block; overflow: hidden;
|
||||||
|
& > .coreshop-list-item { position: relative; display: flex; padding: 0 15px; min-height: 50px; background-color: #ffffff; justify-content: space-between; align-items: center;
|
||||||
|
&:last-child {
|
||||||
|
&:after { border: none; }
|
||||||
|
}
|
||||||
|
&.grayscale { background-color: #f5f5f5; }
|
||||||
|
&.cur { background-color: #fcf7e9; }
|
||||||
|
&.arrow { padding-right: 45px;
|
||||||
|
&:before { position: absolute; top: 0; right: 15px; bottom: 0; display: block; margin: auto; width: 10px; height: 10px; color: #8799a3; content: "\e605"; text-align: center; font-size: 17px; font-family: "uicon-iconfont"; line-height: 10px; }
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
&.content { padding: 0; background-color: transparent; justify-content: flex-start;
|
||||||
|
&:after { display: none; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.coreshop-avatar-group {
|
||||||
|
.coreshop-avatar { border-color: #ffffff; }
|
||||||
|
}
|
||||||
|
.content { font-size: 15px; line-height: 1.6em; flex: 1;
|
||||||
|
& > view {
|
||||||
|
&:first-child { display: flex; align-items: center; }
|
||||||
|
}
|
||||||
|
& > text[class*=cuIcon] { display: inline-block; margin-right: 5px; width: 1.6em; text-align: center; }
|
||||||
|
& > image { display: inline-block; margin-right: 5px; width: 1.6em; height: 1.6em; vertical-align: middle; }
|
||||||
|
.coreshop-tag {
|
||||||
|
&.sm { display: inline-block; margin-left: 5px; height: 14px; font-size: 8px; line-height: 16px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.action {
|
||||||
|
.coreshop-tag {
|
||||||
|
&:empty { right: 5px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.sm-border {
|
||||||
|
& > .coreshop-list-item {
|
||||||
|
&:after { left: 15px; width: calc(200% - 60px); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.grid { background-color: #ffffff; text-align: center;
|
||||||
|
& > .coreshop-list-item { position: relative; display: flex; padding: 10px 0 15px; transition-duration: 0s; flex-direction: column;
|
||||||
|
&:after { position: absolute; top: 0; left: 0; box-sizing: border-box; width: 200%; height: 200%; border-right: 1px solid rgba(0, 0, 0, .1); border-bottom: 1px solid rgba(0, 0, 0, .1); border-radius: inherit; content: " "; transform: scale(.5); transform-origin: 0 0; pointer-events: none; }
|
||||||
|
text { display: block; margin-top: 5px; color: #888; font-size: 13px; line-height: 20px; }
|
||||||
|
[class*=cuIcon] { position: relative; display: block; margin-top: 10px; width: 100%; font-size: 24px; }
|
||||||
|
.coreshop-tag { right: auto; left: 50%; margin-left: 10px; }
|
||||||
|
}
|
||||||
|
&.no-border { padding: 10px 5px;
|
||||||
|
& > .coreshop-list-item { padding-top: 5px; padding-bottom: 10px;
|
||||||
|
&:after { border: none; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.card-menu { overflow: hidden; margin-right: 15px; margin-left: 15px; border-radius: 10px; }
|
||||||
|
}
|
||||||
|
.coreshop-list.menu-avatar > .coreshop-list-item:after,
|
||||||
|
.coreshop-list.menu > .coreshop-list-item:after { position: absolute; top: 0; left: 0; box-sizing: border-box; width: 200%; height: 200%; border-bottom: 0.5px solid #ddd; border-radius: inherit; content: " "; transform: scale(.5); transform-origin: 0 0; pointer-events: none; }
|
||||||
|
.coreshop-list.grid.col-3 > .coreshop-list-item:nth-child(3n):after,
|
||||||
|
.coreshop-list.grid.col-4 > .coreshop-list-item:nth-child(4n):after,
|
||||||
|
.coreshop-list.grid.col-5 > .coreshop-list-item:nth-child(5n):after { border-right-width: 0; }
|
||||||
|
|
||||||
|
|
||||||
|
/*常用日志数据多列列表三联*/
|
||||||
|
.coreshop-log-item { height: 71px; background-color: #fff; padding: 0 15px; border-bottom: 0.5px solid #eee;
|
||||||
|
.item-left {
|
||||||
|
.log-img { width: 25px; height: 25px; border-radius: 50%; margin-right: 12px; }
|
||||||
|
.log-name { font-size: 14px; font-weight: 500; margin-bottom: 6px; }
|
||||||
|
.log-notice { font-size: 11px; font-weight: 500; }
|
||||||
|
}
|
||||||
|
.item-right {
|
||||||
|
.log-num { font-size: 14px; font-weight: 500; margin-bottom: 6px; }
|
||||||
|
.log-date { font-size: 11px; font-weight: 400; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*占高区*/
|
||||||
|
.coreshop-card-hight-box { height: 23px; }
|
||||||
|
|
||||||
|
/*底部高度区域*/
|
||||||
|
.coreshop-foot-hight-view { width: 100%; height: calc((env(safe-area-inset-bottom) / 2) + 55px); }
|
||||||
|
|
||||||
|
|
||||||
|
/*为您推荐头部效果*/
|
||||||
|
.coreshop-recommended-title-view { position: relative; margin: 18px;
|
||||||
|
.img-anc { position: relative; width: 18px; top: 2px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.coreshop-navbar-left-slot { display: flex; flex-wrap: wrap; align-items: center; flex-direction: row; justify-content: space-between; }
|
||||||
|
/*支付界面效果*/
|
||||||
|
.payment-wx {
|
||||||
|
.coreshop-btn { background-color: #fff; line-height: 1.7; padding: 0; width: 367px; position: relative; display: flex; align-items: center; }
|
||||||
|
}
|
||||||
|
.payment-pop { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 200px; height: 136px; background-color: #fff; text-align: center; box-shadow: 0 0 10px #ccc;
|
||||||
|
.text { font-size: 12px; }
|
||||||
|
}
|
||||||
|
.payment-pop-c { padding: 25px 15px; font-size: 16px; color: #999;
|
||||||
|
image { width: 30px; height: 30px; }
|
||||||
|
}
|
||||||
|
.payment-pop-b { position: absolute; bottom: 0; display: flex; width: 100%; justify-content: space-between;
|
||||||
|
.coreshop-btn { flex: 1; justify-content: center; }
|
||||||
|
.coreshop-btn-o { background-color: #ff7159; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*全屏下头部透明效果*/
|
||||||
|
.coreshop-full-screen-nav-back { width: 100%; height: 44px; /* #ifndef MP-WEIXIN */ padding: 12px 12px 0; /* #endif */ /* #ifdef MP-WEIXIN */ padding: 26px 12px 0; /* #endif */ position: fixed; top: 10px; background-color: rgba(255, 255, 255, 0); z-index: 98;
|
||||||
|
.back-btn { height: 32px; width: 32px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.8); text-align: center;
|
||||||
|
.icon { height: 20px; width: 20px; position: relative; top: 50%; left: 46%; transform: translate(-50%, -50%); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*全屏下顶部满屏占位幻灯片效果*/
|
||||||
|
.coreshop-full-screen-banner-swiper-box { position: relative; width: 100%;
|
||||||
|
.screen-swiper { min-height: 325px; }
|
||||||
|
.tag { font-size: 12px; vertical-align: middle; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; padding: 0px 8px; font-family: Helvetica Neue, Helvetica, sans-serif; white-space: nowrap; position: absolute; bottom: 14px; right: 14px; font-size: 10px; padding: 0px 6px; height: 16px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*商品内限时秒杀区域效果*/
|
||||||
|
.coreshop-limited-seckill-box { position: relative; background-image: url('/static/images/good/titlebg.png'); background-repeat: no-repeat; background-size: 100% 100%; padding: 12.5px 14px; color: #ffffff; width: 100%;
|
||||||
|
.coreshop-cost-price-num { position: absolute; font-weight: 200; left: 100px; top: 11px; }
|
||||||
|
.coreshop-cost-price-num.price-6 { left: 127px; }
|
||||||
|
.coreshop-cost-price-num.price-5 { left: 114px; }
|
||||||
|
.coreshop-cost-price-num.price-4 { left: 100px; }
|
||||||
|
.coreshop-cost-price-num.price-3 { left: 82px; }
|
||||||
|
.coreshop-cost-price-num.price-2 { left: 68px; }
|
||||||
|
.coreshop-cost-price-num.price-1 { left: 50px; }
|
||||||
|
.coreshop-time-right { position: absolute; right: 10px; top: 5px; }
|
||||||
|
.coreshop-share-right { position: absolute; right: 14px; top: 8px; }
|
||||||
|
}
|
||||||
|
.coreshop-limited-seckill-box::after { content: ""; position: absolute; z-index: -1; background-color: inherit; width: 100%; height: 100%; left: 0; bottom: -10%; border-radius: 5px; opacity: 0.2; transform: scale(0.9, 0.9); }
|
||||||
|
|
||||||
|
/*通用空白区域*/
|
||||||
|
.coreshop-common-view-box { position: relative; padding: 10px 10px; }
|
||||||
|
|
||||||
|
|
||||||
|
/*商品标题区域效果*/
|
||||||
|
.coreshop-good-title-view-box { position: relative;
|
||||||
|
.title-view { display: inline-block; flex-direction: row; align-items: center;
|
||||||
|
.brand-tag { width: 60px; float: left; height: 10px; font-size: 10px; font-weight: normal; }
|
||||||
|
}
|
||||||
|
.coreshop-title-tip-box { position: relative; padding: 5px 10px; width: 100%;
|
||||||
|
.u-line-1 { padding-right: 14px; }
|
||||||
|
.icon { position: absolute; right: 10px; top: 6px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*商品页面底部浮层*/
|
||||||
|
.coreshop-good-footer-fixed { display: flex; position: fixed; bottom: 0; margin-top: 60px; width: 100%; z-index: 1; border-top: solid 1px #f2f2f2; background-color: #ffffff;
|
||||||
|
.tabbar { display: flex; position: relative; align-items: center; min-height: 50px; justify-content: space-between; padding-left: 5px; padding-right: 5px; height: calc(50px + env(safe-area-inset-bottom) / 2); padding-bottom: calc(env(safe-area-inset-bottom) / 2); width: 100%; flex-direction: row;
|
||||||
|
.action { display: flex; align-items: center; height: 100%; justify-content: center; max-width: 100%; color: #333333; position: relative; text-align: center;
|
||||||
|
.car-num { position: absolute; top: 5px; right: 7.5px; }
|
||||||
|
}
|
||||||
|
.btn-group { justify-content: space-around; flex-direction: row;
|
||||||
|
button { margin: 0 5px; }
|
||||||
|
}
|
||||||
|
.btn-box { justify-content: space-around; width: 50%; padding: 5px; padding-left: 0px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*商品页面商家面板展示*/
|
||||||
|
.coreshop-goods-shop-info-view-box {
|
||||||
|
.coreshop-shop-view { position: relative; width: 100%;
|
||||||
|
.coreshop-avatar { position: absolute; height: 40px; width: 40px; }
|
||||||
|
button { position: absolute; top: 11px; right: 0; width: 60px; }
|
||||||
|
}
|
||||||
|
.coreshop-border-view { position: relative; background: #efebeb; margin: 11px 0; height: 1px; width: 100%; }
|
||||||
|
.live-tag-view { position: relative; width: 100%;
|
||||||
|
.text-view { padding-right: 74px; display: flex;
|
||||||
|
.location-tag { width: 50px; }
|
||||||
|
}
|
||||||
|
.go-map-box { position: absolute; right: 0; top: 2px; width: 70px; display: flex; }
|
||||||
|
}
|
||||||
|
.coreshop-good-shop-recommend-list-box {
|
||||||
|
.recommend-scroll-box { position: relative; width: 100%;
|
||||||
|
.recommend-scroll { position: relative; height: 180px; white-space: nowrap; width: 100%;
|
||||||
|
.recommend-scroll-item { display: inline-block; padding-top: 14px; width: 100px; padding-right: 9px; white-space: initial;
|
||||||
|
.coreshop-avatar { width: 140px; height: 140px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*商品页面底部弹出层效果*/
|
||||||
|
.coreshop-bottom-popup-box { border-radius: 18px 18px 0 0;
|
||||||
|
.cu-dialog { border-radius: 18px 18px 0 0; }
|
||||||
|
.coreshop-title-bar { position: relative; width: 100%;
|
||||||
|
.close-icon { position: absolute; right: 18px; }
|
||||||
|
}
|
||||||
|
.coreshop-modal-content { position: relative; width: 100%; overflow-y: auto; /*height: calc(100vh - 327.5px);*/ padding: 0 15px 15px; margin-bottom: 60px;
|
||||||
|
.coreshop-common-view-box { position: relative; width: 100%; padding: 0; text-align: left; }
|
||||||
|
.coreshop-common-view-box.service {
|
||||||
|
.text-view { margin-bottom: 10px; }
|
||||||
|
.text-list-view { position: relative; width: 100%; margin-bottom: 10px;
|
||||||
|
.u-line-1 { padding-right: 10.5px; }
|
||||||
|
}
|
||||||
|
.text-list-view + .text-view { margin-top: 18px; }
|
||||||
|
}
|
||||||
|
.coreshop-common-view-box.promotion {
|
||||||
|
.text-view { margin-bottom: 10px;
|
||||||
|
.cu-tag { position: relative; top: -2px; }
|
||||||
|
}
|
||||||
|
.text-list-view { position: relative; width: 100%; margin-bottom: 10px;
|
||||||
|
.u-line-1 { padding-right: 110px; }
|
||||||
|
.go-map-box { position: absolute; right: 0; top: 1px; }
|
||||||
|
}
|
||||||
|
.text-list-view + .text-view { margin-top: 18px; }
|
||||||
|
}
|
||||||
|
.coreshop-common-view-box.select {
|
||||||
|
.coreshop-list.menu-avatar > .coreshop-list-item {
|
||||||
|
.content { width: calc(100% - 47.5px - 30px); }
|
||||||
|
}
|
||||||
|
.coreshop-select-btn-list-box { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*商品详情区域初始高度*/
|
||||||
|
.coreshop-good-rich-text-view { min-height: 250px; }
|
||||||
|
|
||||||
|
|
||||||
|
/*拼团*/
|
||||||
|
.group-box { background: linear-gradient(#fff, #f5f5f5); border-radius: 10px; margin: 0 10px 10px 10px; min-height: 500px;
|
||||||
|
.goods-item { border-radius: 10px; overflow: hidden; position: relative; margin-bottom: 10px;
|
||||||
|
.tag { position: absolute; left: 0; top: 5px; z-index: 2; line-height: 17.5px; background: linear-gradient(132deg, rgba(255, 153, 93, 1), rgba(255, 99, 97, 1)); border-radius: 0px 9px 9px 0px; padding: 0 5px; font-size: 12px; font-family: PingFang SC; font-weight: bold; color: rgba(255, 255, 255, 0.8); }
|
||||||
|
.goods-right { width: 240px;
|
||||||
|
.title { width: 240px; color: $u-main-color }
|
||||||
|
.tip { width: 240px; }
|
||||||
|
}
|
||||||
|
.buy-btn { position: absolute; right: 0; bottom: -5px; width: 130px; height: 30px; background: linear-gradient(90deg, rgba(254, 131, 42, 1), rgba(255, 102, 0, 1)); box-shadow: 0px 3.5px 3px 0px rgba(255, 104, 4, 0.22); border-radius: 15px; font-size: 14px; font-family: PingFang SC; font-weight: 500; color: #fff; padding: 0; }
|
||||||
|
.group-num { font-size: 10px; font-family: PingFang SC; font-weight: 500; color: rgba(153, 153, 153, 1); margin-left: 10px; }
|
||||||
|
.sell-box { background: rgba(255, 224, 226, 0.3); border-radius: 8px; line-height: 16px; padding: 0 5px;
|
||||||
|
.sell-num { font-size: 10px; font-family: PingFang SC; font-weight: 400; color: rgba(247, 151, 156, 1); }
|
||||||
|
|
||||||
|
.cuIcon-hotfill { font-size: 13px; color: #e1212b; margin-right: 4px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.group-boxComponents.group-box { min-height: 25px; }
|
||||||
|
|
||||||
|
.activity-goods-box { padding: 20px 10px; background: #fff;
|
||||||
|
.img-box { margin-right: 10px; width: 100px; height: 100px; overflow: hidden; position: relative;
|
||||||
|
.img { width: 100px; height: 100px; background-color: #ccc; }
|
||||||
|
}
|
||||||
|
.goods-right { width: 425px; min-height: 100px; position: relative;
|
||||||
|
.title { font-size: 14px; line-height: 20px; }
|
||||||
|
.tip { font-size: 11px; color: #a8700d; width: 250px; padding: 3px 0; }
|
||||||
|
.current { font-size: 14px; font-weight: 500; color: rgba(225, 33, 43, 1); }
|
||||||
|
.original { font-size: 11px; font-weight: 400; text-decoration: line-through; color: rgba(153, 153, 153, 1); margin-left: 7px; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*版权信息*/
|
||||||
|
.coreshop-copyright { text-align: center; margin: 10px 0; width: 100%; overflow: hidden; line-height: 20px; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
按钮无边框样式*/
|
||||||
|
.noButtonStyle { -webkit-appearance: none; overflow: visible; color: #606266; border-color: #c0c4cc; background-color: #ffffff; position: relative; border: 0; display: inline-flex; overflow: visible; line-height: 1; display: flex; flex-direction: row; align-items: center; justify-content: center; cursor: pointer; z-index: 1; box-sizing: border-box; transition: all 0.15s; }
|
||||||
|
.noButtonStyle::after { border-top-width: 0; border-right-width: 0; border-bottom-width: 0; border-left-width: 0; }
|
||||||
|
|
||||||
|
|
||||||
|
/*顶部自定义效果*/
|
||||||
|
.coreshop-header-slot-wrap { display: flex; align-items: center; padding: 0 10px; margin-top: -5px;
|
||||||
|
.coreshop-slot-btns { background: #111727; border: 1px solid #565b6f; padding: 4px 12px; border-radius: 250px; display: flex; align-items: center; z-index: 10075;
|
||||||
|
.coreshop-slot-cut-off { margin: 0 10px; color: #fff; width: 0.5px; border-left: 1px solid #fff; background: #fff; height: 17.5px; }
|
||||||
|
}
|
||||||
|
.coreshop-header-title { padding: 1px 10px; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*接龙*/
|
||||||
|
.solitaire-details-bg { min-height: 150px; background-image: url('/static/images/common/bg.png'); background-size: cover; background-position: center; border-radius: 0 0 40px 40px; background: #272d47; }
|
||||||
|
.solitaire-details-placeholder-body { margin-top: -150px; padding: 2.5px; }
|
||||||
|
.solitaire-details-body { min-height: 150px; border-radius: 15px; margin: 20px 10px 10px 10px; padding: 5px 10px 10px 10px;
|
||||||
|
.solitaire-details-shareBox { background: #0fd7bd; padding: 2.5px 5px; border-top-left-radius: 50px; border-bottom-left-radius: 50px; margin-right: -10px; margin-left: 10px; margin-top: 10px; width: 35px; height: 25px; }
|
||||||
|
}
|
||||||
|
.coreshop-content { color: $u-content-color; font-size: 14px; line-height: 1.8;
|
||||||
|
p { color: $u-tips-color; }
|
||||||
|
}
|
||||||
|
.solitaire-details-product-item { background: #FFFFFF; border-radius: 4px; margin: 0 10px; margin-top: 10px; border-radius: 8px; padding: 10px 10px; background: #FFFFFF !important; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.contact-btn { margin: 0 auto; }
|
||||||
|
|||||||
@@ -0,0 +1,317 @@
|
|||||||
|
/***********************************************************************
|
||||||
|
* Project: CoreCms
|
||||||
|
* ProjectName: 核心内容管理系统
|
||||||
|
* Web: https://www.corecms.net
|
||||||
|
* Author: 大灰灰
|
||||||
|
* Email: jianweie@163.com
|
||||||
|
* CreateTime: 2022/7/19 23:31:04
|
||||||
|
* Description: 暂无
|
||||||
|
***********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CoreCms.Net.Configuration;
|
||||||
|
using CoreCms.Net.Model.Entities;
|
||||||
|
using CoreCms.Net.Model.Entities.Expression;
|
||||||
|
using CoreCms.Net.Model.FromBody;
|
||||||
|
using CoreCms.Net.Model.ViewModels.UI;
|
||||||
|
using CoreCms.Net.Filter;
|
||||||
|
using CoreCms.Net.Loging;
|
||||||
|
using CoreCms.Net.IServices;
|
||||||
|
using CoreCms.Net.Utility.Helper;
|
||||||
|
using CoreCms.Net.Utility.Extensions;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using NPOI.HSSF.UserModel;
|
||||||
|
using SqlSugar;
|
||||||
|
|
||||||
|
namespace CoreCms.Net.Web.Admin.Controllers
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 版本更新表
|
||||||
|
///</summary>
|
||||||
|
[Description("版本更新表")]
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
[RequiredErrorForAdmin]
|
||||||
|
[Authorize]
|
||||||
|
public class CoreCmsAppUpdateLogController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
||||||
|
private readonly ICoreCmsAppUpdateLogServices _coreCmsAppUpdateLogServices;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 构造函数
|
||||||
|
///</summary>
|
||||||
|
public CoreCmsAppUpdateLogController(IWebHostEnvironment webHostEnvironment
|
||||||
|
, ICoreCmsAppUpdateLogServices coreCmsAppUpdateLogServices
|
||||||
|
)
|
||||||
|
{
|
||||||
|
_webHostEnvironment = webHostEnvironment;
|
||||||
|
_coreCmsAppUpdateLogServices = coreCmsAppUpdateLogServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region 获取列表============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/GetPageList
|
||||||
|
/// <summary>
|
||||||
|
/// 获取列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("获取列表")]
|
||||||
|
public async Task<AdminUiCallBack> GetPageList()
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
|
||||||
|
var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
|
||||||
|
var where = PredicateBuilder.True<CoreCmsAppUpdateLog>();
|
||||||
|
//获取排序字段
|
||||||
|
var orderField = Request.Form["orderField"].FirstOrDefault();
|
||||||
|
|
||||||
|
Expression<Func<CoreCmsAppUpdateLog, object>> orderEx = orderField switch
|
||||||
|
{
|
||||||
|
"id" => p => p.id,
|
||||||
|
"version" => p => p.version,
|
||||||
|
"note" => p => p.note,
|
||||||
|
"android" => p => p.android,
|
||||||
|
"ios" => p => p.ios,
|
||||||
|
"addTime" => p => p.addTime,
|
||||||
|
"isUpdate" => p => p.isUpdate,
|
||||||
|
_ => p => p.id
|
||||||
|
};
|
||||||
|
|
||||||
|
//设置排序方式
|
||||||
|
var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
|
||||||
|
var orderBy = orderDirection switch
|
||||||
|
{
|
||||||
|
"asc" => OrderByType.Asc,
|
||||||
|
"desc" => OrderByType.Desc,
|
||||||
|
_ => OrderByType.Desc
|
||||||
|
};
|
||||||
|
//查询筛选
|
||||||
|
|
||||||
|
//更新内容 nvarchar
|
||||||
|
var note = Request.Form["note"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(note))
|
||||||
|
{
|
||||||
|
where = where.And(p => p.note.Contains(note));
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建时间 datetime
|
||||||
|
var addTime = Request.Form["addTime"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(addTime))
|
||||||
|
{
|
||||||
|
if (addTime.Contains("到"))
|
||||||
|
{
|
||||||
|
var dts = addTime.Split("到");
|
||||||
|
var dtStart = dts[0].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.addTime > dtStart);
|
||||||
|
var dtEnd = dts[1].Trim().ObjectToDate();
|
||||||
|
where = where.And(p => p.addTime < dtEnd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dt = addTime.ObjectToDate();
|
||||||
|
where = where.And(p => p.addTime > dt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//开启更新 bit
|
||||||
|
var isUpdate = Request.Form["isUpdate"].FirstOrDefault();
|
||||||
|
if (!string.IsNullOrEmpty(isUpdate) && isUpdate.ToLowerInvariant() == "true")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isUpdate == true);
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(isUpdate) && isUpdate.ToLowerInvariant() == "false")
|
||||||
|
{
|
||||||
|
where = where.And(p => p.isUpdate == false);
|
||||||
|
}
|
||||||
|
//获取数据
|
||||||
|
var list = await _coreCmsAppUpdateLogServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
|
||||||
|
//返回数据
|
||||||
|
jm.data = list;
|
||||||
|
jm.code = 0;
|
||||||
|
jm.count = list.TotalCount;
|
||||||
|
jm.msg = "数据调用成功!";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 首页数据============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/GetIndex
|
||||||
|
/// <summary>
|
||||||
|
/// 首页数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("首页数据")]
|
||||||
|
public AdminUiCallBack GetIndex()
|
||||||
|
{
|
||||||
|
//返回数据
|
||||||
|
var jm = new AdminUiCallBack { code = 0 };
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 创建数据============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/GetCreate
|
||||||
|
/// <summary>
|
||||||
|
/// 创建数据
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("创建数据")]
|
||||||
|
public AdminUiCallBack GetCreate()
|
||||||
|
{
|
||||||
|
//返回数据
|
||||||
|
var jm = new AdminUiCallBack { code = 0 };
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 创建提交============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/DoCreate
|
||||||
|
/// <summary>
|
||||||
|
/// 创建提交
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("创建提交")]
|
||||||
|
public async Task<AdminUiCallBack> DoCreate([FromBody] CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
entity.addTime = DateTime.Now;
|
||||||
|
var jm = await _coreCmsAppUpdateLogServices.InsertAsync(entity);
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 编辑数据============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/GetEdit
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑数据
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("编辑数据")]
|
||||||
|
public async Task<AdminUiCallBack> GetEdit([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var model = await _coreCmsAppUpdateLogServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
jm.code = 0;
|
||||||
|
jm.data = model;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 编辑提交============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/Edit
|
||||||
|
/// <summary>
|
||||||
|
/// 编辑提交
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("编辑提交")]
|
||||||
|
public async Task<AdminUiCallBack> DoEdit([FromBody] CoreCmsAppUpdateLog entity)
|
||||||
|
{
|
||||||
|
var jm = await _coreCmsAppUpdateLogServices.UpdateAsync(entity);
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 删除数据============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/DoDelete/10
|
||||||
|
/// <summary>
|
||||||
|
/// 单选删除
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("单选删除")]
|
||||||
|
public async Task<AdminUiCallBack> DoDelete([FromBody] FMIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var model = await _coreCmsAppUpdateLogServices.ExistsAsync(p => p.id == entity.id, true);
|
||||||
|
if (!model)
|
||||||
|
{
|
||||||
|
jm.msg = GlobalConstVars.DataisNo;
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
jm = await _coreCmsAppUpdateLogServices.DeleteByIdAsync(entity.id);
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 预览数据============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/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 _coreCmsAppUpdateLogServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
jm.code = 0;
|
||||||
|
jm.data = model;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region 设置开启更新============================================================
|
||||||
|
// POST: Api/CoreCmsAppUpdateLog/DoSetisUpdate/10
|
||||||
|
/// <summary>
|
||||||
|
/// 设置开启更新
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="entity"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
[Description("设置开启更新")]
|
||||||
|
public async Task<AdminUiCallBack> DoSetisUpdate([FromBody] FMUpdateBoolDataByIntId entity)
|
||||||
|
{
|
||||||
|
var jm = new AdminUiCallBack();
|
||||||
|
|
||||||
|
var oldModel = await _coreCmsAppUpdateLogServices.QueryByIdAsync(entity.id, false);
|
||||||
|
if (oldModel == null)
|
||||||
|
{
|
||||||
|
jm.msg = "不存在此信息";
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
oldModel.isUpdate = (bool)entity.data;
|
||||||
|
|
||||||
|
var bl = await _coreCmsAppUpdateLogServices.UpdateAsync(p => new CoreCmsAppUpdateLog() { isUpdate = oldModel.isUpdate }, p => p.id == oldModel.id);
|
||||||
|
jm.code = bl ? 0 : 1;
|
||||||
|
jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
|
||||||
|
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ layui.define(['laytpl', 'layer', 'element', 'util'], function (exports) {
|
|||||||
, pageTabs: false //是否开启页面选项卡功能。单页版不推荐开启
|
, pageTabs: false //是否开启页面选项卡功能。单页版不推荐开启
|
||||||
|
|
||||||
, name: '核心商城系统'
|
, name: '核心商城系统'
|
||||||
, version: 'CoreShopProfessional v0.5.0'
|
, version: 'CoreShopProfessional v0.5.1'
|
||||||
, tableName: 'CoreCms' //本地存储表名
|
, tableName: 'CoreCms' //本地存储表名
|
||||||
, MOD_NAME: 'admin' //模块事件名
|
, MOD_NAME: 'admin' //模块事件名
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsAppUpdateLog-createForm" id="LAY-app-CoreCmsAppUpdateLog-createForm">
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="version" class="layui-form-label layui-form-required">版本号</label>
|
||||||
|
<div class="layui-input-inline layui-inline-6">
|
||||||
|
<input type="number" min="0" max="999999" name="version" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入版本号" lay-reqText="请输入版本号并为数字" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
应用版本号,必须为整数数字,升级时必须要高于上一次设置的值。
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="note" class="layui-form-label layui-form-required">更新内容</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="note" lay-verify="required|verifynote" class="layui-input" lay-reqText="请输入更新内容" placeholder="请输入更新内容" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="android" class="layui-form-label">安卓地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="android" class="layui-input" lay-reqText="请输入安卓地址" placeholder="请输入安卓地址" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="ios" class="layui-form-label">IOS地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="ios" class="layui-input" lay-reqText="请输入IOS地址" placeholder="请输入IOS地址" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item" pane>
|
||||||
|
<label for="isUpdate" class="layui-form-label layui-form-required">开启更新</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isUpdate" lay-skin="switch" lay-text="开启|关闭">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsAppUpdateLog-createForm-submit" id="LAY-app-CoreCmsAppUpdateLog-createForm-submit" value="确认添加">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
layui.data.done = 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;
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#createTime-CoreCmsAppUpdateLog-addTime',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
form.verify({
|
||||||
|
|
||||||
|
verifyversion: [/^.{0,50}$/, '版本号最大只允许输入50位字符'],
|
||||||
|
verifynote: [/^.{0,255}$/, '更新内容最大只允许输入255位字符'],
|
||||||
|
verifyandroid: [/^.{0,255}$/, '安卓地址最大只允许输入255位字符'],
|
||||||
|
verifyios: [/^.{0,255}$/, 'IOS地址最大只允许输入255位字符'],
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsAppUpdateLog-createForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||||
|
<table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsAppUpdateLog-detailsForm" id="LAY-app-CoreCmsAppUpdateLog-detailsForm">
|
||||||
|
<colgroup>
|
||||||
|
<col width="100">
|
||||||
|
<col>
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="id">序列</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.id || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="version">版本号</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.version || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="note">更新内容</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.note || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="android">安卓地址</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.android || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="ios">IOS地址</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.ios || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="addTime">创建时间</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ d.params.data.addTime || '' }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label for="isUpdate">开启更新</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" disabled name="isUpdate" value="{{d.params.data.isUpdate}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isUpdate" {{ d.params.data.isUpdate ? 'checked' : '' }}>
|
||||||
|
</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-CoreCmsAppUpdateLog-detailsForm');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||||
|
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsAppUpdateLog-editForm" id="LAY-app-CoreCmsAppUpdateLog-editForm">
|
||||||
|
<input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="version" class="layui-form-label layui-form-required">版本号</label>
|
||||||
|
<div class="layui-input-inline layui-inline-6">
|
||||||
|
<input type="number" min="0" max="999999" name="version" lay-verify="required|number" class="layui-input" value="{{d.params.data.version || '' }}" placeholder="请输入版本号" lay-reqText="请输入版本号并为数字" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">
|
||||||
|
应用版本号,必须为整数数字,升级时必须要高于上一次设置的值。
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="note" class="layui-form-label layui-form-required">更新内容</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="note" lay-verify="required|verifynote" class="layui-input" placeholder="请输入更新内容" lay-reqText="请输入更新内容" value="{{d.params.data.note || '' }}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="android" class="layui-form-label">安卓地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="android" class="layui-input" placeholder="请输入安卓地址" lay-reqText="请输入安卓地址" value="{{d.params.data.android || '' }}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label for="ios" class="layui-form-label">IOS地址</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input name="ios" class="layui-input" placeholder="请输入IOS地址" lay-reqText="请输入IOS地址" value="{{d.params.data.ios || '' }}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item" pane>
|
||||||
|
<label for="isUpdate" class="layui-form-label layui-form-required">开启更新</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input type="checkbox" lay-filter="switch" name="isUpdate" {{ d.params.data.isUpdate ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item text-right core-hidden">
|
||||||
|
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsAppUpdateLog-editForm-submit" id="LAY-app-CoreCmsAppUpdateLog-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;
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#editTime-CoreCmsAppUpdateLog-addTime',
|
||||||
|
type: 'datetime'
|
||||||
|
});
|
||||||
|
form.verify({
|
||||||
|
|
||||||
|
verifyversion: [/^.{0,50}$/, '版本号最大只允许输入50位字符'],
|
||||||
|
verifynote: [/^.{0,255}$/, '更新内容最大只允许输入255位字符'],
|
||||||
|
verifyandroid: [/^.{0,255}$/, '安卓地址最大只允许输入255位字符'],
|
||||||
|
verifyios: [/^.{0,255}$/, 'IOS地址最大只允许输入255位字符'],
|
||||||
|
});
|
||||||
|
//重载form
|
||||||
|
form.render(null, 'LAY-app-CoreCmsAppUpdateLog-editForm');
|
||||||
|
})
|
||||||
|
};
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,313 @@
|
|||||||
|
<title>版本更新表</title>
|
||||||
|
<!--当前位置开始-->
|
||||||
|
<div class="layui-card layadmin-header">
|
||||||
|
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||||
|
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--当前位置结束-->
|
||||||
|
<style>
|
||||||
|
/* 重写样式 */
|
||||||
|
</style>
|
||||||
|
<script type="text/html" template lay-type="Post" lay-url="Api/CoreCmsAppUpdateLog/GetIndex" lay-done="layui.data.done(d);">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<div class="table-body">
|
||||||
|
<table id="LAY-app-CoreCmsAppUpdateLog-tableBox" lay-filter="LAY-app-CoreCmsAppUpdateLog-tableBox"></table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsAppUpdateLog-toolbar">
|
||||||
|
<div class="layui-form coreshop-toolbar-search-form">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label" for="note">更新内容</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="text" name="note" placeholder="请输入更新内容" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label" for="isUpdate">开启更新</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select name="isUpdate">
|
||||||
|
<option value="">请选择</option>
|
||||||
|
<option value="True">是</option>
|
||||||
|
<option value="False">否</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsAppUpdateLog-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsAppUpdateLog-pagebar">
|
||||||
|
<div class="layui-btn-container">
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-event="addData"><i class="layui-icon layui-icon-add-1"></i>添加数据</button>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/html" id="LAY-app-CoreCmsAppUpdateLog-tableBox-bar">
|
||||||
|
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||||
|
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||||
|
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#CoreCmsAppUpdateLogTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
||||||
|
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsAppUpdateLogTbDelDrop{{d.LAY_INDEX}}"
|
||||||
|
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
||||||
|
<div class="dropdown-anchor"></div>
|
||||||
|
<div class="dropdown-popconfirm-title">
|
||||||
|
<i class="layui-icon layui-icon-help"></i>
|
||||||
|
确定要删除吗?
|
||||||
|
</div>
|
||||||
|
<div class="dropdown-popconfirm-btn">
|
||||||
|
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
|
||||||
|
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var indexData;
|
||||||
|
var debug = layui.setter.debug;
|
||||||
|
layui.data.done = function (d) {
|
||||||
|
//开启调试情况下获取接口赋值数据
|
||||||
|
if (debug) { console.log(d); }
|
||||||
|
|
||||||
|
indexData = d.data;
|
||||||
|
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
||||||
|
function () {
|
||||||
|
var $ = layui.$
|
||||||
|
, admin = layui.admin
|
||||||
|
, table = layui.table
|
||||||
|
, form = layui.form
|
||||||
|
, laydate = layui.laydate
|
||||||
|
, setter = layui.setter
|
||||||
|
, coreHelper = layui.coreHelper
|
||||||
|
, util = layui.util
|
||||||
|
, view = layui.view;
|
||||||
|
|
||||||
|
var searchwhere;
|
||||||
|
//监听搜索
|
||||||
|
form.on('submit(LAY-app-CoreCmsAppUpdateLog-search)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field;
|
||||||
|
searchwhere = field;
|
||||||
|
//执行重载
|
||||||
|
table.reloadData('LAY-app-CoreCmsAppUpdateLog-tableBox', { where: field });
|
||||||
|
});
|
||||||
|
//数据绑定
|
||||||
|
table.render({
|
||||||
|
elem: '#LAY-app-CoreCmsAppUpdateLog-tableBox',
|
||||||
|
url: layui.setter.apiUrl + 'Api/CoreCmsAppUpdateLog/GetPageList',
|
||||||
|
method: 'POST',
|
||||||
|
toolbar: '#LAY-app-CoreCmsAppUpdateLog-toolbar',
|
||||||
|
pagebar: '#LAY-app-CoreCmsAppUpdateLog-pagebar',
|
||||||
|
className: 'pagebarbox',
|
||||||
|
defaultToolbar: ['filter', 'print', 'exports'],
|
||||||
|
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||||
|
page: true,
|
||||||
|
limit: 30,
|
||||||
|
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||||
|
text: { none: '暂无相关数据' },
|
||||||
|
cols: [
|
||||||
|
[
|
||||||
|
{ type: "checkbox", fixed: "left" },
|
||||||
|
{ field: 'id', title: '序列', width: 60, sort: false },
|
||||||
|
{ field: 'version', title: '版本号', sort: false, width: 105 },
|
||||||
|
{ field: 'note', title: '更新内容', sort: false },
|
||||||
|
{ field: 'android', title: '安卓地址', sort: false },
|
||||||
|
{ field: 'ios', title: 'IOS地址', sort: false },
|
||||||
|
{ field: 'addTime', title: '创建时间', width: 130, sort: false },
|
||||||
|
{ field: 'isUpdate', title: '开启更新', width: 95, templet: '#switch_isUpdate', sort: false, unresize: true },
|
||||||
|
{ width: 162, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsAppUpdateLog-tableBox-bar' }
|
||||||
|
]
|
||||||
|
]
|
||||||
|
});
|
||||||
|
//监听排序事件
|
||||||
|
table.on('sort(LAY-app-CoreCmsAppUpdateLog-tableBox)', function (obj) {
|
||||||
|
table.reloadData('LAY-app-CoreCmsAppUpdateLog-tableBox', {
|
||||||
|
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
||||||
|
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
||||||
|
orderField: obj.field, //排序字段
|
||||||
|
orderDirection: obj.type //排序方式
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
//监听行双击事件
|
||||||
|
table.on('rowDouble(LAY-app-CoreCmsAppUpdateLog-tableBox)', function (obj) {
|
||||||
|
//查看详情
|
||||||
|
doDetails(obj);
|
||||||
|
});
|
||||||
|
//头工具栏事件
|
||||||
|
table.on('pagebar(LAY-app-CoreCmsAppUpdateLog-tableBox)', function (obj) {
|
||||||
|
var checkStatus = table.checkStatus(obj.config.id);
|
||||||
|
switch (obj.event) {
|
||||||
|
case 'addData':
|
||||||
|
doCreate();
|
||||||
|
break;
|
||||||
|
case 'batchDelete':
|
||||||
|
doBatchDelete(checkStatus);
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
//监听工具条
|
||||||
|
table.on('tool(LAY-app-CoreCmsAppUpdateLog-tableBox)',
|
||||||
|
function (obj) {
|
||||||
|
if (obj.event === 'detail') {
|
||||||
|
doDetails(obj);
|
||||||
|
} else if (obj.event === 'del') {
|
||||||
|
doDelete(obj);
|
||||||
|
} else if (obj.event === 'edit') {
|
||||||
|
doEdit(obj)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//执行创建操作
|
||||||
|
function doCreate() {
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/GetCreate", null, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '创建数据',
|
||||||
|
area: ['1200px', '400px'],
|
||||||
|
id: 'LAY-popup-CoreCmsAppUpdateLog-create',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('system/appupdatelog/create', { data: e.data }).done(function () {
|
||||||
|
//监听提交
|
||||||
|
form.on('submit(LAY-app-CoreCmsAppUpdateLog-createForm-submit)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isUpdate = field.isUpdate == 'on';
|
||||||
|
|
||||||
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/DoCreate", field, function (e) {
|
||||||
|
console.log(e)
|
||||||
|
if (e.code === 0) {
|
||||||
|
layui.table.reloadData('LAY-app-CoreCmsAppUpdateLog-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-CoreCmsAppUpdateLog-createForm-submit").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行编辑操作
|
||||||
|
function doEdit(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/GetEdit", { id: obj.data.id }, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '编辑数据',
|
||||||
|
area: ['1200px', '400px'],
|
||||||
|
id: 'LAY-popup-CoreCmsAppUpdateLog-edit',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('system/appupdatelog/edit', { data: e.data }).done(function () {
|
||||||
|
//监听提交
|
||||||
|
form.on('submit(LAY-app-CoreCmsAppUpdateLog-editForm-submit)',
|
||||||
|
function (data) {
|
||||||
|
var field = data.field; //获取提交的字段
|
||||||
|
|
||||||
|
field.isUpdate = field.isUpdate == 'on';
|
||||||
|
|
||||||
|
if (debug) { console.log(field); } //开启调试返回数据
|
||||||
|
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/DoEdit", field, function (e) {
|
||||||
|
console.log(e)
|
||||||
|
if (e.code === 0) {
|
||||||
|
layui.table.reloadData('LAY-app-CoreCmsAppUpdateLog-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-CoreCmsAppUpdateLog-editForm-submit").click();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行预览操作
|
||||||
|
function doDetails(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/GetDetails", { id: obj.data.id }, function (e) {
|
||||||
|
if (e.code === 0) {
|
||||||
|
admin.popup({
|
||||||
|
shadeClose: false,
|
||||||
|
title: '查看详情',
|
||||||
|
area: ['1200px', '400px'],
|
||||||
|
id: 'LAY-popup-CoreCmsAppUpdateLog-details',
|
||||||
|
success: function (layero, index) {
|
||||||
|
view(this.id).render('system/appupdatelog/details', { data: e.data }).done(function () {
|
||||||
|
form.render();
|
||||||
|
});
|
||||||
|
// 禁止弹窗出现滚动条
|
||||||
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
layer.msg(e.msg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
//执行单个删除
|
||||||
|
function doDelete(obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/DoDelete", { id: obj.data.id }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
table.reloadData('LAY-app-CoreCmsAppUpdateLog-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#searchTime-CoreCmsAppUpdateLog-addTime',
|
||||||
|
type: 'datetime',
|
||||||
|
range: '到',
|
||||||
|
});
|
||||||
|
|
||||||
|
//监听 表格复选框操作
|
||||||
|
|
||||||
|
layui.form.on('switch(switch_isUpdate)', function (obj) {
|
||||||
|
coreHelper.Post("Api/CoreCmsAppUpdateLog/DoSetisUpdate", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||||
|
if (debug) { console.log(e); } //开启调试返回数据
|
||||||
|
//table.reloadData('LAY-app-CoreCmsAppUpdateLog-tableBox');
|
||||||
|
layer.msg(e.msg);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//重载form
|
||||||
|
form.render();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--设置开启更新-->
|
||||||
|
<script type="text/html" id="switch_isUpdate">
|
||||||
|
<input type="checkbox" name="switch_isUpdate" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isUpdate" {{ d.isUpdate ? 'checked' : '' }}>
|
||||||
|
</script>
|
||||||
|
|
||||||
@@ -48,19 +48,20 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
|||||||
|
|
||||||
private readonly ICoreCmsSettingServices _coreCmsSettingServices;
|
private readonly ICoreCmsSettingServices _coreCmsSettingServices;
|
||||||
private readonly IToolsServices _toolsServices;
|
private readonly IToolsServices _toolsServices;
|
||||||
|
private readonly ICoreCmsAppUpdateLogServices _appUpdateLogServices;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CommonController(ICoreCmsSettingServices settingServices
|
public CommonController(ICoreCmsSettingServices settingServices
|
||||||
, ICoreCmsAreaServices areaServices
|
, ICoreCmsAreaServices areaServices
|
||||||
, IWebHostEnvironment webHostEnvironment, ICoreCmsServiceDescriptionServices serviceDescriptionServices, ICoreCmsSettingServices coreCmsSettingServices, IToolsServices toolsServices)
|
, IWebHostEnvironment webHostEnvironment, ICoreCmsServiceDescriptionServices serviceDescriptionServices, ICoreCmsSettingServices coreCmsSettingServices, IToolsServices toolsServices, ICoreCmsAppUpdateLogServices appUpdateLogServices)
|
||||||
{
|
{
|
||||||
_webHostEnvironment = webHostEnvironment;
|
_webHostEnvironment = webHostEnvironment;
|
||||||
_serviceDescriptionServices = serviceDescriptionServices;
|
_serviceDescriptionServices = serviceDescriptionServices;
|
||||||
_coreCmsSettingServices = coreCmsSettingServices;
|
_coreCmsSettingServices = coreCmsSettingServices;
|
||||||
_toolsServices = toolsServices;
|
_toolsServices = toolsServices;
|
||||||
|
_appUpdateLogServices = appUpdateLogServices;
|
||||||
_settingServices = settingServices;
|
_settingServices = settingServices;
|
||||||
_areaServices = areaServices;
|
_areaServices = areaServices;
|
||||||
|
|
||||||
@@ -166,6 +167,10 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
|||||||
|
|
||||||
var qqMapKey = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.QqMapKey); //腾讯地图key
|
var qqMapKey = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.QqMapKey); //腾讯地图key
|
||||||
|
|
||||||
|
|
||||||
|
var checkInIsOpen = CommonHelper.GetConfigDictionary(allConfigs, SystemSettingConstVars.CheckInIsOpen).ObjectToInt(2); //订单取消时间
|
||||||
|
|
||||||
|
|
||||||
var model = new
|
var model = new
|
||||||
{
|
{
|
||||||
shopLogo,
|
shopLogo,
|
||||||
@@ -216,7 +221,8 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
|||||||
agentNotes,
|
agentNotes,
|
||||||
agentAgreement,
|
agentAgreement,
|
||||||
agentStore,
|
agentStore,
|
||||||
qqMapKey
|
qqMapKey,
|
||||||
|
checkInIsOpen
|
||||||
};
|
};
|
||||||
jm.data = model;
|
jm.data = model;
|
||||||
return jm;
|
return jm;
|
||||||
@@ -267,6 +273,28 @@ namespace CoreCms.Net.Web.WebApi.Controllers
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region 获取最后更新版本号
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取商城关键词说明列表
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<WebApiCallBack> GetAppVersions()
|
||||||
|
{
|
||||||
|
var jm = new WebApiCallBack();
|
||||||
|
|
||||||
|
var model = await _appUpdateLogServices.QueryByClauseAsync(p => p.isUpdate == true, p => p.id, OrderByType.Desc);
|
||||||
|
|
||||||
|
jm.status = true;
|
||||||
|
jm.data = model;
|
||||||
|
return jm;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//验证接口====================================================================================================
|
//验证接口====================================================================================================
|
||||||
|
|
||||||
#region 上传附件通用接口====================================================
|
#region 上传附件通用接口====================================================
|
||||||
|
|||||||
40
数据库/MySql/20220720/升级脚本/1、创建表脚本.sql
Normal file
40
数据库/MySql/20220720/升级脚本/1、创建表脚本.sql
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
Navicat Premium Data Transfer
|
||||||
|
|
||||||
|
Source Server : rm-wz92918pm46bsbc37mo.mysql.rds.aliyuncs.com
|
||||||
|
Source Server Type : MySQL
|
||||||
|
Source Server Version : 50732
|
||||||
|
Source Host : rm-wz92918pm46bsbc37mo.mysql.rds.aliyuncs.com:3306
|
||||||
|
Source Schema : coreshop
|
||||||
|
|
||||||
|
Target Server Type : MySQL
|
||||||
|
Target Server Version : 50732
|
||||||
|
File Encoding : 65001
|
||||||
|
|
||||||
|
Date: 20/07/2022 01:14:24
|
||||||
|
*/
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Table structure for CoreCmsAppUpdateLog
|
||||||
|
-- ----------------------------
|
||||||
|
DROP TABLE IF EXISTS `CoreCmsAppUpdateLog`;
|
||||||
|
CREATE TABLE `CoreCmsAppUpdateLog` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序列',
|
||||||
|
`version` int(11) NOT NULL COMMENT '版本号',
|
||||||
|
`note` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '更新内容',
|
||||||
|
`android` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '安卓地址',
|
||||||
|
`ios` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'IOS地址',
|
||||||
|
`addTime` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0) COMMENT '创建时间',
|
||||||
|
`isUpdate` tinyint(1) NOT NULL COMMENT '开启更新',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
|
||||||
|
|
||||||
|
-- ----------------------------
|
||||||
|
-- Records of CoreCmsAppUpdateLog
|
||||||
|
-- ----------------------------
|
||||||
|
INSERT INTO `CoreCmsAppUpdateLog` VALUES (1, 10, '测试更新内容', 'http://app.coreshop.cn/apk/coreshopandroid.apk', '', '0000-00-00 00:00:00', 1);
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
1
数据库/MySql/20220720/升级脚本/2、添加后台菜单链接数据.sql
Normal file
1
数据库/MySql/20220720/升级脚本/2、添加后台菜单链接数据.sql
Normal file
@@ -0,0 +1 @@
|
|||||||
|
INSERT INTO `SysMenu` VALUES (1388, 43, 'appupdatelog', '安卓苹果更新日志', NULL, 'system/appupdatelog/index', NULL, 0, 10, NULL, NULL, NULL, 0, 0, '2022-07-20 01:19:33', NULL);
|
||||||
BIN
数据库/MySql/20220720/完整脚本/coreshop20220720带商品演示脚本aliyun导出.zip
Normal file
BIN
数据库/MySql/20220720/完整脚本/coreshop20220720带商品演示脚本aliyun导出.zip
Normal file
Binary file not shown.
BIN
数据库/MySql/20220720/完整脚本/coreshop20220720带商品演示脚本navicat导出.rar
Normal file
BIN
数据库/MySql/20220720/完整脚本/coreshop20220720带商品演示脚本navicat导出.rar
Normal file
Binary file not shown.
@@ -1,3 +1,6 @@
|
|||||||
|
2022-07-20
|
||||||
|
【新增】新增表【CoreCmsAppUpdateLog】版本更新表,用于启动安卓app获取对应更新
|
||||||
|
|
||||||
2022-07-15
|
2022-07-15
|
||||||
【新增】表【CoreCmsGoods】增加【initialSales】初始销量字段,用于展示友好销量
|
【新增】表【CoreCmsGoods】增加【initialSales】初始销量字段,用于展示友好销量
|
||||||
|
|
||||||
|
|||||||
BIN
数据库/SqlServer/20220720/20220720完整数据库带演示商品.rar
Normal file
BIN
数据库/SqlServer/20220720/20220720完整数据库带演示商品.rar
Normal file
Binary file not shown.
51
数据库/SqlServer/20220720/升级脚本/1、创建表脚本.sql
Normal file
51
数据库/SqlServer/20220720/升级脚本/1、创建表脚本.sql
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
|
||||||
|
/****** Object: Table [dbo].[CoreCmsAppUpdateLog] Script Date: 2022/7/20 1:02:59 ******/
|
||||||
|
SET ANSI_NULLS ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
SET QUOTED_IDENTIFIER ON
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE TABLE [dbo].[CoreCmsAppUpdateLog](
|
||||||
|
[id] [INT] IDENTITY(1,1) NOT NULL,
|
||||||
|
[version] [INT] NOT NULL,
|
||||||
|
[note] [NVARCHAR](255) NOT NULL,
|
||||||
|
[android] [NVARCHAR](255) NULL,
|
||||||
|
[ios] [NVARCHAR](255) NULL,
|
||||||
|
[addTime] [DATETIME] NOT NULL,
|
||||||
|
[isUpdate] [BIT] NOT NULL,
|
||||||
|
CONSTRAINT [PK_CoreCmsAppUpdateLog] PRIMARY KEY CLUSTERED
|
||||||
|
(
|
||||||
|
[id] ASC
|
||||||
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
||||||
|
) ON [PRIMARY]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[CoreCmsAppUpdateLog] ADD CONSTRAINT [DF_CoreCmsAppUpdateLog_addTime] DEFAULT (GETDATE()) FOR [addTime]
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'id'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD>汾<EFBFBD><EFBFBD>' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'version'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'note'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'android'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'IOS<EFBFBD><EFBFBD>ַ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'ios'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.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'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'addTime'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog', @level2type=N'COLUMN',@level2name=N'isUpdate'
|
||||||
|
GO
|
||||||
|
|
||||||
|
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'<EFBFBD>汾<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'CoreCmsAppUpdateLog'
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
BIN
数据库/SqlServer/20220720/升级脚本/2、添加后台菜单链接数据.sql
Normal file
BIN
数据库/SqlServer/20220720/升级脚本/2、添加后台菜单链接数据.sql
Normal file
Binary file not shown.
@@ -1,3 +1,6 @@
|
|||||||
|
2022-07-20
|
||||||
|
【新增】新增表【CoreCmsAppUpdateLog】版本更新表,用于启动安卓app获取对应更新
|
||||||
|
|
||||||
2022-07-15
|
2022-07-15
|
||||||
【新增】表【CoreCmsGoods】增加【initialSales】初始销量字段,用于展示友好销量
|
【新增】表【CoreCmsGoods】增加【initialSales】初始销量字段,用于展示友好销量
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user