package com.izouma.nineth.web; import com.izouma.nineth.domain.UserAssetSummary; import com.izouma.nineth.domain.UserDetail; import com.izouma.nineth.dto.MetaRestResult; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.dto.PublicShowDTO; import com.izouma.nineth.exception.BusinessException; import com.izouma.nineth.repo.UserAssetSummaryRepo; import com.izouma.nineth.repo.UserDetailRepo; import com.izouma.nineth.service.ContentAuditService; import com.izouma.nineth.service.UserDetailService; import com.izouma.nineth.utils.excel.ExcelUtils; import lombok.AllArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; @RestController @RequestMapping("/userDetail") @AllArgsConstructor public class UserDetailController extends BaseController { private UserDetailService userDetailService; private UserDetailRepo userDetailRepo; private ContentAuditService contentAuditService; private UserAssetSummaryRepo userAssetSummaryRepo; //@PreAuthorize("hasRole('ADMIN')") @PostMapping("/save") public UserDetail save(@RequestBody UserDetail record) { if (StringUtils.isNotBlank(record.getAutograph())) { if (!contentAuditService.auditText(record.getAutograph())) { throw new BusinessException("简介包含非法内容"); } }if (StringUtils.isNotBlank(record.getNickname())) { if (!contentAuditService.auditText(record.getNickname())) { throw new BusinessException("昵称包含非法内容"); } }if (StringUtils.isNotBlank(record.getMail())) { if (!contentAuditService.auditText(record.getMail())) { throw new BusinessException("邮箱包含非法内容"); } }if (StringUtils.isNotBlank(record.getSchool())) { if (!contentAuditService.auditText(record.getSchool())) { throw new BusinessException("学校包含非法内容"); } }if (StringUtils.isNotBlank(record.getCompany())) { if (!contentAuditService.auditText(record.getCompany())) { throw new BusinessException("公司包含非法内容"); } }if (StringUtils.isNotBlank(record.getOccupation())) { if (!contentAuditService.auditText(record.getOccupation())) { throw new BusinessException("职业包含非法内容"); } } return userDetailRepo.save(record); } @PostMapping("/meta/save") public MetaRestResult metaSave(@RequestBody UserDetail record) { UserDetail userDetail; try { userDetail = save(record); } catch (Exception e) { return MetaRestResult.returnError(e.getMessage()); } return MetaRestResult.returnSuccess(userDetail); } //@PreAuthorize("hasRole('ADMIN')") @PostMapping("/all") public Page all(@RequestBody PageQuery pageQuery) { return userDetailService.all(pageQuery); } @GetMapping("/get/{id}") public UserDetail get(@PathVariable Long id) { UserDetail userDetail = userDetailRepo.findById(id).orElse(null); if (Objects.isNull(userDetail)) { userDetail = new UserDetail(); userDetail.setUserId(id); userDetailRepo.save(userDetail); } userDetail.setNftCount(userDetailRepo.findNftCountById(id)); userDetail.setBuildCount(userDetailRepo.findBuildCountById(id)); userDetail.setPlotCount(userDetailRepo.findPlotCountById(id)); userDetail.setFansCount(userDetailRepo.findFansCountById(id)); userDetail.setReikiCount(userDetailRepo.findReikiCountById(id)); userDetail.setMedalCount(userDetailRepo.findMedalCountById(id)); userDetail.setPersonalheatCount(userDetailRepo.findPersonalHeatCountById(id)); List userAssetSummaries = userAssetSummaryRepo.findPublicShowAsset(id); List list = new ArrayList<>(); if (CollectionUtils.isEmpty(userAssetSummaries)) { userDetail.setPublicShowDTOs(list); return userDetail; } userAssetSummaries.forEach(userAssetSummary -> { list.add(new PublicShowDTO(userAssetSummary.getName(), "video/mp4".equals(userAssetSummary.getPic().get(0).getType()) ? userAssetSummary.getPic().get(0).getThumb() : userAssetSummary.getPic().get(0).getUrl(), userAssetSummary.getOpenShowNum())); }); userDetail.setPublicShowDTOs(list); return userDetail; } @GetMapping("/light/{userId}") public boolean light(@PathVariable Long userId) { UserDetail userDetail = userDetailRepo.findById(userId).orElse(null); if (Objects.isNull(userDetail)) { return false; } if (StringUtils.isNotBlank(userDetail.getAutograph())) { return true; } if (StringUtils.isNotBlank(userDetail.getBgpic())) { return true; } if (StringUtils.isNotBlank(userDetail.getBirthday())) { return true; } if (StringUtils.isNotBlank(userDetail.getBlood())) { return true; } if (StringUtils.isNotBlank(userDetail.getCompany())) { return true; } if (StringUtils.isNotBlank(userDetail.getConstellation())) { return true; } if (StringUtils.isNotBlank(userDetail.getHome())) { return true; } if (StringUtils.isNotBlank(userDetail.getMail())) { return true; } if (StringUtils.isNotBlank(userDetail.getOccupation())) { return true; } if (StringUtils.isNotBlank(userDetail.getPic())) { return true; } if (StringUtils.isNotBlank(userDetail.getSchool())) { return true; } if (StringUtils.isNotBlank(userDetail.getSex())) { return true; } return false; } @GetMapping("/{userId}/metaQuery") public MetaRestResult metaQuery(@PathVariable Long userId) { return MetaRestResult.returnSuccess(get(userId)); } @PostMapping("/del/{id}") public void del(@PathVariable Long id) { userDetailRepo.softDelete(id); } @GetMapping("/excel") @ResponseBody public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException { List data = all(pageQuery).getContent(); ExcelUtils.export(response, data); } }