You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

270 lines
10 KiB

package cn.com.v2.controller;
import cn.com.v2.common.base.BaseController;
import cn.com.v2.common.config.V2Config;
import cn.com.v2.common.domain.AjaxResult;
import cn.com.v2.common.domain.ResultTable;
import cn.com.v2.common.domain.Tablepar;
import cn.com.v2.model.GoviewProject;
import cn.com.v2.model.GoviewProjectData;
import cn.com.v2.model.SysFile;
import cn.com.v2.model.vo.GoviewProjectVo;
import cn.com.v2.model.vo.SysFileVo;
import cn.com.v2.service.IGoviewProjectDataService;
import cn.com.v2.service.IGoviewProjectService;
import cn.com.v2.service.ISysFileService;
import cn.com.v2.util.ConvertUtil;
import cn.com.v2.util.SnowflakeIdWorker;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpRequest;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* <p>
* 前端控制器
* </p>
*
* @author fc
* @since 2023-04-30
*/
@RestController
@RequestMapping("/api/goview/project")
public class GoviewProjectController extends BaseController {
@Autowired
private ISysFileService iSysFileService;
@Autowired
private V2Config v2Config;
@Autowired
private IGoviewProjectService iGoviewProjectService;
@Autowired
private IGoviewProjectDataService iGoviewProjectDataService;
@ApiOperation(value = "分页跳转", notes = "分页跳转")
@GetMapping("/list")
@ResponseBody
public ResultTable list(Tablepar tablepar) {
Page<GoviewProject> page = new Page<>(tablepar.getPage(), tablepar.getLimit());
GoviewProject entity = new GoviewProject();
entity.setState(1);
IPage<GoviewProject> iPages = iGoviewProjectService.page(page, new QueryWrapper<>(entity));
ResultTable resultTable = new ResultTable();
resultTable.setData(iPages.getRecords());
resultTable.setCode(200);
resultTable.setCount(iPages.getTotal());
resultTable.setMsg("获取成功");
return resultTable;
}
@ApiOperation(value = "分页跳转", notes = "分页跳转")
@PostMapping("/zf")
public String zf(@RequestParam Map<String, Object> map) {
String body = HttpRequest.post("http://baijiahu.mynatapp.cc/").form(map).timeout(120000).execute().body();
return body;
}
/**
* 新增保存
*
* @param
* @return
*/
//@Log(title = "项目表新增", action = "111")
@ApiOperation(value = "新增", notes = "新增")
@PostMapping("/create")
@ResponseBody
public AjaxResult add(@RequestBody GoviewProject goviewProject) {
goviewProject.setCreateTime(DateUtil.now());
goviewProject.setState(-1);
boolean b = iGoviewProjectService.save(goviewProject);
if (b) {
return successData(200, goviewProject).put("msg", "创建成功");
} else {
return error();
}
}
/**
* 项目表删除
*
* @param ids
* @return
*/
//@Log(title = "项目表删除", action = "111")
@ApiOperation(value = "删除", notes = "删除")
@DeleteMapping("/delete")
@ResponseBody
public AjaxResult remove(String ids) {
List<String> lista = ConvertUtil.toListStrArray(ids);
Boolean b = iGoviewProjectService.removeByIds(lista);
if (b) {
return success();
} else {
return error();
}
}
@ApiOperation(value = "修改保存", notes = "修改保存")
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(@RequestBody GoviewProject goviewProject) {
goviewProject.setState(1);
Boolean b = iGoviewProjectService.updateById(goviewProject);
if (b) {
return success();
}
return error();
}
@ApiOperation(value = "项目重命名", notes = "项目重命名")
@PostMapping("/rename")
@ResponseBody
public AjaxResult rename(@RequestBody GoviewProject goviewProject) {
LambdaUpdateWrapper<GoviewProject> updateWrapper = new LambdaUpdateWrapper<GoviewProject>();
updateWrapper.eq(GoviewProject::getId, goviewProject.getId());
updateWrapper.set(GoviewProject::getProjectName, goviewProject.getProjectName());
Boolean b = iGoviewProjectService.update(updateWrapper);
if (b) {
return success();
}
return error();
}
//发布/取消项目状态
@PutMapping("/publish")
@ResponseBody
public AjaxResult updateVisible(@RequestBody GoviewProject goviewProject) {
if (goviewProject.getState() == -1 || goviewProject.getState() == 1) {
LambdaUpdateWrapper<GoviewProject> updateWrapper = new LambdaUpdateWrapper<GoviewProject>();
updateWrapper.eq(GoviewProject::getId, goviewProject.getId());
updateWrapper.set(GoviewProject::getState, goviewProject.getState());
Boolean b = iGoviewProjectService.update(updateWrapper);
if (b) {
return success();
}
return error();
}
return error("警告非法字段");
}
@ApiOperation(value = "获取项目存储数据", notes = "获取项目存储数据")
@GetMapping("/getData")
@ResponseBody
public AjaxResult getData(String projectId, ModelMap map) {
GoviewProject goviewProject = iGoviewProjectService.getById(projectId);
GoviewProjectData blogText = iGoviewProjectDataService.getProjectid(projectId);
if (blogText != null) {
GoviewProjectVo goviewProjectVo = new GoviewProjectVo();
BeanUtils.copyProperties(goviewProject, goviewProjectVo);
goviewProjectVo.setContent(blogText.getContent());
return AjaxResult.successData(200, goviewProjectVo).put("msg", "获取成功");
}
return AjaxResult.successData(200, null).put("msg", "无数据");
}
@ApiOperation(value = "保存项目数据", notes = "保存项目数据")
@PostMapping("/save/data")
@ResponseBody
public AjaxResult saveData(GoviewProjectData data) {
GoviewProject goviewProject = iGoviewProjectService.getById(data.getProjectId());
if (goviewProject == null) {
return error("没有该项目ID");
}
GoviewProjectData goviewProjectData = iGoviewProjectDataService.getOne(new LambdaQueryWrapper<GoviewProjectData>().eq(GoviewProjectData::getProjectId, goviewProject.getId()));
if (goviewProjectData != null) {
data.setId(goviewProjectData.getId());
iGoviewProjectDataService.updateById(data);
return success("数据保存成功");
} else {
iGoviewProjectDataService.save(data);
return success("数据保存成功");
}
}
/**
* 上传文件
*
* @param object 文件流对象
* @param bucketName 桶名
* @return
* @throws Exception
*/
@PostMapping("/upload")
public AjaxResult upload(@RequestBody MultipartFile object) throws IOException {
String fileName = object.getOriginalFilename();
//默认文件格式
String suffixName = v2Config.getDefaultFormat();
String mediaKey = "";
Long filesize = object.getSize();
//文件名字
String fileSuffixName = "";
if (fileName.lastIndexOf(".") != -1) {//有后缀
suffixName = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();
//mediaKey=MD5.create().digestHex(fileName);
mediaKey = SnowflakeIdWorker.getUUID();
fileSuffixName = mediaKey + suffixName;
} else {//无后缀
//取得唯一id
//mediaKey = MD5.create().digestHex(fileName+suffixName);
mediaKey = SnowflakeIdWorker.getUUID();
//fileSuffixName=mediaKey+suffixName;
}
String virtualKey = FileController.getFirstNotNull(v2Config.getXnljmap());
String absolutePath = v2Config.getXnljmap().get(FileController.getFirstNotNull(v2Config.getXnljmap()));
SysFile sysFile = new SysFile();
sysFile.setId(SnowflakeIdWorker.getUUID());
sysFile.setFileName(fileSuffixName);
sysFile.setFileSize(Integer.parseInt(filesize + ""));
sysFile.setFileSuffix(suffixName);
sysFile.setCreateTime(DateUtil.formatLocalDateTime(LocalDateTime.now()));
String filepath = DateUtil.formatDate(new Date());
sysFile.setRelativePath(filepath);
sysFile.setVirtualKey(virtualKey);
sysFile.setAbsolutePath(absolutePath.replace("file:", ""));
iSysFileService.saveOrUpdate(sysFile);
File desc = FileController.getAbsoluteFile(v2Config.getFileurl() + File.separator + filepath, fileSuffixName);
object.transferTo(desc);
SysFileVo sysFileVo = BeanUtil.copyProperties(sysFile, SysFileVo.class);
sysFileVo.setFileurl(v2Config.getHttpurl() + sysFile.getVirtualKey() + "/" + sysFile.getRelativePath() + "/" + sysFile.getFileName());
return successData(200, sysFileVo);
}
}