package com.template.controller;
import com.alibaba.fastjson.JSON;
import com.template.api.AlumniImageControllerAPI;
import com.template.common.utils.WeiXiaoUtil;
import com.template.common.utils.paramUtils;
import com.template.model.enumModel.ePassType;
import com.template.model.enumModel.eRoleType;
import com.template.model.pojo.*;
import com.template.model.request.insertImageRequest;
import com.template.model.result.CommonResult;
import com.template.model.result.PageUtils;
import com.template.model.vo.*;
import com.template.services.AlumniAdminApplyService;
import com.template.services.AlumniImageService;
import com.template.services.AlumniUserService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
*
* 前端控制器
*
*
* @author ceshi
* @since 2024-11-25
*/
@RestController
public class AlumniImageController implements AlumniImageControllerAPI {
@Autowired
private WeiXiaoUtil weiXiaoUtil;
@Autowired
private AlumniImageService alumniImageService;
@Autowired
private AlumniUserService alumniUserService;
@Autowired
private AlumniAdminApplyService alumniAdminApplyService;
private static Logger logger = LoggerFactory.getLogger(AlumniImageController.class);
@Override
public CommonResult queryImagePage(int currentPage, int pageCount, String userName, String orgName, Integer collegeId, Integer periodId, Integer majorId, Integer classId) {
PageUtils result = alumniImageService.imagePageDatas(currentPage, pageCount, userName, orgName, collegeId, periodId, majorId, classId);
for (ImagePageVo ipv : result.getList()) {
ipv.setImages(Arrays.asList(ipv.getImage().split(",")));
}
return CommonResult.ok(result);
}
@Override
public CommonResult insertImage(insertImageRequest iir, Integer userId, BindingResult bindingResult) {
if (iir == null) {
return CommonResult.fail("请传递参数");
}
if (bindingResult.hasErrors()) {
String st = paramUtils.getParamError(bindingResult);
return CommonResult.fail(st);
}
AlumniUser au = alumniUserService.queryDataById(userId);
if (au == null) {
return CommonResult.fail("操作人已失效,上传失败");
}
AlumniAdminApply aaa = alumniAdminApplyService.queryImageAdmin();
if (aaa == null) {
return CommonResult.fail("校友相册模块未设置管理员,无法上传图片");
}
AlumniImage ai = new AlumniImage();
ai.setImage(StringUtils.join(iir.getImages(), ","));
ai.setCategoryId(iir.getCategoryId());
ai.setCategoryName(iir.getCategoryName());
ai.setIsPass(ePassType.Approval.getValue());
ai.setApplyUser(aaa.getAdmin());
ai.setApplyUserName(aaa.getAdminName());
int result = alumniImageService.insertAlumniImage(ai);
if (result <= 0) {
return CommonResult.fail("上传失败");
}
//发送微校通知
//校友上传照片至相册后,系统生成通知发送给相册管理员:“
// [上传人姓名],相册分类为 [相册分类]。请及时对照片进行审核。”
List users = alumniUserService.queryDataByIds(Arrays.asList(aaa.getAdmin().split(",")));
List cardnumbers = new ArrayList<>();
for (AlumniUser user : users) {
if (org.springframework.util.StringUtils.hasText(user.getCardNumber())) {
cardnumbers.add(user.getCardNumber());
}
}
if (cardnumbers != null && cardnumbers.size() > 0) {
String content = au.getName() + ",相册分类为 " + iir.getCategoryName() + "。请及时对照片进行审核。";
CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "校友相册审核", "校友相册审核", content, null);
if (!sendMessage.getCode().equals("200")) {
logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + result);
}
}
return CommonResult.ok("上传成功");
}
@Override
public CommonResult deleteImageById(int id) {
int result = alumniImageService.deleteDataById(id);
if (result <= 0) {
return CommonResult.fail("删除失败");
}
return CommonResult.ok("删除成功");
}
@Override
public CommonResult queryImageApplyPage(Integer userId, int currentPage, int pageCount, String userName, String orgName, Integer collegeId, Integer periodId, Integer majorId, Integer classId, Integer isPass, String startTime, String endTime) {
AlumniUser au = alumniUserService.queryDataById(userId);
if (au == null) {
return CommonResult.fail("当前操作人已失效,无法加入");
}
if(au.getRoleId().intValue() == eRoleType.Super.getValue()){
userId = null;
}
PageUtils result = alumniImageService.imageApplyPageDatas(currentPage, pageCount,userId, userName, orgName, collegeId, periodId, majorId, classId, isPass, startTime, endTime);
for (ImageApplyPageVo rg : result.getList()) {
rg.setPassName(ePassType.stringOf(rg.getIsPass()));
rg.setImages(Arrays.asList(rg.getImage().split(",")));
}
return CommonResult.ok(result);
}
@Override
public CommonResult toExamineImage(Integer userId, Integer id, Integer isPass, String passValue) throws Exception {
if (isPass.intValue() == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
return CommonResult.fail("审批意见必填");
}
AlumniUser au = alumniUserService.queryDataById(userId);
if (au == null) {
return CommonResult.fail("当前操作人已失效,无法进行审核操作");
}
AlumniImage ai = alumniImageService.queryDataById(id);
if (ai == null) {
return CommonResult.fail("校友相册审核数据已失效,无法进行审核操作");
}
AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(ai.getCreateUser()));
if (cau == null) {
return CommonResult.fail("申请人已失效,无法审核");
}
if (ai.getIsPass().intValue() != ePassType.Approval.getValue()) {
return CommonResult.fail("只有待审核数据能被审核");
}
List userIds = Arrays.asList(ai.getApplyUser().split(","));
if (userIds != null && userIds.size() > 0) {
if (!userIds.contains(String.valueOf(userId))) {
return CommonResult.fail("当前操作人无法操作此审核单");
}
} else {
return CommonResult.fail("当前操作人无法操作此审核单");
}
ai.setIsPass(isPass);
ai.setPassTime(new Date());
ai.setPassValue(passValue);
int result = alumniImageService.updateAlumniImage(ai);
if (result <= 0) {
return CommonResult.fail("审核失败");
}
//发送微校通知
//审核完成后系统生成通知发送给用户:“
// [上传人姓名],相册分类为 [相册分类]。已通过或已拒绝。”
List cardnumbers = new ArrayList<>();
cardnumbers.add(cau.getCardNumber());
String content = cau.getName() + ",相册分类为 " + ai.getCategoryName() + "。" + ePassType.stringOf(ai.getIsPass());
CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "校友相册审核结果", "校友相册审核结果", content, null);
if (!sendMessage.getCode().equals("200")) {
logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + id);
}
return CommonResult.ok("审核成功");
}
@Override
public CommonResult queryMobileImagePage(Integer userId, int currentPage, int pageCount, String keyword, Integer categoryId) {
PageUtils result = alumniImageService.imageMobilePageDatas(currentPage, pageCount, keyword, categoryId);
for (ImageMobilePageVo imp : result.getList()) {
imp.setImages(Arrays.asList(imp.getImage().split(",")));
String collegeName = imp.getCollegeName() == null ? "" : imp.getCollegeName();
String periodName = imp.getPeriodName() == null ? "" : "/" + imp.getPeriodName();
String majorName = imp.getMajorName() == null ? "" : "/" + imp.getMajorName();
String className = imp.getClassName() == null ? "" : "/" + imp.getClassName();
imp.setSchoolInfo(collegeName + "" + periodName + "" + majorName + "/" + className);
imp.setCategoryName("上传了" + imp.getImages().size() + "张照片至" + imp.getCategoryName());
}
return CommonResult.ok(result);
}
@Override
public CommonResult queryMyImagePage(Integer userId, int currentPage, int pageCount, Integer isPass) {
PageUtils result = alumniImageService.imageMyPageDatas(currentPage, pageCount, userId, isPass);
for (ImageMyPageVo imp : result.getList()) {
imp.setImages(Arrays.asList(imp.getImage().split(",")));
imp.setCategoryName("上传了" + imp.getImages().size() + "张照片至" + imp.getCategoryName());
}
return CommonResult.ok(result);
}
}