左树右表Controller.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. package ${package}.${moduleName}.controller;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.core.util.ArrayUtil;
  4. import cn.hutool.core.collection.CollUtil;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import ${package}.common.core.util.R;
  9. import ${package}.common.log.annotation.SysLog;
  10. #if($opensource)
  11. import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
  12. import com.pig4cloud.plugin.excel.annotation.RequestExcel;
  13. #else
  14. import ${package}.common.excel.annotation.ResponseExcel;
  15. import ${package}.common.excel.annotation.RequestExcel;
  16. #end
  17. import ${package}.${moduleName}.entity.${ChildClassName}Entity;
  18. import ${package}.${moduleName}.entity.${ClassName}Entity;
  19. import ${package}.${moduleName}.service.${ClassName}Service;
  20. import io.swagger.v3.oas.annotations.security.SecurityRequirement;
  21. #if($isSpringBoot3)
  22. import ${package}.common.security.annotation.HasPermission;
  23. import org.springdoc.core.annotations.ParameterObject;
  24. #else
  25. import org.springframework.security.access.prepost.PreAuthorize;
  26. import org.springdoc.api.annotations.ParameterObject;
  27. #end
  28. import org.springframework.http.HttpHeaders;
  29. import io.swagger.v3.oas.annotations.tags.Tag;
  30. import io.swagger.v3.oas.annotations.Operation;
  31. import lombok.RequiredArgsConstructor;
  32. import org.springframework.validation.BindingResult;
  33. import org.springframework.web.bind.annotation.*;
  34. import java.util.List;
  35. import java.util.Objects;
  36. /**
  37. * ${tableComment}
  38. *
  39. * @author ${author}
  40. * @date ${datetime}
  41. */
  42. #foreach($field in $childFieldList)
  43. #if($field.primaryPk == '1')
  44. #set($childPkField = $field)
  45. #break
  46. #end
  47. #end
  48. #set($childFieldGetter = $str.getProperty($childField))
  49. @RestController
  50. @RequiredArgsConstructor
  51. @RequestMapping("/${functionName}" )
  52. @Tag(description = "${functionName}" , name = "${tableComment}管理" )
  53. @SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
  54. public class ${ClassName}Controller {
  55. private final ${ClassName}Service ${className}Service;
  56. /**
  57. * 分页查询
  58. * @param page 分页对象
  59. * @param ${className} ${tableComment}
  60. * @return
  61. */
  62. @Operation(summary = "分页查询" , description = "分页查询" )
  63. @GetMapping("/page" )
  64. #if($isSpringBoot3)
  65. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")
  66. #else
  67. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view')" )
  68. #end
  69. public R get${ClassName}Page(@ParameterObject Page page, @ParameterObject ${ClassName}Entity ${className}) {
  70. LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaQuery();
  71. #foreach ($field in $queryList)
  72. #set($getAttrName=$str.getProperty($field.attrName))
  73. #set($var="${className}.$getAttrName()")
  74. #if($field.attrType == 'String')
  75. #set($expression="StrUtil.isNotBlank")
  76. #else
  77. #set($expression="Objects.nonNull")
  78. #end
  79. #if($field.queryFormType == 'daterange' || $field.queryFormType == 'datetimerange')
  80. if (ArrayUtil.isNotEmpty(${className}.${getAttrName}Range())) {
  81. wrapper.between(${ClassName}Entity::$getAttrName, ${className}.${getAttrName}Range()[0], ${className}.${getAttrName}Range()[1]);
  82. }
  83. #elseif($field.queryType == '=')
  84. wrapper.eq($expression($var),${ClassName}Entity::$getAttrName,$var);
  85. #elseif( $field.queryType == 'like' )
  86. wrapper.like($expression($var),${ClassName}Entity::$getAttrName,$var);
  87. #elseif( $field.queryType == '!-' )
  88. wrapper.ne($expression($var),${ClassName}Entity::$getAttrName,$var);
  89. #elseif( $field.queryType == '>' )
  90. wrapper.gt($expression($var),${ClassName}Entity::$getAttrName,$var);
  91. #elseif( $field.queryType == '<' )
  92. wrapper.lt($expression($var),${ClassName}Entity::$getAttrName,$var);
  93. #elseif( $field.queryType == '>=' )
  94. wrapper.ge($expression($var),${ClassName}Entity::$getAttrName,$var);
  95. #elseif( $field.queryType == '<=' )
  96. wrapper.le($expression($var),${ClassName}Entity::$getAttrName,$var);
  97. #elseif( $field.queryType == 'left like' )
  98. wrapper.likeLeft($expression($var),${ClassName}Entity::$getAttrName,$var);
  99. #elseif( $field.queryType == 'right like' )
  100. wrapper.likeRight($expression($var),${ClassName}Entity::$getAttrName,$var);
  101. #end
  102. #end
  103. #if($childField)
  104. if (Objects.nonNull(${className}.$childFieldGetter())) {
  105. wrapper.eq(${ClassName}Entity::$str.getProperty($childField), ${className}.$childFieldGetter());
  106. }
  107. #end
  108. return R.ok(${className}Service.page(page, wrapper));
  109. }
  110. /**
  111. * 通过条件查询${tableComment}
  112. * @param ${className} 查询条件
  113. * @return R 对象列表
  114. */
  115. @Operation(summary = "通过条件查询" , description = "通过条件查询对象" )
  116. @GetMapping("/details" )
  117. #if($isSpringBoot3)
  118. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")
  119. #else
  120. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view')" )
  121. #end
  122. public R getDetails(@ParameterObject ${ClassName}Entity ${className}) {
  123. return R.ok(${className}Service.list(Wrappers.query(${className})));
  124. }
  125. /**
  126. * 新增${tableComment}
  127. * @param ${className} ${tableComment}
  128. * @return R
  129. */
  130. @Operation(summary = "新增${tableComment}" , description = "新增${tableComment}" )
  131. @SysLog("新增${tableComment}" )
  132. @PostMapping
  133. #if($isSpringBoot3)
  134. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_add")
  135. #else
  136. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_add')" )
  137. #end
  138. public R save(@RequestBody ${ClassName}Entity ${className}) {
  139. return R.ok(${className}Service.save(${className}));
  140. }
  141. /**
  142. * 修改${tableComment}
  143. * @param ${className} ${tableComment}
  144. * @return R
  145. */
  146. @Operation(summary = "修改${tableComment}" , description = "修改${tableComment}" )
  147. @SysLog("修改${tableComment}" )
  148. @PutMapping
  149. #if($isSpringBoot3)
  150. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_edit")
  151. #else
  152. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_edit')" )
  153. #end
  154. public R updateById(@RequestBody ${ClassName}Entity ${className}) {
  155. return R.ok(${className}Service.updateById(${className}));
  156. }
  157. /**
  158. * 通过id删除${tableComment}
  159. * @param ids ${pk.attrName}列表
  160. * @return R
  161. */
  162. @Operation(summary = "通过id删除${tableComment}" , description = "通过id删除${tableComment}" )
  163. @SysLog("通过id删除${tableComment}" )
  164. @DeleteMapping
  165. #if($isSpringBoot3)
  166. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_del")
  167. #else
  168. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_del')" )
  169. #end
  170. public R removeById(@RequestBody ${pk.attrType}[] ids) {
  171. return R.ok(${className}Service.removeBatchByIds(CollUtil.toList(ids)));
  172. }
  173. /**
  174. * 导出excel 表格
  175. * @param ${className} 查询条件
  176. * @param ids 导出指定ID
  177. * @return excel 文件流
  178. */
  179. @ResponseExcel
  180. @GetMapping("/export")
  181. #if($isSpringBoot3)
  182. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_export")
  183. #else
  184. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_export')" )
  185. #end
  186. public List<${ClassName}Entity> exportExcel(${ClassName}Entity ${className},${pk.attrType}[] ids) {
  187. return ${className}Service.list(Wrappers.lambdaQuery(${className}).in(ArrayUtil.isNotEmpty(ids), ${ClassName}Entity::$str.getProperty($pk.attrName), ids));
  188. }
  189. /**
  190. * 导入excel 表
  191. * @param ${className}List 对象实体列表
  192. * @param bindingResult 错误信息列表
  193. * @return ok fail
  194. */
  195. @PostMapping("/import")
  196. #if($isSpringBoot3)
  197. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_export")
  198. #else
  199. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_export')" )
  200. #end
  201. public R importExcel(@RequestExcel List<${ClassName}Entity> ${className}List, BindingResult bindingResult) {
  202. return R.ok(${className}Service.saveBatch(${className}List));
  203. }
  204. /**
  205. * 获取树形列表
  206. * @param ${childClassName} 树节点查询条件
  207. * @return 树形数据
  208. */
  209. @Operation(summary = "获取树形列表" , description = "获取树形列表" )
  210. @GetMapping("/tree" )
  211. #if($isSpringBoot3)
  212. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")
  213. #else
  214. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view')" )
  215. #end
  216. public R getTree(@ParameterObject ${ChildClassName}Entity ${childClassName}) {
  217. return R.ok(${className}Service.buildTree(Wrappers.lambdaQuery(${childClassName})));
  218. }
  219. /**
  220. * 通过条件查询树节点
  221. * @param ${childClassName} 树节点查询条件
  222. * @return 树节点列表
  223. */
  224. @Operation(summary = "通过条件查询树节点" , description = "通过条件查询树节点" )
  225. @GetMapping("/tree/details" )
  226. #if($isSpringBoot3)
  227. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view")
  228. #else
  229. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_view')" )
  230. #end
  231. public R getTreeDetails(@ParameterObject ${ChildClassName}Entity ${childClassName}) {
  232. return R.ok(${className}Service.getTreeDetails(${childClassName}));
  233. }
  234. /**
  235. * 新增树节点
  236. * @param ${childClassName} 树节点
  237. * @return R
  238. */
  239. @Operation(summary = "新增树节点" , description = "新增树节点" )
  240. @SysLog("新增树节点" )
  241. @PostMapping("/tree")
  242. #if($isSpringBoot3)
  243. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_add")
  244. #else
  245. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_add')" )
  246. #end
  247. public R saveTree(@RequestBody ${ChildClassName}Entity ${childClassName}) {
  248. return R.ok(${className}Service.saveTree(${childClassName}));
  249. }
  250. /**
  251. * 修改树节点
  252. * @param ${childClassName} 树节点
  253. * @return R
  254. */
  255. @Operation(summary = "修改树节点" , description = "修改树节点" )
  256. @SysLog("修改树节点" )
  257. @PutMapping("/tree")
  258. #if($isSpringBoot3)
  259. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_edit")
  260. #else
  261. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_edit')" )
  262. #end
  263. public R updateTree(@RequestBody ${ChildClassName}Entity ${childClassName}) {
  264. return R.ok(${className}Service.updateTree(${childClassName}));
  265. }
  266. /**
  267. * 通过id删除树节点
  268. * @param ids 树节点ID列表
  269. * @return R
  270. */
  271. @Operation(summary = "通过id删除树节点" , description = "通过id删除树节点" )
  272. @SysLog("通过id删除树节点" )
  273. @DeleteMapping("/tree")
  274. #if($isSpringBoot3)
  275. @HasPermission("$str.lowerCase($moduleName)_$str.lowerCase($functionName)_del")
  276. #else
  277. @PreAuthorize("@pms.hasPermission('$str.lowerCase($moduleName)_$str.lowerCase($functionName)_del')" )
  278. #end
  279. public R removeTree(@RequestBody ${childPkField.attrType}[] ids) {
  280. return R.ok(${className}Service.removeTreeByIds(ids));
  281. }
  282. }