Service.cs.vm 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. using @(@Model.NameSpace).Const;
  2. namespace @Model.NameSpace;
  3. /// <summary>
  4. /// @(@Model.BusName)服务
  5. /// </summary>
  6. [ApiDescriptionSettings(@(@Model.ProjectLastName)Const.GroupName, Order = 100)]
  7. public class @(@Model.ClassName)Service : IDynamicApiController, ITransient
  8. {
  9. private readonly SqlSugarRepository<@(@Model.ClassName)> _rep;
  10. public @(@Model.ClassName)Service(SqlSugarRepository<@(@Model.ClassName)> rep)
  11. {
  12. _rep = rep;
  13. }
  14. /// <summary>
  15. /// 分页查询@(@Model.BusName)
  16. /// </summary>
  17. /// <param name="input"></param>
  18. /// <returns></returns>
  19. [HttpPost]
  20. [ApiDescriptionSettings(Name = "Page")]
  21. public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(@(@Model.ClassName)Input input)
  22. {
  23. var query= _rep.AsQueryable()
  24. @foreach (var column in Model.TableField){
  25. if (@column.QueryWhether == "Y"){
  26. if (@column.NetType?.TrimEnd('?') == "string"){
  27. if(@column.QueryType == "like"){
  28. @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.ColumnName), u => u.@(@column.ColumnName).Contains(input.@(@column.ColumnName).Trim()))
  29. }else{
  30. @:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.ColumnName), u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
  31. }
  32. }else if(@column.NetType?.TrimEnd('?') == "int" || @column.NetType?.TrimEnd('?') == "long"){
  33. @:.WhereIF(input.@column.ColumnName>0, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
  34. }else if(@column.NetType?.TrimEnd('?') == "DateTime" && @column.QueryType == "~"){
  35. }
  36. }
  37. }
  38. @{string tableName = "u";}
  39. @if(Model.IsJoinTable){
  40. @://处理外键相关字段的连接
  41. @foreach (var column in Model.TableField){
  42. if(@column.EffectType == "fk"){
  43. tableName += ", " + column.ColumnName.ToLower();
  44. @:.LeftJoin<@(@column.FkEntityName)>((@(@tableName)) => u.@(@column.ColumnName) == @(@column.ColumnName.ToLower()).Id )
  45. }
  46. }
  47. @:.Select((@(@tableName))=> new @(@Model.ClassName)Output{
  48. @foreach (var column in Model.TableField){
  49. @:@(@column.ColumnName) = u.@(@column.ColumnName),
  50. if(@column.EffectType == "fk"){
  51. @:@(@column.FkEntityName)@(@column.FkColumnName) = @(@column.ColumnName.ToLower()).@(@column.FkColumnName),
  52. }
  53. }
  54. @:})
  55. @foreach (var column in Model.TableField){
  56. if(@column.EffectType == "fk"){
  57. }else if(@column.EffectType == "Upload"){
  58. @://.Mapper(c => c.@(@column.ColumnName)Attachment, c => c.@(@column.ColumnName))
  59. }
  60. }
  61. } else {
  62. @:.Select<@(@Model.ClassName)Output>()
  63. }
  64. ;
  65. @foreach (var column in Model.TableField){
  66. if (@column.QueryWhether == "Y"){
  67. if(@column.NetType?.TrimEnd('?') == "DateTime" && @column.QueryType == "~"){
  68. @:if(input.@(@column.ColumnName)Range != null && input.@(@column.ColumnName)Range.Count >0)
  69. @:{
  70. @:DateTime? start= input.@(@column.ColumnName)Range[0];
  71. @:query = query.WhereIF(start.HasValue, u => u.@column.ColumnName > start);
  72. @:if (input.@(@column.ColumnName)Range.Count >1 && input.@(@column.ColumnName)Range[1].HasValue)
  73. @:{
  74. @:var end = input.@(@column.ColumnName)Range[1].Value.AddDays(1);
  75. @:query = query.Where(u => u.@(@column.ColumnName) < end);
  76. @:}
  77. @:}
  78. }
  79. }
  80. }
  81. query = query.OrderBuilder(input);
  82. return await query.ToPagedListAsync(input.Page, input.PageSize);
  83. }
  84. /// <summary>
  85. /// 增加@(@Model.BusName)
  86. /// </summary>
  87. /// <param name="input"></param>
  88. /// <returns></returns>
  89. [HttpPost]
  90. [ApiDescriptionSettings(Name = "Add")]
  91. public async Task Add(Add@(@Model.ClassName)Input input)
  92. {
  93. var entity = input.Adapt<@(@Model.ClassName)>();
  94. await _rep.InsertAsync(entity);
  95. }
  96. /// <summary>
  97. /// 删除@(@Model.BusName)
  98. /// </summary>
  99. /// <param name="input"></param>
  100. /// <returns></returns>
  101. [HttpPost]
  102. [ApiDescriptionSettings(Name = "Delete")]
  103. public async Task Delete(Delete@(@Model.ClassName)Input input)
  104. {
  105. @foreach (var column in Model.TableField){
  106. if (@column.ColumnKey == "True"){
  107. @:var entity = await _rep.GetFirstAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName)) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
  108. }
  109. }
  110. await _rep.FakeDeleteAsync(entity); //假删除
  111. }
  112. /// <summary>
  113. /// 更新@(@Model.BusName)
  114. /// </summary>
  115. /// <param name="input"></param>
  116. /// <returns></returns>
  117. [HttpPost]
  118. [ApiDescriptionSettings(Name = "Update")]
  119. public async Task Update(Update@(@Model.ClassName)Input input)
  120. {
  121. var entity = input.Adapt<@(@Model.ClassName)>();
  122. await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
  123. }
  124. /// <summary>
  125. /// 获取@(@Model.BusName)
  126. /// </summary>
  127. /// <param name="input"></param>
  128. /// <returns></returns>
  129. [HttpGet]
  130. [ApiDescriptionSettings(Name = "Detail")]
  131. public async Task<@(@Model.ClassName)> Get([FromQuery] QueryById@(@Model.ClassName)Input input)
  132. {
  133. @foreach (var column in Model.TableField){
  134. if (@column.ColumnKey == "True"){
  135. @:return await _rep.GetFirstAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName));
  136. }
  137. }
  138. }
  139. /// <summary>
  140. /// 获取@(@Model.BusName)列表
  141. /// </summary>
  142. /// <param name="input"></param>
  143. /// <returns></returns>
  144. [HttpGet]
  145. [ApiDescriptionSettings(Name = "List")]
  146. public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
  147. {
  148. return await _rep.AsQueryable().Select<@(@Model.ClassName)Output>().ToListAsync();
  149. }
  150. @foreach (var column in Model.TableField){
  151. if(@column.EffectType == "fk"){
  152. @:/// <summary>
  153. @:/// 获取@(@column.ColumnComment)列表
  154. @:/// </summary>
  155. @:/// <param name="input"></param>
  156. @:/// <returns></returns>
  157. @:[ApiDescriptionSettings(Name = "@(@column.FkEntityName)@(@column.ColumnName)Dropdown"), HttpGet]
  158. @:public async Task<dynamic> @(@column.FkEntityName)@(@column.ColumnName)Dropdown()
  159. @:{
  160. @:return await _rep.Context.Queryable<@(@column.FkEntityName)>()
  161. @:.Select(u => new
  162. @:{
  163. @:Label = u.@(@column.FkColumnName),
  164. @:Value = u.Id
  165. @:}
  166. @:).ToListAsync();
  167. @:}
  168. }
  169. }
  170. @foreach (var column in Model.TableField){
  171. if(@column.EffectType == "Upload"){
  172. @:/// <summary>
  173. @:/// 上传@(@column.ColumnComment)
  174. @:/// </summary>
  175. @:/// <param name="file"></param>
  176. @:/// <returns></returns>
  177. @:[ApiDescriptionSettings(Name = "Upload@(@column.ColumnName)"), HttpPost]
  178. @:public async Task<FileOutput> Upload@(@column.ColumnName)([Required] IFormFile file)
  179. @:{
  180. @:var service = App.GetService<SysFileService>();
  181. @:return await service.UploadFile(file, "upload/@(@column.ColumnName)");
  182. @:}
  183. }
  184. }
  185. @foreach (var column in Model.TableField){
  186. if(@column.EffectType == "ApiTreeSelect"){
  187. @:[HttpGet("/@(@Model.LowerClassName)/@(@column.FkEntityName)Tree")]
  188. @:public async Task<dynamic> @(@column.FkEntityName)Tree()
  189. @:{
  190. @:return await _rep.Context.Queryable<@(@column.FkEntityName)>().ToTreeAsync(u => u.Children, u => u.@(@column.PidColumn), 0);
  191. @:}
  192. }
  193. }
  194. }