消息中心后台|pc

product
mhsnet 2 years ago
parent b28ec37cc1
commit d96ca26f37

@ -0,0 +1,204 @@
package jnpf.messageCenter.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jnpf.base.ActionResult;
import jnpf.base.UserInfo;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.exception.DataException;
import jnpf.messageCenter.entity.MessageCenterEntity;
import jnpf.messageCenter.model.messagecenter.*;
import jnpf.messageCenter.service.MessageCenterService;
import jnpf.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
/**
* messageCenter
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Slf4j
@RestController
@Api(tags = "消息中心", value = "messageCenter")
@RequestMapping("/api/messageCenter/MessageCenter")
public class MessageCenterController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private MessageCenterService messageCenterService;
/**
*
*
* @param messageCenterPagination
* @return
*/
@PostMapping("/getList")
@ApiOperation("消息列表")
public ActionResult list(@RequestBody MessageCenterPagination messageCenterPagination) throws IOException {
List<MessageCenterEntity> list = messageCenterService.getList(messageCenterPagination);
//处理id字段转名称若无需转或者为空可删除
for (MessageCenterEntity entity : list) {
entity.setCreatorUserId(generaterSwapUtil.userSelectValue(entity.getCreatorUserId()));
entity.setLastModifyUserId(generaterSwapUtil.userSelectValue(entity.getLastModifyUserId()));
entity.setOrgnizeId(generaterSwapUtil.comSelectValue(entity.getOrgnizeId(), "last"));
entity.setDepartmentId(generaterSwapUtil.posSelectValue(entity.getDepartmentId()));
}
List<MessageCenterListVO> listVO = JsonUtil.getJsonToList(list, MessageCenterListVO.class);
for (MessageCenterListVO messageCenterVO : listVO) {
}
PageListVO vo = new PageListVO();
vo.setList(listVO);
PaginationVO page = JsonUtil.getJsonToBean(messageCenterPagination, PaginationVO.class);
vo.setPagination(page);
return ActionResult.success(vo);
}
/**
*
*
* @param messageCenterCrForm
* @return
*/
@PostMapping
@Transactional
public ActionResult create(@RequestBody @Valid MessageCenterCrForm messageCenterCrForm) throws DataException {
System.out.println(messageCenterCrForm);
String mainId = RandomUtil.uuId();
UserInfo userInfo = userProvider.get();
messageCenterCrForm.setCreatorUserId(userInfo.getUserId());
messageCenterCrForm.setCreatorTime(DateUtil.getNow());
messageCenterCrForm.setOrgnizeId(StringUtil.isEmpty(userInfo.getDepartmentId()) ? userInfo.getOrganizeId() : userInfo.getDepartmentId());
if (userInfo.getPositionIds() != null && userInfo.getPositionIds().length > 0) {
messageCenterCrForm.setDepartmentId(userInfo.getPositionIds()[0]);
}
MessageCenterEntity entity = JsonUtil.getJsonToBean(messageCenterCrForm, MessageCenterEntity.class);
entity.setId(mainId);
System.out.println(entity);
messageCenterService.save(entity);
return ActionResult.success("创建成功");
}
/**
*
*
* @param id
* @return
*/
@GetMapping("/{id}")
public ActionResult<MessageCenterInfoVO> info(@PathVariable("id") String id) {
MessageCenterEntity entity = messageCenterService.getInfo(id);
MessageCenterInfoVO vo = JsonUtil.getJsonToBean(entity, MessageCenterInfoVO.class);
vo.setCreatorUserId(generaterSwapUtil.userSelectValue(vo.getCreatorUserId()));
vo.setLastModifyUserId(generaterSwapUtil.userSelectValue(vo.getLastModifyUserId()));
if (vo.getCreatorTime() != null) {
vo.setCreatorTime(vo.getCreatorTime());
}
if (vo.getLastModifyTime() != null) {
vo.setLastModifyTime(vo.getLastModifyTime());
}
vo.setOrgnizeId(generaterSwapUtil.comSelectValue(vo.getOrgnizeId(), "last"));
vo.setDepartmentId(generaterSwapUtil.posSelectValue(vo.getDepartmentId()));
//子表
//副表
return ActionResult.success(vo);
}
/**
* ()
*
* @param id
* @return
*/
@GetMapping("/detail/{id}")
public ActionResult<MessageCenterInfoVO> detailInfo(@PathVariable("id") String id) {
MessageCenterEntity entity = messageCenterService.getInfo(id);
MessageCenterInfoVO vo = JsonUtil.getJsonToBean(entity, MessageCenterInfoVO.class);
//子表数据转换
//附表数据转换
//添加到详情表单对象中
vo.setCreatorUserId(generaterSwapUtil.userSelectValue(vo.getCreatorUserId()));
vo.setLastModifyUserId(generaterSwapUtil.userSelectValue(vo.getLastModifyUserId()));
vo.setOrgnizeId(generaterSwapUtil.comSelectValue(vo.getOrgnizeId(), "last"));
vo.setDepartmentId(generaterSwapUtil.posSelectValue(vo.getDepartmentId()));
return ActionResult.success(vo);
}
/**
*
*
* @param id
* @return
*/
@PutMapping("/{id}")
@Transactional
public ActionResult update(@PathVariable("id") String id, @RequestBody @Valid MessageCenterUpForm messageCenterUpForm) throws DataException {
UserInfo userInfo = userProvider.get();
MessageCenterEntity entity = messageCenterService.getInfo(id);
if (entity != null) {
messageCenterUpForm.setLastModifyUserId(userInfo.getUserId());
messageCenterUpForm.setLastModifyTime(DateUtil.getNow());
messageCenterUpForm.setOrgnizeId(entity.getOrgnizeId());
messageCenterUpForm.setDepartmentId(entity.getDepartmentId());
MessageCenterEntity subentity = JsonUtil.getJsonToBean(messageCenterUpForm, MessageCenterEntity.class);
subentity.setCreatorUserId(entity.getCreatorUserId());
subentity.setCreatorTime(entity.getCreatorTime());
messageCenterService.update(id, subentity);
return ActionResult.success("更新成功");
} else {
return ActionResult.fail("更新失败,数据不存在");
}
}
/**
*
*
* @param id
* @return
*/
@DeleteMapping("/{id}")
@Transactional
public ActionResult delete(@PathVariable("id") String id) {
MessageCenterEntity entity = messageCenterService.getInfo(id);
if (entity != null) {
messageCenterService.delete(entity);
}
return ActionResult.success("删除成功");
}
}

@ -0,0 +1,77 @@
package jnpf.messageCenter.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
*
*
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
@TableName("jg_message")
public class MessageCenterEntity {
@TableId("ID")
private String id;
@TableField("CREATOR_USER_ID")
private String creatorUserId;
@TableField("CREATOR_USER_NAME")
private String creatorUserName;
@TableField("CREATOR_TIME")
private Date creatorTime;
@TableField("LAST_MODIFY_USER_ID")
private String lastModifyUserId;
@TableField("LAST_MODIFY_USER_NAME")
private String lastModifyUserName;
@TableField("LAST_MODIFY_TIME")
private Date lastModifyTime;
@TableField("DELETE_USER_ID")
private String deleteUserId;
@TableField("DELETE_USER_NAME")
private String deleteUserName;
@TableField("DELETE_TIME")
private Date deleteTime;
@TableField("DELETE_MARK")
private String deleteMark;
@TableField("ORGNIZE_ID")
private String orgnizeId;
@TableField("DEPARTMENT_ID")
private String departmentId;
@TableField("TITLE")
private String title;
@TableField("HEAD")
private String head;
@TableField("CONTEXT")
private String context;
@TableField("SKIP_URL")
private String skipUrl;
@TableField("IS_READ")
private String isRead;
}

@ -0,0 +1,16 @@
package jnpf.messageCenter.mapper;
import jnpf.messageCenter.entity.MessageCenterEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* messageCenter
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-03-10
*/
public interface MessageCenterMapper extends BaseMapper<MessageCenterEntity> {
}

@ -0,0 +1,85 @@
package jnpf.messageCenter.model.messagecenter;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterCrForm {
/**
*
**/
@JsonProperty("title")
private String title;
/**
*
**/
@JsonProperty("head")
private String head;
/**
*
**/
@JsonProperty("context")
private String context;
/**
* url
**/
@JsonProperty("skipUrl")
private String skipUrl;
/**
*
**/
@JsonProperty("isRead")
private String isRead;
/**
*
**/
@JsonProperty("creatorUserId")
private String creatorUserId;
/**
*
**/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;
/**
*
**/
@JsonProperty("creatorTime")
private String creatorTime;
/**
*
**/
@JsonProperty("lastModifyTime")
private String lastModifyTime;
/**
* ID
**/
@JsonProperty("orgnizeId")
private String orgnizeId;
/**
* ID
**/
@JsonProperty("departmentId")
private String departmentId;
}

@ -0,0 +1,94 @@
package jnpf.messageCenter.model.messagecenter;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Date;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterInfoVO {
/**
*
**/
@JsonProperty("id")
private String id;
/**
*
**/
@JsonProperty("title")
private String title;
/**
*
**/
@JsonProperty("head")
private String head;
/**
*
**/
@JsonProperty("context")
private String context;
/**
* url
**/
@JsonProperty("skipUrl")
private String skipUrl;
/**
*
**/
@JsonProperty("isRead")
private String isRead;
/**
*
**/
@JsonProperty("creatorUserId")
private String creatorUserId;
/**
*
**/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;
/**
*
**/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("creatorTime")
private Date creatorTime;
/**
*
**/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("lastModifyTime")
private Date lastModifyTime;
/**
* ID
**/
@JsonProperty("orgnizeId")
private String orgnizeId;
/**
* ID
**/
@JsonProperty("departmentId")
private String departmentId;
}

@ -0,0 +1,38 @@
package jnpf.messageCenter.model.messagecenter;
import jnpf.base.Pagination;
import lombok.Data;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterListQuery extends Pagination {
/**
*
*/
private String title;
/**
*
*/
private String head;
/**
*
*/
private String isRead;
/**
*
*/
private String context;
/**
* id
*/
private String menuId;
}

@ -0,0 +1,106 @@
package jnpf.messageCenter.model.messagecenter;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Date;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterListVO {
/**
*
*/
private String id;
/**
*
**/
@JsonProperty("title")
private String title;
/**
*
**/
@JsonProperty("head")
private String head;
/**
*
**/
@JsonProperty("context")
private String context;
/**
* url
**/
@JsonProperty("skipUrl")
private String skipUrl;
/**
*
**/
@JsonProperty("isRead")
private String isRead;
/**
*
**/
@JsonProperty("creatorUserId")
private String creatorUserId;
/**
*
**/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;
/**
*
**/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("creatorTime")
private Date creatorTime;
/**
*
**/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("lastModifyTime")
private Date lastModifyTime;
/**
* ID
**/
@JsonProperty("orgnizeId")
private String orgnizeId;
/**
* ID
**/
@JsonProperty("departmentId")
private String departmentId;
}

@ -0,0 +1,39 @@
package jnpf.messageCenter.model.messagecenter;
import jnpf.base.Pagination;
import lombok.Data;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterPagination extends Pagination {
/**
*
*/
private String title;
/**
*
*/
private String head;
/**
*
*/
private String isRead;
/**
*
*/
private String context;
/**
* id
*/
private String menuId;
}

@ -0,0 +1,41 @@
package jnpf.messageCenter.model.messagecenter;
import jnpf.base.Pagination;
import lombok.Data;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterPaginationExportModel extends Pagination {
private String selectKey;
private String json;
private String dataType;
/**
*
*/
private String title;
/**
*
*/
private String head;
/**
*
*/
private String isRead;
/**
*
*/
private String context;
}

@ -0,0 +1,99 @@
package jnpf.messageCenter.model.messagecenter;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @ V3.2.0
* @ LINKAGE-BOOT
* @ LINKAGE-BOOT
* @ 2023-03-10
*/
@Data
public class MessageCenterUpForm {
/**
*
*/
private String id;
/**
*
**/
@JsonProperty("title")
private String title;
/**
*
**/
@JsonProperty("head")
private String head;
/**
*
**/
@JsonProperty("context")
private String context;
/**
* url
**/
@JsonProperty("skipUrl")
private String skipUrl;
/**
*
**/
@JsonProperty("isRead")
private String isRead;
/**
*
**/
@JsonProperty("creatorUserId")
private String creatorUserId;
/**
*
**/
@JsonProperty("lastModifyUserId")
private String lastModifyUserId;
/**
*
**/
@JsonProperty("creatorTime")
private String creatorTime;
/**
*
**/
@JsonProperty("lastModifyTime")
private String lastModifyTime;
/**
* ID
**/
@JsonProperty("orgnizeId")
private String orgnizeId;
/**
* ID
**/
@JsonProperty("departmentId")
private String departmentId;
}

@ -0,0 +1,34 @@
package jnpf.messageCenter.service;
import jnpf.messageCenter.entity.MessageCenterEntity;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.messageCenter.model.messagecenter.MessageCenterPagination;
import java.util.*;
/**
* messageCenter
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-03-10
*/
public interface MessageCenterService extends IService<MessageCenterEntity> {
List<MessageCenterEntity> getList(MessageCenterPagination messageCenterPagination);
List<MessageCenterEntity> getTypeList(MessageCenterPagination messageCenterPagination, String dataType);
MessageCenterEntity getInfo(String id);
void delete(MessageCenterEntity entity);
void create(MessageCenterEntity entity);
boolean update(String id, MessageCenterEntity entity);
// 子表方法
//列表子表数据方法
}

@ -0,0 +1,240 @@
package jnpf.messageCenter.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.messageCenter.entity.MessageCenterEntity;
import jnpf.messageCenter.mapper.MessageCenterMapper;
import jnpf.messageCenter.model.messagecenter.MessageCenterPagination;
import jnpf.messageCenter.service.MessageCenterService;
import jnpf.permission.model.authorize.AuthorizeConditionModel;
import jnpf.permission.service.AuthorizeService;
import jnpf.util.ServletUtil;
import jnpf.util.StringUtil;
import jnpf.util.UserProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* messageCenter
* V3.2.0
* LINKAGE-BOOT
* LINKAGE-BOOT
* 2023-03-10
*/
@Service
public class MessageCenterServiceImpl extends ServiceImpl<MessageCenterMapper, MessageCenterEntity> implements MessageCenterService {
@Autowired
private UserProvider userProvider;
@Autowired
private AuthorizeService authorizeService;
@Override
public List<MessageCenterEntity> getList(MessageCenterPagination messageCenterPagination) {
String userId = userProvider.get().getUserId();
List<String> AllIdList = new ArrayList();
int total = 0;
int messageCenterNum = 0;
QueryWrapper<MessageCenterEntity> messageCenterQueryWrapper = new QueryWrapper<>();
boolean pcPermission = true;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
if (isPc && pcPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object messageCenterObj = authorizeService.getCondition(new AuthorizeConditionModel(messageCenterQueryWrapper, messageCenterPagination.getMenuId(), "messageCenter"));
if (ObjectUtil.isEmpty(messageCenterObj)) {
return new ArrayList<>();
} else {
messageCenterQueryWrapper = (QueryWrapper<MessageCenterEntity>) messageCenterObj;
messageCenterNum++;
}
}
}
if (!isPc && appPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object messageCenterObj = authorizeService.getCondition(new AuthorizeConditionModel(messageCenterQueryWrapper, messageCenterPagination.getMenuId(), "messageCenter"));
if (ObjectUtil.isEmpty(messageCenterObj)) {
return new ArrayList<>();
} else {
messageCenterQueryWrapper = (QueryWrapper<MessageCenterEntity>) messageCenterObj;
messageCenterNum++;
}
}
}
if (StringUtil.isNotEmpty(messageCenterPagination.getTitle())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getTitle, messageCenterPagination.getTitle());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getHead())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getHead, messageCenterPagination.getHead());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getIsRead())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().eq(MessageCenterEntity::getIsRead, messageCenterPagination.getIsRead());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getContext())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getContext, messageCenterPagination.getContext());
}
if (AllIdList.size() > 0) {
messageCenterQueryWrapper.lambda().in(MessageCenterEntity::getId, AllIdList);
}
//排序
if (StringUtil.isEmpty(messageCenterPagination.getSidx())) {
messageCenterQueryWrapper.lambda().orderByDesc(MessageCenterEntity::getId);
} else {
try {
String sidx = messageCenterPagination.getSidx();
MessageCenterEntity messageCenterEntity = new MessageCenterEntity();
Field declaredField = messageCenterEntity.getClass().getDeclaredField(sidx);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
messageCenterQueryWrapper = "asc".equals(messageCenterPagination.getSort().toLowerCase()) ? messageCenterQueryWrapper.orderByAsc(value) : messageCenterQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if ((total > 0 && AllIdList.size() > 0) || total == 0) {
Page<MessageCenterEntity> page = new Page<>(messageCenterPagination.getCurrentPage(), messageCenterPagination.getPageSize());
IPage<MessageCenterEntity> userIPage = this.page(page, messageCenterQueryWrapper);
return messageCenterPagination.setData(userIPage.getRecords(), userIPage.getTotal());
} else {
List<MessageCenterEntity> list = new ArrayList();
return messageCenterPagination.setData(list, list.size());
}
}
@Override
public List<MessageCenterEntity> getTypeList(MessageCenterPagination messageCenterPagination, String dataType) {
String userId = userProvider.get().getUserId();
List<String> AllIdList = new ArrayList();
int total = 0;
int messageCenterNum = 0;
QueryWrapper<MessageCenterEntity> messageCenterQueryWrapper = new QueryWrapper<>();
boolean pcPermission = true;
boolean appPermission = false;
boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc");
if (isPc && pcPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object messageCenterObj = authorizeService.getCondition(new AuthorizeConditionModel(messageCenterQueryWrapper, messageCenterPagination.getMenuId(), "messageCenter"));
if (ObjectUtil.isEmpty(messageCenterObj)) {
return new ArrayList<>();
} else {
messageCenterQueryWrapper = (QueryWrapper<MessageCenterEntity>) messageCenterObj;
messageCenterNum++;
}
}
}
if (!isPc && appPermission) {
if (!userProvider.get().getIsAdministrator()) {
Object messageCenterObj = authorizeService.getCondition(new AuthorizeConditionModel(messageCenterQueryWrapper, messageCenterPagination.getMenuId(), "messageCenter"));
if (ObjectUtil.isEmpty(messageCenterObj)) {
return new ArrayList<>();
} else {
messageCenterQueryWrapper = (QueryWrapper<MessageCenterEntity>) messageCenterObj;
messageCenterNum++;
}
}
}
if (StringUtil.isNotEmpty(messageCenterPagination.getTitle())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getTitle, messageCenterPagination.getTitle());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getHead())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getHead, messageCenterPagination.getHead());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getIsRead())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().eq(MessageCenterEntity::getIsRead, messageCenterPagination.getIsRead());
}
if (StringUtil.isNotEmpty(messageCenterPagination.getContext())) {
messageCenterNum++;
messageCenterQueryWrapper.lambda().like(MessageCenterEntity::getContext, messageCenterPagination.getContext());
}
if (AllIdList.size() > 0) {
messageCenterQueryWrapper.lambda().in(MessageCenterEntity::getId, AllIdList);
}
//排序
if (StringUtil.isEmpty(messageCenterPagination.getSidx())) {
messageCenterQueryWrapper.lambda().orderByDesc(MessageCenterEntity::getId);
} else {
try {
String sidx = messageCenterPagination.getSidx();
MessageCenterEntity messageCenterEntity = new MessageCenterEntity();
Field declaredField = messageCenterEntity.getClass().getDeclaredField(sidx);
declaredField.setAccessible(true);
String value = declaredField.getAnnotation(TableField.class).value();
messageCenterQueryWrapper = "asc".equals(messageCenterPagination.getSort().toLowerCase()) ? messageCenterQueryWrapper.orderByAsc(value) : messageCenterQueryWrapper.orderByDesc(value);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
if ("0".equals(dataType)) {
if ((total > 0 && AllIdList.size() > 0) || total == 0) {
Page<MessageCenterEntity> page = new Page<>(messageCenterPagination.getCurrentPage(), messageCenterPagination.getPageSize());
IPage<MessageCenterEntity> userIPage = this.page(page, messageCenterQueryWrapper);
return messageCenterPagination.setData(userIPage.getRecords(), userIPage.getTotal());
} else {
List<MessageCenterEntity> list = new ArrayList();
return messageCenterPagination.setData(list, list.size());
}
} else {
return this.list(messageCenterQueryWrapper);
}
}
@Override
public MessageCenterEntity getInfo(String id) {
QueryWrapper<MessageCenterEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(MessageCenterEntity::getId, id);
return this.getOne(queryWrapper);
}
@Override
public void create(MessageCenterEntity entity) {
this.save(entity);
}
@Override
public boolean update(String id, MessageCenterEntity entity) {
entity.setId(id);
return this.updateById(entity);
}
@Override
public void delete(MessageCenterEntity entity) {
if (entity != null) {
this.removeById(entity.getId());
}
}
//子表方法
//列表子表数据方法
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="jnpf.messageCenter.mapper.MessageCenterMapper">
</mapper>

@ -0,0 +1,103 @@
<template>
<el-dialog title="详情" :close-on-click-modal="false" append-to-body :visible.sync="visible"
class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
<el-row :gutter="15" class="">
<el-form ref="elForm" :model="dataForm" size="small" label-width="100px" label-position="right">
<template v-if="!loading">
<el-col :span="24">
<el-form-item label="消息标题" prop="title">
<p>{{ dataForm.title }}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="消息头" prop="head">
<p>{{ dataForm.head }}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="消息内容" prop="context">
<p>{{ dataForm.context }}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="跳转url" prop="skipUrl">
<p>{{ dataForm.skipUrl }}</p>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="是否已读" prop="isRead">
<p>{{ dataForm.isRead | dynamicText(isReadOptions) }} </p>
</el-form-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
</span>
</el-dialog>
</template>
<script>
import request from '@/utils/request'
import PrintBrowse from '@/components/PrintBrowse'
import jnpf from '@/utils/jnpf'
export default {
components: { PrintBrowse },
props: [],
data() {
return {
visible: false,
loading: false,
printBrowseVisible: false,
printId: '',
dataForm: {
id: '',
title: '',
head: '',
context: "{}",
skipUrl: '',
isRead: "0",
creatorUserId: "",
lastModifyUserId: "",
creatorTime: "",
lastModifyTime: "",
orgnizeId: "",
departmentId: "",
},
isReadOptions: [{ "fullName": "否", "id": "0" }, { "fullName": "是", "id": "1" }],
}
},
computed: {},
watch: {},
created() {
},
mounted() { },
methods: {
dataInfo(dataAll) {
let _dataAll = dataAll
this.dataForm = _dataAll
},
init(id) {
this.dataForm.id = id || 0;
this.visible = true;
this.$nextTick(() => {
if (this.dataForm.id) {
this.loading = true
request({
url: '/api/messageCenter/MessageCenter/detail/' + this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
})
}
})
},
},
}
</script>

@ -0,0 +1,67 @@
<template>
<el-dialog title="导出数据" :close-on-click-modal="false" :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center"
lock-scroll width="600px">
<el-form label-position="top" label-width="80px">
<el-form-item label="数据选择">
<el-radio-group v-model="type">
<el-radio :label="0">当前页面数据</el-radio>
<el-radio :label="1">全部页面数据</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="导出字段">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange"></el-checkbox>
<el-checkbox-group v-model="columns" @change="handleCheckedChange">
<el-checkbox v-for="item in columnList" :label="item.prop" :key="item.prop">
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="downLoad"> </el-button>
</span>
</el-dialog>
</template>
<script>
export default {
data() {
return {
visible: false,
btnLoading: false,
type: 0,
columns: [],
checkAll: true,
isIndeterminate: false,
columnList: []
}
},
methods: {
init(columnList) {
this.visible = true
this.checkAll = true
this.isIndeterminate = false
this.columnList = columnList
this.columns = columnList.map(o => o.prop)
},
handleCheckAllChange(val) {
this.columns = val ? this.columnList.map(o => o.prop) : [];
this.isIndeterminate = false;
},
handleCheckedChange(value) {
let checkedCount = value.length;
this.checkAll = checkedCount === this.columnList.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.columnList.length;
},
downLoad() {
this.$emit('download', { dataType: this.type, selectKey: this.columns.join(',') })
}
}
}
</script>
<style lang="scss" scoped>
>>>.el-dialog__body {
padding: 20px !important;
}
</style>

@ -0,0 +1,186 @@
<template>
<el-dialog :title="!dataForm.id ? '新建' : isDetail ? '详情' : '编辑'" :close-on-click-modal="false" append-to-body
:visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
<el-row :gutter="15" class="">
<el-form ref="elForm" :model="dataForm" :rules="rules" size="small" label-width="100px" label-position="right">
<template v-if="!loading">
<el-col :span="24">
<el-form-item label="消息标题" prop="title">
<el-input v-model="dataForm.title" placeholder="请输入消息标题" clearable :style='{ "width": "100%" }'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="消息头" prop="head">
<el-input v-model="dataForm.head" placeholder="请输入消息头" clearable :style='{ "width": "100%" }'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="消息内容" prop="context">
<el-input v-model="dataForm.context" placeholder="请输入消息内容" :style='{ "width": "100%" }' true
type="textarea" :autosize='{ "minRows": 4, "maxRows": 4 }'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="跳转url" prop="skipUrl">
<el-input v-model="dataForm.skipUrl" placeholder="请输入跳转url" clearable :style='{ "width": "100%" }'>
</el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="是否已读" prop="isRead">
<el-select v-model="dataForm.isRead" placeholder="请选择" clearable :style='{ "width": "100%" }'>
<el-option v-for="(item, index) in isReadOptions" :key="index" :label="item.fullName"
:value="item.id" :disabled="item.disabled"></el-option>
</el-select>
</el-form-item>
</el-col>
</template>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button type="primary" @click="dataFormSubmit()" v-if="!isDetail"> </el-button>
</span>
</el-dialog>
</template>
<script>
import request from '@/utils/request'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
export default {
components: {},
props: [],
data() {
return {
visible: false,
loading: false,
isDetail: false,
dataForm: {
title: '',
head: '',
context: "{}",
skipUrl: '',
isRead: "0",
creatorUserId: "",
lastModifyUserId: "",
creatorTime: "",
lastModifyTime: "",
orgnizeId: "",
departmentId: "",
},
rules:
{
title: [
{
required: true,
message: '请输入消息标题',
trigger: 'blur'
},
],
},
isReadOptions: [{ "fullName": "否", "id": "0" }, { "fullName": "是", "id": "1" }],
}
},
computed: {},
watch: {},
created() {
},
mounted() { },
methods: {
clearData(data) {
for (let key in data) {
if (data[key] instanceof Array) {
data[key] = [];
} else if (data[key] instanceof Object) {
this.clearData(data[key]);
} else {
data[key] = "";
}
}
},
init(id, isDetail) {
this.dataForm.id = id || 0;
this.visible = true;
this.isDetail = isDetail || false;
this.$nextTick(() => {
this.$refs['elForm'].resetFields();
if (this.dataForm.id) {
this.loading = true
request({
url: '/api/messageCenter/MessageCenter/' + this.dataForm.id,
method: 'get'
}).then(res => {
this.dataInfo(res.data)
this.loading = false
});
} else {
this.clearData(this.dataForm)
}
});
this.$store.commit('generator/UPDATE_RELATION_DATA', {})
},
//
dataFormSubmit() {
this.$refs['elForm'].validate((valid) => {
if (valid) {
this.request()
}
})
},
request() {
var _data = this.dataList()
if (!this.dataForm.id) {
request({
url: '/api/messageCenter/MessageCenter',
method: 'post',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
} else {
request({
url: '/api/messageCenter/MessageCenter/' + this.dataForm.id,
method: 'PUT',
data: _data
}).then((res) => {
this.$message({
message: res.msg,
type: 'success',
duration: 1000,
onClose: () => {
this.visible = false
this.$emit('refresh', true)
}
})
})
}
},
dataList() {
var _data = JSON.parse(JSON.stringify(this.dataForm));
return _data;
},
dataInfo(dataAll) {
let _dataAll = dataAll
this.dataForm = _dataAll
},
},
}
</script>

@ -0,0 +1,246 @@
<template>
<div class="JNPF-common-layout">
<div class="JNPF-common-layout-center">
<el-row class="JNPF-common-search-box" :gutter="16">
<el-form @submit.native.prevent>
<el-col :span="6">
<el-form-item label="消息标题">
<el-input v-model="query.title" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="消息头">
<el-input v-model="query.head" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="是否已读">
<el-select v-model="query.isRead" placeholder="请选择" clearable>
<el-option v-for="(item, index) in isReadOptions" :key="index" :label="item.fullName"
:value="item.id" :disabled="item.disabled"></el-option>
</el-select>
</el-form-item>
</el-col>
<template v-if="showAll">
<el-col :span="6">
<el-form-item label="消息内容">
<el-input v-model="query.context" placeholder="请输入" clearable> </el-input>
</el-form-item>
</el-col>
</template>
<el-col :span="6">
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="text" icon="el-icon-arrow-down" @click="showAll = true" v-if="!showAll">
展开
</el-button>
<el-button type="text" icon="el-icon-arrow-up" @click="showAll = false" v-else>
收起
</el-button>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div class="JNPF-common-layout-main JNPF-flex-main">
<div class="JNPF-common-head">
<div>
<el-button type="primary" icon="el-icon-plus" @click="addOrUpdateHandle()">
</el-button>
</div>
<div class="JNPF-common-head-right">
<el-tooltip effect="dark" content="刷新" placement="top">
<el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon" :underline="false"
@click="reset()" />
</el-tooltip>
<screenfull isContainer />
</div>
</div>
<JNPF-table v-loading="listLoading" :data="list" @sort-change='sortChange'>
<el-table-column prop="title" label="消息标题" width="0" align="left" />
<el-table-column prop="head" label="消息头" width="0" align="left" />
<el-table-column prop="context" label="消息内容" width="0" align="left" />
<el-table-column prop="skipUrl" label="跳转url" width="0" align="left" />
<el-table-column label="是否已读" width="0" prop="isRead" algin="left" >
<template slot-scope="scope">
{{ scope.row.isRead | dynamicText(isReadOptions) }}
</template>
</el-table-column>
<el-table-column prop="creatorTime" label="创建时间" width="0" align="left" />
<el-table-column label="操作" fixed="right" width="100">
<template slot-scope="scope">
<el-button type="text" @click="addOrUpdateHandle(scope.row.id)">
</el-button>
<el-button type="text" class="JNPF-table-delBtn" @click="handleDel(scope.row.id)">
</el-button>
</template>
</el-table-column>
</JNPF-table>
<pagination :total="total" :page.sync="listQuery.currentPage" :limit.sync="listQuery.pageSize"
@pagination="initData" />
</div>
</div>
<JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible = false" />
</div>
</template>
<script>
import request from '@/utils/request'
import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
import JNPFForm from './Form'
import ExportBox from './ExportBox'
import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
import Detail from './Detail'
export default {
components: { JNPFForm, ExportBox, Detail },
data() {
return {
showAll: false,
detailVisible: false,
query: {
title: undefined,
head: undefined,
isRead: undefined,
context: undefined,
},
treeProps: {
children: 'children',
label: 'fullName',
value: 'id'
},
list: [],
listLoading: true,
total: 0,
listQuery: {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
},
formVisible: false,
exportBoxVisible: false,
columnList: [
{ prop: 'title', label: '消息标题' },
{ prop: 'head', label: '消息头' },
{ prop: 'context', label: '消息内容' },
{ prop: 'skipUrl', label: '跳转url' },
{ prop: 'isRead', label: '是否已读' },
{ prop: 'creatorTime', label: '创建时间' },
],
isReadOptions: [{ "fullName": "否", "id": "0" }, { "fullName": "是", "id": "1" }],
isReadProps: { "label": "fullName", "value": "id" },
}
},
computed: {
menuId() {
return this.$route.meta.modelId || ''
}
},
created() {
this.initData()
},
methods: {
goDetail(id) {
this.detailVisible = true
this.$nextTick(() => {
this.$refs.Detail.init(id)
})
},
sortChange({ column, prop, order }) {
this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
this.listQuery.sidx = !order ? '' : prop
this.initData()
},
initData() {
this.listLoading = true;
let _query = {
...this.listQuery,
...this.query,
menuId: this.menuId
};
request({
url: `/api/messageCenter/MessageCenter/getList`,
method: 'post',
data: _query
}).then(res => {
var _list = [];
for (let i = 0; i < res.data.list.length; i++) {
let _data = res.data.list[i];
_list.push(_data)
}
this.list = _list
this.total = res.data.pagination.total
this.listLoading = false
})
},
handleDel(id) {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
type: 'warning'
}).then(() => {
request({
url: `/api/messageCenter/MessageCenter/${id}`,
method: 'DELETE'
}).then(res => {
this.$message({
type: 'success',
message: res.msg,
onClose: () => {
this.initData()
}
});
})
}).catch(() => {
});
},
addOrUpdateHandle(id, isDetail) {
this.formVisible = true
this.$nextTick(() => {
this.$refs.JNPFForm.init(id, isDetail)
})
},
exportData() {
this.exportBoxVisible = true
this.$nextTick(() => {
this.$refs.ExportBox.init(this.columnList)
})
},
download(data) {
let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
request({
url: `/api/messageCenter/MessageCenter/Actions/Export`,
method: 'GET',
data: query
}).then(res => {
if (!res.data.url) return
this.jnpf.downloadFile(res.data.url)
this.$refs.ExportBox.visible = false
this.exportBoxVisible = false
})
},
search() {
this.listQuery = {
currentPage: 1,
pageSize: 20,
sort: "desc",
sidx: "",
}
this.initData()
},
refresh(isrRefresh) {
this.formVisible = false
if (isrRefresh) this.reset()
},
reset() {
for (let key in this.query) {
this.query[key] = undefined
}
this.search()
}
}
}
</script>
Loading…
Cancel
Save