package cn.timer.api.controller.qyxx; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Timer; import java.util.TimerTask; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; 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.RestController; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.timer.api.bean.qyxx.CmsAnnouncement; import cn.timer.api.bean.qyxx.CmsContent; import cn.timer.api.bean.qyxx.CmsContentModular; import cn.timer.api.bean.qyxx.CmsIsRead; import cn.timer.api.bean.yggl.YgglMainEmp; import cn.timer.api.config.annotation.CurrentUser; import cn.timer.api.config.annotation.UserBean; import cn.timer.api.dao.qyxx.CmsAnnouncementMapper; import cn.timer.api.dao.qyxx.CmsContentMapper; import cn.timer.api.dao.qyxx.CmsIsReadMapper; import cn.timer.api.dto.qyxx.CmsContentDto; import cn.timer.api.dto.qyxx.QyxxIsReadDto; import cn.timer.api.dto.qyxx.QyxxQueryDto; import cn.timer.api.utils.Result; import cn.timer.api.utils.ResultUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(tags = "5.0企业讯息") @Transactional @RequestMapping(value = "/qyxx", produces = { "application/json" }) public class CmsController { @Autowired private CmsContentMapper cmsContentMapper; @Autowired private CmsIsReadMapper cmsIsReadMapper; @Autowired private CmsAnnouncementMapper cmsAnnouncementMapper; /** * 查询所有讯息 */ @GetMapping(value = "/hqqyxx") @ApiOperation(value = "获取企业讯息", httpMethod = "GET", notes = "接口发布说明") public Result<List<CmsContent>> getQyxx(@CurrentUser UserBean userBean) { if (userBean.getOrgCode() != null) { Integer orgCode = userBean.getOrgCode(); QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("organization_id", orgCode); List<CmsContent> qynr = CmsContent.builder().build().selectList(queryWrapper); return ResultUtil.data(qynr, "查询成功!"); } return ResultUtil.error("请登录!"); } /** * 查询最新讯息,获取标题和发布时间 */ @GetMapping(value = "/zxqyxx") @ApiOperation(value = "获取最新讯息的标题、发布时间", httpMethod = "GET", notes = "接口发布说明") public Result<List<CmsContent>> groupbyTime(@CurrentUser UserBean userBean) { Integer orgCode = userBean.getOrgCode(); QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "title", "author", "releasetime", "fmtpath").eq("releasestate", 0) .eq("organization_id", orgCode).orderByDesc("releasetime").last("limit 6"); List<CmsContent> qynr = CmsContent.builder().build().selectList(queryWrapper); return ResultUtil.data(qynr, "查询分类成功!"); } /** * 分类,获取标题和发布时间 * */ // @GetMapping(value = "/flhqqyxx") // @ApiOperation(value = "获取首页分类讯息标题、发布时间", httpMethod = "GET", notes = "接口发布说明") // public Result<List<List<CmsContent>>> groupbyTpye(@CurrentUser UserBean userBean) { // Integer orgCode = userBean.getOrgCode(); // List<List<CmsContent>> cmsContentList = new ArrayList<List<CmsContent>>(); // List<CmsContent> qynrAll = new ArrayList<CmsContent>(); // QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); // queryWrapper.select("modularid").eq("organization_id", orgCode).orderByAsc("modularid").groupBy("modularid"); // List<CmsContent> qynrs = CmsContent.builder().build().selectList(queryWrapper); // if (qynrs == null || qynrs.size() == 0) { // return ResultUtil.success("查询成功!"); // } // for (CmsContent cmsContent : qynrs) { // QueryWrapper<CmsContent> query222 = new QueryWrapper<>(); // query222.select("id", "modularid", "title", "author", "releasetime").eq("releasestate", 0) // .eq("organization_id", orgCode).orderByDesc("releasetime").last("limit 5") // .eq("modularid", cmsContent.getModularid()); // List<CmsContent> cmsContents = CmsContent.builder().build().selectList(query222); // if (cmsContents != null && cmsContents.size() > 0) { // for (int i = 0; i < cmsContents.size(); i++) { // qynrAll.add(cmsContents.get(i)); // } // cmsContentList.add(qynrAll); // qynrAll = new ArrayList<CmsContent>(); // } // } // return ResultUtil.data(cmsContentList, "查询成功!"); // } /** * 分类内容获取 * */ @GetMapping(value = "/getType") @ApiOperation(value = "分类内容获取", httpMethod = "GET", notes = "接口发布说明") public Result<Object> getType(@CurrentUser UserBean userBean) { // 分类模块信息 List<CmsContentModular> list = CmsContentModular.builder().build() .selectList(new QueryWrapper<CmsContentModular>().eq("is_open", 0) // 是否开启 // .eq("organization_id", userBean.getOrgCode()) ); List<List<CmsContent>> o = new ArrayList<List<CmsContent>>(); for (CmsContentModular cmsContentModular : list) { // 分类模块id Integer id = cmsContentModular.getId(); QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.select("id", "modularid", "title", "author", "releasetime").eq("releasestate", 0) .eq("organization_id", userBean.getOrgCode()).orderByDesc("releasetime").eq("modularid", id) .last("limit 5"); List<CmsContent> qynrs = CmsContent.builder().build().selectList(queryWrapper); o.add(qynrs); } return ResultUtil.data(o, "查询成功!"); } /** * 获取分类 * */ @GetMapping(value = "/xxfl") @ApiOperation(value = "获取分类", httpMethod = "GET", notes = "接口发布说明") public Result<Object> getxxfl(@CurrentUser UserBean userBean) { return ResultUtil.data(CmsContentModular.builder().build().selectList(new QueryWrapper<CmsContentModular>() // .eq("organization_id", userBean.getOrgCode()) .eq("is_open", 0)), "查询分类成功!"); } /** * 新增/修改企业OA讯息 */ @PostMapping(value = "/updateqyxx") @ApiOperation(value = "添加/修改企业OA讯息", httpMethod = "POST", notes = "接口发布说明") public Result<CmsContent> updateqyxx(@CurrentUser UserBean userBean, @RequestBody CmsContentDto cmsContentDto) { Integer orgCode = userBean.getOrgCode(); Integer empNum = userBean.getEmpNum(); String str = StringUtils.join(cmsContentDto.getFilepath(), ","); // 数组转字符串(逗号分隔)(推荐) CmsContent qynr = new CmsContent(); BeanUtil.copyProperties(cmsContentDto, qynr); qynr.setFilepath(str); // Integer i = 10000; // qynr.setXxbh("XX" + i++); Boolean a = qynr.getId() == null; if (a && qynr.getPublisher() == null) qynr.setPublisher(empNum); qynr.setOrganizationId(orgCode); Long now = new Date().getTime(); // 录入时间 qynr.setAddeddate(now); // 发布方式:1,审核通过后立即发布,2定时发布,3手动发布 Integer fbfs = qynr.getReleasetype(); // 定时 if (fbfs != null && fbfs == 2) { qynr.setReleasetime(qynr.getReleasetime()); } qynr.setPublisherName(YgglMainEmp.builder().build().selectOne(new LambdaQueryWrapper<YgglMainEmp>() .eq(YgglMainEmp::getOrgCode, orgCode).eq(YgglMainEmp::getEmpNum, empNum)).getName()); qynr.setReleasetype(fbfs); qynr.setStatus(0); qynr.insertOrUpdate(); if (a) return ResultUtil.data(qynr, "提交成功、等待管理员审核"); else return ResultUtil.data(qynr, "修改成功"); } /** * 删除企业OA讯息 */ @DeleteMapping(value = "/deleteqyxx") @ApiOperation(value = "删除企业OA讯息", httpMethod = "DELETE", notes = "接口发布说明") public Result<CmsContent> deleteqyxx(@CurrentUser UserBean userBean, @RequestBody List<CmsContent> ids) { if (ids != null) { cmsContentMapper.deleteBatchIds(ids); return ResultUtil.success("删除成功"); } return ResultUtil.error("没这个id"); } /** * 审核企业OA讯息 */ @PostMapping(value = "/shqyxx") @ApiOperation(value = "审核企业OA讯息", httpMethod = "POST", notes = "接口发布说明") public Result<CmsContent> shqyxx(@CurrentUser UserBean userBean, @RequestBody CmsContent qynr) { Long now = new Date().getTime(); Integer orgCode = userBean.getOrgCode(); Integer empNum = userBean.getEmpNum(); YgglMainEmp ygglMainEmp = YgglMainEmp.builder().build().selectOne(new QueryWrapper<YgglMainEmp>().lambda() .eq(YgglMainEmp::getOrgCode, orgCode).eq(YgglMainEmp::getEmpNum, empNum)); if (ygglMainEmp != null) { qynr.setAuditor(ygglMainEmp.getName());// 审核人 } qynr.setAudittime(now.toString());// 审核时间 qynr.setAuditopinion(qynr.getAuditopinion());// 审核意见 // 如果通过审核 if (qynr.getStatus() == 1) { if (qynr.getReleasetype() != null && qynr.getReleasetype() == 1) { // 发布方式为审核通过立即发布,设置发布时间为now qynr.setReleasetime(now.toString()); // 已发布 qynr.setReleasestate(0); } else if (qynr.getReleasetype() == 2) { // 定时发布 QueryWrapper<CmsContent> q = new QueryWrapper<CmsContent>(); q.select("id", "releasetime").eq("id", qynr.getId()); CmsContent c = CmsContent.builder().build().selectOne(q); // 发布时间 Long fbsj = Long.parseLong(c.getReleasetime()); Date date = DateUtil.date(fbsj); // 设置为定时发布中 qynr.setReleasestate(3); qynr.updateById(); // 设置开始定时发布 Long deley = fbsj - now; if (deley >= 0) { Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { qynr.setReleasestate(0); qynr.updateById(); timer.cancel(); } }, date); } else { qynr.setReleasestate(0); } } else if (qynr.getReleasetype() == 3) { // 手动发布 // 未发布 qynr.setReleasestate(1); } } qynr.updateById(); return ResultUtil.data(qynr, "审核完成"); } /** * 企业OA讯息查询 */ @PostMapping(value = "/qyxxquery") @ApiOperation(value = "搜索OA讯息记录", httpMethod = "POST", notes = "接口发布说明") public Result<Object> qyxxquery(@CurrentUser UserBean userBean, @RequestBody QyxxQueryDto qyxxQueryDto) { String s = qyxxQueryDto.getStartTime(); String e = qyxxQueryDto.getEndTime(); Integer t = qyxxQueryDto.getModularid(); Integer r = qyxxQueryDto.getReleasestate(); String q = qyxxQueryDto.getQuery(); Page<CmsContent> page = new Page<CmsContent>( qyxxQueryDto.getCurrentPage() == null ? 1 : qyxxQueryDto.getCurrentPage(), qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("organization_id", userBean.getOrgCode()).eq("status", 1) .eq(t != null && t > -1, "modularid", t).eq(r != null && r > -1, "releasestate", r) .between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "releasetime", !StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00") .and(!StrUtil.hasBlank(q), wq -> wq.like("userid", q).or().like("author", q).or().like("title", q)) .orderByDesc("addeddate"); IPage<CmsContent> cmsContentPage = CmsContent.builder().build().selectPage(page, queryWrapper); List<CmsContent> cmsContents = cmsContentPage.getRecords(); cmsContentPage.getCurrent(); cmsContentPage.getPages(); cmsContentPage.getTotal(); cmsContentPage.getSize(); return ResultUtil.data(cmsContentPage, cmsContents, "企业OA讯息搜索成功"); } /** * 根据id查讯息 * * @param id * @return */ @GetMapping(value = "/returnpath") @ApiOperation(value = "根据id查讯息", httpMethod = "GET", notes = "接口发布说明") public Result<Object> returnPath(@CurrentUser UserBean userBean, @RequestParam Integer id) { QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("id", id); CmsContent cmsContent = CmsContent.builder().build().selectOne(queryWrapper); String[] f = null; if (cmsContent != null && cmsContent.getFilepath() != null) { f = cmsContent.getFilepath().split(","); } CmsContentDto cmsContentDto = new CmsContentDto(); BeanUtil.copyProperties(cmsContent, cmsContentDto); cmsContentDto.setFilepath(f); return ResultUtil.data(cmsContentDto); } /** * OA审核讯息查询搜索 */ @PostMapping(value = "/shxxquery") @ApiOperation(value = "搜索OA讯息审核记录", httpMethod = "POST", notes = "接口发布说明") public Result<Object> shxxquery(@CurrentUser UserBean userBean, @RequestBody QyxxQueryDto qyxxQueryDto) { String s = qyxxQueryDto.getStartTime(); String e = qyxxQueryDto.getEndTime(); Integer t = qyxxQueryDto.getModularid(); String q = qyxxQueryDto.getQuery(); // 分页 Page<CmsContent> page = new Page<CmsContent>( qyxxQueryDto.getCurrentPage() == null ? 1 : qyxxQueryDto.getCurrentPage(), qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); // 查询条件 QueryWrapper<CmsContent> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("organization_id", userBean.getOrgCode()) .select("id", "auditopinion", "modularid", "status", "title", "releasetime", "addeddate", "author", "summary", "releasetype", "fmtpath") .ne("status", 1).eq(t != null && t > -1, "modularid", t) .between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "releasetime", !StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00") .and(!StrUtil.hasBlank(q), wq -> wq.like("userid", q).or().like("author", q).or().like("title", q)) .orderByDesc("addeddate"); IPage<CmsContent> CmsContentPage = CmsContent.builder().build().selectPage(page, queryWrapper); List<CmsContent> CmsContents = CmsContentPage.getRecords(); CmsContentPage.getCurrent(); CmsContentPage.getPages(); CmsContentPage.getTotal(); CmsContentPage.getSize(); return ResultUtil.data(CmsContentPage, CmsContents, "企业OA讯息审核情况搜索成功"); } /** * 讯息发布 * * @param id */ @GetMapping(value = "/qyxxsdfb/{id}") @ApiOperation(value = "OA讯息手动发布", httpMethod = "GET", notes = "接口发布说明") public Result<Void> qyxxsdfb(@CurrentUser UserBean userBean, @PathVariable Integer id) { // 根据id将状态设为发布 CmsContent q = new CmsContent(); UpdateWrapper<CmsContent> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id); Long now = new Date().getTime();// 时间毫秒数 q = CmsContent.builder().organizationId(userBean.getOrgCode()).id(id).releasestate(0) .releasetime(now.toString()).build(); cmsContentMapper.update(q, updateWrapper); return ResultUtil.success("发布成功"); } /** * 讯息收回 * * @param id */ @GetMapping(value = "/qyxxtb/{id}") @ApiOperation(value = "OA讯息发布收回", httpMethod = "GET", notes = "接口发布说明") public Result<Void> takeBack(@CurrentUser UserBean userBean, @PathVariable Integer id) { // 根据id将状态设为收回 CmsContent q = new CmsContent(); UpdateWrapper<CmsContent> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", id); Date now = new Date(); q = CmsContent.builder().organizationId(userBean.getOrgCode()).id(id).releasestate(2) .takeBack(userBean.getEmpNum()).takeBackTime(now.toString()).build(); cmsContentMapper.update(q, updateWrapper); return ResultUtil.success("收回成功"); } /** * 添加已读 * * @param userBean * @param id * @return */ @GetMapping(value = "/isread") @ApiOperation(value = "添加已读人", httpMethod = "GET", notes = "接口发布说明") public Result<Void> isRead(@CurrentUser UserBean userBean, Integer mid) { Integer empNum = userBean.getEmpNum(); QueryWrapper<CmsIsRead> q = new QueryWrapper<CmsIsRead>(); q.eq("mid", mid).eq("uid", empNum); CmsIsRead cmsIsRead = CmsIsRead.builder().build().selectOne(q); if (!q.equals(null)) { cmsIsRead.setMid(mid); cmsIsRead.setUid(empNum); cmsIsRead.setReadTime(new Date()); cmsIsRead.insert(); return ResultUtil.success("添加成功"); } return ResultUtil.success("已存在"); } /** * 查询已读人 * * @param userBean * @param mid * @return */ @PostMapping(value = "/qisread") @ApiOperation(value = "查询讯息已读人", httpMethod = "POST", notes = "接口发布说明") public Result<QyxxIsReadDto> queryIsRead(@CurrentUser UserBean userBean, @RequestBody Integer mid) { QyxxIsReadDto q = cmsIsReadMapper.queryIsReadEmp(userBean.getOrgCode(), mid); return ResultUtil.data(q, "查询成功"); } /******************* 以下轮播信息 ************************/ /** * 新增/修改轮播信息 */ @PostMapping(value = "/addCarousel") @ApiOperation(value = "新增轮播信息", httpMethod = "POST", notes = "接口发布说明") public Result<CmsAnnouncement> addCarousel(@CurrentUser UserBean userBean, @RequestBody CmsAnnouncement cmsAnnouncement) { cmsAnnouncement.setFbrid(userBean.getEmpNum()); cmsAnnouncement.setFbtime(new Date()); cmsAnnouncement.setOrgCode(userBean.getOrgCode()); cmsAnnouncement.insertOrUpdate(); return ResultUtil.data(cmsAnnouncement, "新增/修改成功"); } /** * 删除轮播信息 */ @DeleteMapping(value = "/delCarousel/{id}") @ApiOperation(value = "删除轮播信息", httpMethod = "DELETE", notes = "接口发布说明") public Result<Object> delCarousel(@CurrentUser UserBean userBean, @PathVariable Integer id) { Integer orgCode = userBean.getOrgCode(); return ResultUtil.data(CmsAnnouncement.builder().build() .delete(new QueryWrapper<CmsAnnouncement>().eq("org_code", orgCode).eq("id", id)), "删除成功"); } /** * 查询轮播信息列表 */ @PostMapping(value = "/queryCarousel") @ApiOperation(value = "查询轮播信息", httpMethod = "POST", notes = "接口发布说明") public Result<Object> delCarousel(@CurrentUser UserBean userBean, @RequestBody QyxxQueryDto qyxxQueryDto) { String s = qyxxQueryDto.getStartTime(); String e = qyxxQueryDto.getEndTime(); String q = qyxxQueryDto.getQuery(); Page<CmsAnnouncement> page = new Page<CmsAnnouncement>( qyxxQueryDto.getCurrentPage() == null ? 1 : qyxxQueryDto.getCurrentPage(), qyxxQueryDto.getTotalPage() == null ? 10 : qyxxQueryDto.getTotalPage()); QueryWrapper<CmsAnnouncement> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("org_code", userBean.getOrgCode()); queryWrapper.between(!StrUtil.hasBlank(s) && !StrUtil.hasBlank(e), "fbtime", !StrUtil.hasBlank(s) ? s : "1000-01-01 00:00:00", !StrUtil.hasBlank(e) ? e : "9999-01-01 00:00:00") .and(!StrUtil.hasBlank(q), wq -> wq.like("title", q).or().like("fbnr", q)).orderByDesc("fbtime"); IPage<CmsAnnouncement> cmsAnnouncementPage = CmsAnnouncement.builder().build().selectPage(page, queryWrapper); List<CmsAnnouncement> cmsAnnouncements = cmsAnnouncementPage.getRecords(); cmsAnnouncementPage.getCurrent(); cmsAnnouncementPage.getPages(); cmsAnnouncementPage.getTotal(); cmsAnnouncementPage.getSize(); return ResultUtil.data(cmsAnnouncementPage, cmsAnnouncements, "查询成功"); } /** * 查询默认轮播信息 */ @GetMapping(value = "/defaultCarousel") @ApiOperation(value = "查询轮播信息(默认)", httpMethod = "GET", notes = "接口发布说明") public Result<Object> defaultCarousel(@CurrentUser UserBean userBean) { return ResultUtil.data( CmsAnnouncement.builder().build().selectOne( new QueryWrapper<CmsAnnouncement>().eq("is_default", 1).eq("org_code", userBean.getOrgCode())), "查询成功"); } /** * 设置默认 */ @GetMapping(value = "/default/{id}") @ApiOperation(value = "设置默认轮播信息", httpMethod = "GET", notes = "接口发布说明") public Result<Void> setDefault(@CurrentUser UserBean userBean, @PathVariable("id") Integer id) { // 将所有设为非默认 UpdateWrapper<CmsAnnouncement> updateWrapper = new UpdateWrapper<CmsAnnouncement>(); CmsAnnouncement q = CmsAnnouncement.builder().orgCode(userBean.getOrgCode()).isDefault(0).build(); cmsAnnouncementMapper.update(q, updateWrapper); // 根据id设为默认 updateWrapper.eq("id", id); CmsAnnouncement w = CmsAnnouncement.builder().orgCode(userBean.getOrgCode()).id(id).isDefault(1).build(); cmsAnnouncementMapper.update(w, updateWrapper); // 返回成功 return ResultUtil.success("设置成功"); } }