BaseController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.mokamrp.privates.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.IService;
  5. import com.mokamrp.privates.constant.Constants;
  6. import com.mokamrp.privates.constant.HttpStatus;
  7. import com.mokamrp.privates.entity.AddHandle;
  8. import com.mokamrp.privates.entity.DelHandle;
  9. import com.mokamrp.privates.entity.EditHandle;
  10. import com.mokamrp.privates.entity.IndexHandle;
  11. import com.mokamrp.privates.help.AjaxResult;
  12. import com.mokamrp.privates.mapper.pojo.*;
  13. import com.mokamrp.privates.utils.StringUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.validation.BindingResult;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.validation.Valid;
  18. import java.util.*;
  19. /**
  20. * 一个粗糙的鸡肋
  21. *
  22. * @author gy @since 2021-04-17
  23. * @reviser leon @since 2021-04-20
  24. */
  25. public class BaseController<T> {
  26. @Autowired
  27. public IService<T> service;
  28. @PostMapping("/del")
  29. public Object delete(@Valid @RequestBody DelHandle<T> delHandle, BindingResult bindingResult) {
  30. if (bindingResult.hasErrors()) {
  31. return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
  32. }
  33. QueryWrapper<T> QueryWrapper = new QueryWrapper<>();
  34. QueryWrapper.in("id", delHandle.getIds());
  35. boolean res = service.remove(QueryWrapper);
  36. if (!res) {
  37. return AjaxResult.error("删除失败");
  38. }
  39. return AjaxResult.success(Constants.SUCCESS, res);
  40. }
  41. @PostMapping("/add")
  42. public Object add(@Valid @RequestBody AddHandle<T> addHandle, BindingResult bindingResult) {
  43. if (bindingResult.hasErrors()) {
  44. return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
  45. }
  46. Date date = new Date();
  47. Boolean res = service.save(addHandle.getRaw());
  48. if (res) {
  49. return AjaxResult.success(Constants.SUCCESS, res);
  50. } else {
  51. return AjaxResult.error("新增失败", res);
  52. }
  53. }
  54. @PostMapping("/edit")
  55. public Object edit(@Valid @RequestBody EditHandle<T> editHandle, BindingResult bindingResult) {
  56. if (bindingResult.hasErrors()) {
  57. return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
  58. }
  59. service.update(editHandle.getRaw(), new QueryWrapper<T>().in("id", editHandle.getIds()));
  60. return AjaxResult.success(Constants.SUCCESS, true);
  61. }
  62. @GetMapping("/edit")
  63. public Object info(@RequestParam(name = "ids") String ids) {
  64. if (ids == null || ids.isEmpty()){
  65. return AjaxResult.error("ids null");
  66. }
  67. T res = service.getOne(new QueryWrapper<T>().eq("id",ids));
  68. return AjaxResult.success(Constants.SUCCESS, res);
  69. }
  70. @PostMapping("/index")
  71. public Object index(@Valid @RequestBody IndexHandle indexHandle, BindingResult bindingResult) {
  72. if (bindingResult.hasErrors()) {
  73. return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
  74. }
  75. Iterator<Map.Entry<String, String>> filterIt = indexHandle.getFilter().entrySet().iterator();
  76. QueryWrapper<T> wrapper = new QueryWrapper<T>();
  77. //.@leon where like,=,<>
  78. while (filterIt.hasNext()) {
  79. Map.Entry<String, String> entry = filterIt.next();
  80. String key = entry.getKey();
  81. String value = entry.getValue();
  82. Map<String, String> op = indexHandle.getOp();
  83. // 操作符为空,pass
  84. if (op.get(key) == null || op.get(key).isEmpty()) {
  85. continue;
  86. }
  87. // 这里sql字段需要驼峰转下划线
  88. String columnName = StringUtils.humpToLine2(key);
  89. switch (op.get(key)) {
  90. case "=":
  91. wrapper = wrapper.eq(columnName, value);
  92. break;
  93. case "RANGE":
  94. String[] strArr = value.split(" - ");
  95. if(strArr.length <=1){
  96. break;
  97. }
  98. wrapper = wrapper.le(columnName, strArr[1]);
  99. wrapper = wrapper.ge(columnName, strArr[0]);
  100. break;
  101. case "LIKE":
  102. wrapper = wrapper.like(columnName, "%" + value + "%");
  103. break;
  104. case "<>":
  105. wrapper = wrapper.ne(columnName, value);
  106. break;
  107. case "IN(...)":
  108. wrapper = wrapper.in(columnName, value);
  109. break;
  110. }
  111. }
  112. //.统计数量
  113. Integer total = service.count(wrapper);
  114. //.@leon order
  115. if (indexHandle.getOrder() != null && indexHandle.getSort() != null) {
  116. String order = indexHandle.getOrder();
  117. String sort = indexHandle.getSort();
  118. if (!order.isEmpty() && !sort.isEmpty()) {
  119. if (order.equals("asc")) {
  120. wrapper = wrapper.orderByAsc(sort);
  121. } else if (order.equals("desc")) {
  122. wrapper = wrapper.orderByDesc(sort);
  123. }
  124. }
  125. }
  126. //.@leon offset limit
  127. Page<T> page = service.page(
  128. new Page<T>(indexHandle.getOffset(), indexHandle.getLimit()), wrapper
  129. );
  130. Map<String, Object> resMap = new HashMap<String, Object>();
  131. resMap.put("list", page.getRecords());
  132. resMap.put("total", total);
  133. return AjaxResult.success(resMap);
  134. }
  135. }