package com.mokamrp.privates.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.mokamrp.privates.constant.Constants; import com.mokamrp.privates.constant.HttpStatus; import com.mokamrp.privates.entity.AddHandle; import com.mokamrp.privates.entity.DelHandle; import com.mokamrp.privates.entity.EditHandle; import com.mokamrp.privates.entity.IndexHandle; import com.mokamrp.privates.help.AjaxResult; import com.mokamrp.privates.mapper.pojo.*; import com.mokamrp.privates.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.*; /** * 一个粗糙的鸡肋 * * @author gy @since 2021-04-17 * @reviser leon @since 2021-04-20 */ public class BaseController { @Autowired public IService service; @PostMapping("/del") public Object delete(@Valid @RequestBody DelHandle delHandle, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage()); } QueryWrapper QueryWrapper = new QueryWrapper<>(); QueryWrapper.in("id", delHandle.getIds()); boolean res = service.remove(QueryWrapper); if (!res) { return AjaxResult.error("删除失败"); } return AjaxResult.success(Constants.SUCCESS, res); } @PostMapping("/add") public Object add(@Valid @RequestBody AddHandle addHandle, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage()); } Date date = new Date(); Boolean res = service.save(addHandle.getRaw()); if (res) { return AjaxResult.success(Constants.SUCCESS, res); } else { return AjaxResult.error("新增失败", res); } } @PostMapping("/edit") public Object edit(@Valid @RequestBody EditHandle editHandle, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage()); } service.update(editHandle.getRaw(), new QueryWrapper().in("id", editHandle.getIds())); return AjaxResult.success(Constants.SUCCESS, true); } @GetMapping("/edit") public Object info(@RequestParam(name = "ids") String ids) { if (ids == null || ids.isEmpty()){ return AjaxResult.error("ids null"); } T res = service.getOne(new QueryWrapper().eq("id",ids)); return AjaxResult.success(Constants.SUCCESS, res); } @PostMapping("/index") public Object index(@Valid @RequestBody IndexHandle indexHandle, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage()); } Iterator> filterIt = indexHandle.getFilter().entrySet().iterator(); QueryWrapper wrapper = new QueryWrapper(); //.@leon where like,=,<> while (filterIt.hasNext()) { Map.Entry entry = filterIt.next(); String key = entry.getKey(); String value = entry.getValue(); Map op = indexHandle.getOp(); // 操作符为空,pass if (op.get(key) == null || op.get(key).isEmpty()) { continue; } // 这里sql字段需要驼峰转下划线 String columnName = StringUtils.humpToLine2(key); switch (op.get(key)) { case "=": wrapper = wrapper.eq(columnName, value); break; case "RANGE": String[] strArr = value.split(" - "); if(strArr.length <=1){ break; } wrapper = wrapper.le(columnName, strArr[1]); wrapper = wrapper.ge(columnName, strArr[0]); break; case "LIKE": wrapper = wrapper.like(columnName, "%" + value + "%"); break; case "<>": wrapper = wrapper.ne(columnName, value); break; case "IN(...)": wrapper = wrapper.in(columnName, value); break; } } //.统计数量 Integer total = service.count(wrapper); //.@leon order if (indexHandle.getOrder() != null && indexHandle.getSort() != null) { String order = indexHandle.getOrder(); String sort = indexHandle.getSort(); if (!order.isEmpty() && !sort.isEmpty()) { if (order.equals("asc")) { wrapper = wrapper.orderByAsc(sort); } else if (order.equals("desc")) { wrapper = wrapper.orderByDesc(sort); } } } //.@leon offset limit Page page = service.page( new Page(indexHandle.getOffset(), indexHandle.getLimit()), wrapper ); Map resMap = new HashMap(); resMap.put("list", page.getRecords()); resMap.put("total", total); return AjaxResult.success(resMap); } }