package com.TinyPro.controller;
import com.TinyPro.annotation.PermissionAnnotation;
import com.TinyPro.annotation.Reject;
import com.TinyPro.entity.dto.CreateI18Dto;
import com.TinyPro.entity.dto.UpdateI18Dto;
import com.TinyPro.entity.page.PageWrapper;
import com.TinyPro.entity.po.I18;
import com.TinyPro.entity.vo.I18Vo;
import com.TinyPro.service.II18Service;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.Param;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/i18")
public class I18Controller {
@Autowired
private II18Service i18Service;
@Reject
@PermissionAnnotation("i18n::add")
@PostMapping("")
public ResponseEntity<String> createI18Dto(@Valid @RequestBody CreateI18Dto createI18Dto) {
return i18Service.create(createI18Dto);
}
@GetMapping("/format")
public ResponseEntity<Map<String, Map<String, String>>> getFormat(HttpServletRequest request) {
Map<String, Map<String, String>> result = i18Service.getFormat(request);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@GetMapping
@PermissionAnnotation("i18n::query")
public ResponseEntity<PageWrapper<I18Vo>> findAll(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "0") Integer limit,
@RequestParam(required = false) Integer all,
@RequestParam (required = false)List<Integer> lang,
@RequestParam(required = false) String key,
@RequestParam(required = false) String content) {
boolean allBool = !(all != null && all != 0);
return i18Service.findAll(page, limit, allBool, lang, key, content);
}
@PermissionAnnotation("i18n::query")
@GetMapping("{id}")
public ResponseEntity<I18Vo> findOne(@PathVariable Integer id) {
return new ResponseEntity<I18Vo>(i18Service.getI18ById(id), HttpStatus.OK);
}
@PatchMapping("/{id}")
@PermissionAnnotation("i18n::update")
public ResponseEntity<I18Vo> update(
@PathVariable Long id,
@RequestBody UpdateI18Dto dto) {
return i18Service.updateByi18nId(id, dto);
}
@Reject()
@PermissionAnnotation("i18n::remove")
@DeleteMapping("/{id}")
public ResponseEntity<I18> remove(@PathVariable Integer id) {
I18 result = i18Service.removei18ById(id);
return new ResponseEntity<>(result, HttpStatus.OK);
}
@Reject()
@PostMapping("/batch")
@PermissionAnnotation("i18n::batch-remove")
public ResponseEntity<List<I18>> batchRemove(@RequestBody List<Long> ids) {
return this.i18Service.batchDeleteUser(ids);
}
}