package ${package}.${moduleName}.controller;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.elephant.framework.galaxy.aroad.response.R;
import com.elephant.framework.galaxy.aroad.module.common.annotation.SysLog;
import ${package}.${moduleName}.entity.${className};
import ${package}.${moduleName}.service.${className}Service;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import com.elephant.framework.galaxy.aroad.module.common.controller.BaseController;


/**
 * ${comments}
 *
 * @author ${author}
 * @date ${datetime}
 */
@RestController
@AllArgsConstructor
@RequestMapping("/${pathName}")
public class ${className}Controller extends BaseController  {

  private final  ${className}Service ${classname}Service;

  /**
   * 分页查询
   * @param page 分页对象
   * @param ${classname} ${comments}
   * @return
   */
  @GetMapping("/page")
  public R get${className}Page(Page page, ${className} ${classname}) {
    return  new R<>(${classname}Service.page(page,Wrappers.query(${classname})));
  }


  /**
   * 通过id查询${comments}
   * @param ${pk.lowerAttrName} id
   * @return R
   */
  @GetMapping("/{${pk.lowerAttrName}}")
  public R getById(@PathVariable("${pk.lowerAttrName}") ${pk.attrType} ${pk.lowerAttrName}){
    return new R<>(${classname}Service.getById(${pk.lowerAttrName}));
  }

  /**
   * 新增${comments}
   * @param ${classname} ${comments}
   * @return R
   */
  @SysLog("新增${comments}")
  @PostMapping
  public R save(@RequestBody ${className} ${classname}){
    return new R<>(${classname}Service.save(${classname}));
  }

  /**
   * 修改${comments}
   * @param ${classname} ${comments}
   * @return R
   */
  @SysLog("修改${comments}")
  @PutMapping
  public R updateById(@RequestBody ${className} ${classname}){
    return new R<>(${classname}Service.updateById(${classname}));
  }

  /**
   * 通过id删除${comments}
   * @param ${pk.lowerAttrName} id
   * @return R
   */
  @SysLog("删除${comments}")
  @DeleteMapping("/{${pk.lowerAttrName}}")
  public R removeById(@PathVariable ${pk.attrType} ${pk.lowerAttrName}){
    return new R<>(${classname}Service.removeById(${pk.lowerAttrName}));
  }

}
