Skip to content

Debug 定时任务部分统计字段的重复赋值和赋值缺失 #18

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 23 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
64e4128
:sparkles:优化代码生成模板
izhaorui Mar 12, 2024
382abaf
:sparkles:新增无权限记录日志
izhaorui Mar 10, 2024
8cbbe5e
:zap:文章管理优化新增字段ArticleType
izhaorui Mar 20, 2024
f6a063b
:zap:优化功能
izhaorui Mar 23, 2024
711898b
add SysPostDto.cs
izhaorui Mar 23, 2024
d50e872
:bug:修复代码生成编辑后vue模板字段保存失败
izhaorui Mar 25, 2024
a8beed6
:bug:fix操作日志清空查询条件后点击查询数据异常
izhaorui Mar 25, 2024
7e713b6
:art:统一按钮大小可调整
izhaorui Mar 25, 2024
3e3b557
:sparkles:新增用户在线日志记录
izhaorui Mar 27, 2024
e332e25
:zap:fix启动警告
izhaorui Mar 27, 2024
9f3acff
:zap:vue2增加占位页
izhaorui Mar 28, 2024
cbc236d
:zap:优化种子数据
izhaorui Mar 28, 2024
9294053
:zap:启动项目自动创建UserOnline表
izhaorui Mar 29, 2024
7121d7c
:sparkles:种子数据新增通知公告
izhaorui Mar 30, 2024
83238c5
:zap:通知公告优化
izhaorui Mar 30, 2024
9046940
:zap:优化字典查询
izhaorui Apr 2, 2024
65a7c60
:bug:解决文章管理路由配置错误
izhaorui Apr 8, 2024
caa03ad
:zap:优化事务提交
izhaorui Apr 8, 2024
c4ae742
:sparkles: sysUser表新增过滤删除的用户
izhaorui Apr 8, 2024
71f7961
:card_file_box:内容管理优化、数据库新增字段
izhaorui Apr 8, 2024
bbee25e
:pencil:更新死链地址
izhaorui Apr 7, 2024
373483d
:zap:优化建表时表名大小写
izhaorui Apr 12, 2024
8c58e53
Debug 定时任务部分统计字段的重复赋值和赋值缺失
Sheldon-NULL May 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Infrastructure/WebExtensions/LogoExtension.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static void AddLogo(this IServiceCollection services)
Console.WriteLine("💰打赏作者:http://www.izhaorui.cn/vip");
Console.WriteLine("📱移动端体验:http://demo.izhaorui.cn/h5");
Console.WriteLine($"Swagger地址:{url}/swagger/index.html");
Console.WriteLine($"初始化种子数据:{url}/common/InitSeedData");
Console.WriteLine($"初始化种子数据地址:{url}/common/InitSeedData");
}
}
}
5 changes: 3 additions & 2 deletions ZR.Admin.WebApi/Controllers/Article/ArticleController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
using ZR.Admin.WebApi.Filters;
using ZR.Model.System;
using ZR.Model.System.Dto;

using ZR.ServiceCore.Model.Enums;

namespace ZR.Admin.WebApi.Controllers
{
/// <summary>
/// 文章管理
/// 内容管理
/// </summary>
[Verify]
[Route("article")]
Expand Down Expand Up @@ -190,5 +190,6 @@ public IActionResult Delete(int id = 0)
var response = _ArticleService.Delete(id);
return SUCCESS(response);
}

}
}
143 changes: 143 additions & 0 deletions ZR.Admin.WebApi/Controllers/Article/MonentController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
using Microsoft.AspNetCore.Mvc;
using ZR.Admin.WebApi.Filters;
using ZR.Model.System;
using ZR.Model.System.Dto;
using ZR.ServiceCore.Model.Enums;

namespace ZR.Admin.WebApi.Controllers
{
[Verify]
[Route("monent")]
public class MonentController : BaseController
{
/// <summary>
/// 动态接口
/// </summary>
private readonly IArticleService _ArticleService;
private readonly IArticleCategoryService _ArticleCategoryService;

public MonentController(IArticleService ArticleService, IArticleCategoryService articleCategoryService)
{
_ArticleService = ArticleService;
_ArticleCategoryService = articleCategoryService;
}

/// <summary>
/// 查询我的
/// </summary>
/// <returns></returns>
[HttpGet("mylist")]
public IActionResult QueryMyList([FromQuery] ArticleQueryDto parm)
{
parm.UserId = HttpContext.GetUId();
parm.ArticleType = 2;
var response = _ArticleService.GetMyList(parm);

return SUCCESS(response);
}

/// <summary>
/// 查询动态列表
/// </summary>
/// <returns></returns>
[HttpGet("monentList")]
[AllowAnonymous]
public IActionResult QueryMonentList([FromQuery] ArticleQueryDto parm)
{
parm.UserId = HttpContext.GetUId();
parm.ArticleType = 2;
var response = _ArticleService.GetArticleList(parm);

return SUCCESS(response);
}

/// <summary>
/// 置顶
/// </summary>
/// <returns></returns>
[HttpPut("top")]
[Log(Title = "置顶动态", BusinessType = BusinessType.UPDATE)]
public IActionResult Top([FromBody] Article parm)
{
var response = _ArticleService.TopArticle(parm);

return SUCCESS(response);
}

/// <summary>
/// 修改可见范围
/// </summary>
/// <returns></returns>
[HttpPut("changePublic")]
[Log(Title = "是否公开", BusinessType = BusinessType.UPDATE)]
public IActionResult ChangePublic([FromBody] Article parm)
{
var response = _ArticleService.ChangeArticlePublic(parm);

return SUCCESS(response);
}

/// <summary>
/// 动态发布
/// </summary>
/// <returns></returns>
[HttpPost("publishMonent")]
[Log(Title = "动态发布", BusinessType = BusinessType.INSERT)]
public IActionResult PublishMonent([FromBody] ArticleDto parm)
{
var addModel = parm.Adapt<Article>().ToCreate(context: HttpContext);
addModel.AuthorName = HttpContext.GetName();
addModel.UserId = HttpContext.GetUId();
addModel.ArticleType = ArticleTypeEnum.Monent;
addModel.UserIP = HttpContext.GetClientUserIp();

string location = HttpContextExtension.GetIpInfo(addModel.UserIP);
addModel.Location = location;
return SUCCESS(_ArticleService.InsertReturnIdentity(addModel));
}

/// <summary>
/// 删除动态
/// </summary>
/// <returns></returns>
[HttpDelete("del/{id}")]
[Log(Title = "动态删除", BusinessType = BusinessType.DELETE)]
public IActionResult DeleteMonents(int id = 0)
{
var userId = HttpContext.GetUId();
var info = _ArticleService.GetId(id);
if (info == null || info.UserId != userId)
{
return ToResponse(ResultCode.CUSTOM_ERROR, "删除失败(-1)");
}
var response = _ArticleService.Delete(id);
return SUCCESS(response);
}

/// <summary>
/// 点赞动态
/// </summary>
/// <returns></returns>
[HttpPost("praise/{id}")]
public IActionResult PraiseMonents(int id = 0)
{
var response = _ArticleService.PraiseArticle(id);
return SUCCESS(response);
}

/// <summary>
/// 动态信息
/// </summary>
/// <returns></returns>
[HttpDelete("getInfo")]
public IActionResult GetInfo()
{
var userId = HttpContext.GetUId();

var monentNum = _ArticleService.Queryable()
.Count(f => f.UserId == userId && f.ArticleType == ArticleTypeEnum.Monent);

return SUCCESS(new { monentNum, commentNum = 0 });
}
}
}
37 changes: 34 additions & 3 deletions ZR.Admin.WebApi/Controllers/CommonController.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using MiniExcelLibs;
using System.IO;
using ZR.Admin.WebApi.Filters;
using ZR.Model.System;
using ZR.Service.IService;
Expand Down Expand Up @@ -86,9 +88,9 @@ public IActionResult SendMsg(string msg, string toUser = "")
[ActionPermissionFilter(Permission = "common")]
public async Task<IActionResult> UploadFile([FromForm] UploadDto uploadDto, StoreType storeType = StoreType.LOCAL)
{
IFormFile formFile = uploadDto.File;
if (formFile == null) throw new CustomException(ResultCode.PARAM_ERROR, "上传文件不能为空");
if (uploadDto?.File == null) throw new CustomException(ResultCode.PARAM_ERROR, "上传文件不能为空");
SysFile file = new();
IFormFile formFile = uploadDto.File;
string fileExt = Path.GetExtension(formFile.FileName);//文件后缀
double fileSize = Math.Round(formFile.Length / 1024.0, 2);//文件大小KB

Expand Down Expand Up @@ -194,7 +196,7 @@ public IActionResult InitSeedData(bool clean = false)
{
if (!WebHostEnvironment.IsDevelopment())
{
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败");
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败,请在开发模式下初始化");
}
var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx");
SeedDataService seedDataService = new();
Expand All @@ -210,5 +212,34 @@ public IActionResult InitSeedData(bool clean = false)
result
});
}

/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet]
[ActionPermissionFilter(Permission = "common")]
[Log(BusinessType = BusinessType.INSERT, Title = "初始化数据")]
public IActionResult UpdateSeedData()
{
if (!WebHostEnvironment.IsDevelopment())
{
return ToResponse(ResultCode.CUSTOM_ERROR, "导入数据失败,请在开发模式下初始化");
}
var path = Path.Combine(WebHostEnvironment.WebRootPath, "data.xlsx");
SeedDataService seedDataService = new();

var sysNotice = MiniExcel.Query<SysNotice>(path, sheetName: "notice").ToList();
var result = seedDataService.InitNoticeData(sysNotice);

var sysMenu = MiniExcel.Query<SysMenu>(path, sheetName: "menu").Where(f => f.MenuId >= 1104).ToList();
var result5 = seedDataService.InitMenuData(sysMenu);

return SUCCESS(new
{
result,
result5
});
}
}
}
6 changes: 3 additions & 3 deletions ZR.Admin.WebApi/Controllers/System/SysDeptController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public SysDeptController(ISysDeptService deptService
[HttpGet("list")]
public IActionResult List([FromQuery] SysDeptQueryDto dept)
{
return SUCCESS(DeptService.GetSysDepts(dept), TIME_FORMAT_FULL);
return SUCCESS(DeptService.GetList(dept));
}

/// <summary>
Expand All @@ -42,11 +42,11 @@ public IActionResult List([FromQuery] SysDeptQueryDto dept)
[HttpGet("list/exclude/{deptId}")]
public IActionResult ExcludeChild(long deptId)
{
var depts = DeptService.GetSysDepts(new SysDeptQueryDto());
var depts = DeptService.GetList(new SysDeptQueryDto());

for (int i = 0; i < depts.Count; i++)
{
SysDept d = depts[i];
SysDeptDto d = depts[i];
long[] deptIds = Tools.SpitLongArrary(d.Ancestors);
if (d.DeptId == deptId || ((IList)deptIds).Contains(deptId))
{
Expand Down
42 changes: 31 additions & 11 deletions ZR.Admin.WebApi/Controllers/System/SysDictDataController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using ZR.Admin.WebApi.Filters;
using ZR.Model;
using ZR.Model.System;
Expand Down Expand Up @@ -39,7 +40,7 @@ public IActionResult List([FromQuery] SysDictData dictData, [FromQuery] PagerInf
{
var result = SysDictService.SelectDictDataByCustomSql(dictData.DictType);

list.Result.AddRange(result);
list.Result.AddRange(result.Adapt<List<SysDictData>>());
list.TotalNum += result.Count;
}
return SUCCESS(list);
Expand All @@ -64,26 +65,45 @@ public IActionResult DictType(string dictType)
/// <returns></returns>
[AllowAnonymous]
[HttpPost("types")]
public IActionResult DictTypes([FromBody] List<SysdictDataDto> dto)
public IActionResult DictTypes([FromBody] List<SysdictDataParamDto> dto)
{
var list = SysDictDataService.SelectDictDataByTypes(dto.Select(f => f.DictType).ToArray());
List<SysdictDataDto> dataVos = new();
var dataVos = GetDicts(dto.Select(f => f.DictType).ToArray());

foreach (var dic in dto)
return SUCCESS(dataVos);
}

/// <summary>
/// 移动端使用uniapp
/// </summary>
/// <returns></returns>
[AllowAnonymous]
[HttpPost("dicts")]
public IActionResult GetDictTypes()
{
var data = HttpContext.GetBody();
return SUCCESS(GetDicts(JsonConvert.DeserializeObject<string[]>(data)));
}

private List<SysdictDataParamDto> GetDicts([FromBody]string[] dicts)
{
List<SysdictDataParamDto> dataVos = new();
var list = SysDictDataService.SelectDictDataByTypes(dicts);

foreach (var dic in dicts)
{
SysdictDataDto vo = new()
SysdictDataParamDto vo = new()
{
DictType = dic.DictType,
ColumnName = dic.ColumnName,
List = list.FindAll(f => f.DictType == dic.DictType)
DictType = dic,
List = list.FindAll(f => f.DictType == dic)
};
if (dic.DictType.StartsWith("cus_") || dic.DictType.StartsWith("sql_"))
if (dic.StartsWith("cus_") || dic.StartsWith("sql_"))
{
vo.List.AddRange(SysDictService.SelectDictDataByCustomSql(dic.DictType));
vo.List.AddRange(SysDictService.SelectDictDataByCustomSql(dic));
}
dataVos.Add(vo);
}
return SUCCESS(dataVos);
return dataVos;
}

/// <summary>
Expand Down
4 changes: 2 additions & 2 deletions ZR.Admin.WebApi/Controllers/System/SysLoginController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ public IActionResult GetUserInfo()
//权限集合 eg *:*:*,system:user:list
List<string> permissions = permissionService.GetMenuPermission(user);
user.WelcomeContent = GlobalConstant.WelcomeMessages[new Random().Next(0, GlobalConstant.WelcomeMessages.Length)];

return SUCCESS(new { user, roles, permissions });
user.Password = string.Empty;
return SUCCESS(new { user = user.Adapt<SysUserDto>(), roles, permissions });
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion ZR.Admin.WebApi/Controllers/System/SysMenuController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public IActionResult MenuEdit([FromBody] MenuDto menuDto)
.NameMatchingStrategy(NameMatchingStrategy.IgnoreCase);//忽略字段名称的大小写;//忽略除以上配置的所有字段

var modal = menuDto.Adapt<SysMenu>(config).ToUpdate(HttpContext);
if (UserConstants.YES_FRAME.Equals(modal.IsFrame) && !modal.Path.StartsWith("http"))
if (UserConstants.YES_FRAME.Equals(modal.IsFrame) && (!modal.Path.StartsWith("http") && !modal.Path.StartsWith("/link")))
{
return ToResponse(ApiResult.Error($"修改菜单'{modal.MenuName}'失败,地址必须以http(s)://开头"));
}
Expand Down
20 changes: 20 additions & 0 deletions ZR.Admin.WebApi/Controllers/System/SysNoticeController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -154,5 +154,25 @@ public IActionResult DeleteSysNotice(string ids)

return SUCCESS(response);
}

/// <summary>
/// 导出通知公告表
/// </summary>
/// <returns></returns>
[Log(Title = "通知公告表", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
[HttpGet("export")]
[ActionPermissionFilter(Permission = "system:notice:export")]
public IActionResult Export([FromQuery] SysNoticeQueryDto parm)
{
parm.PageNum = 1;
parm.PageSize = 100000;
var list = _SysNoticeService.ExportList(parm).Result;
if (list == null || list.Count <= 0)
{
return ToResponse(ResultCode.FAIL, "没有要导出的数据");
}
var result = ExportExcelMini(list, "通知公告表", "通知公告表");
return ExportExcel(result.Item2, result.Item1);
}
}
}
Loading