冲突解决
This commit is contained in:
commit
2a40e0d3b2
|
@ -1,6 +1,7 @@
|
|||
package com.kening.vordm.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.protostuff.runtime.ArraySchemas;
|
||||
import lombok.Data;
|
||||
import org.springblade.core.mp.base.BaseEntity;
|
||||
|
@ -26,6 +27,7 @@ public class Administrator extends BaseEntity {
|
|||
|
||||
private String account;
|
||||
|
||||
@JsonIgnore
|
||||
private String password;
|
||||
|
||||
private String name;
|
||||
|
|
|
@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @TableName contact
|
||||
*/
|
||||
@TableName(value ="contact")
|
||||
@Data
|
||||
public class Contact implements Serializable {
|
||||
/**
|
||||
* 用户姓名
|
||||
|
@ -37,123 +40,28 @@ public class Contact implements Serializable {
|
|||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 留言时间
|
||||
*/
|
||||
private String contactDate;
|
||||
/**
|
||||
* 回复时间
|
||||
*/
|
||||
private String replyDate;
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private int status;
|
||||
/**
|
||||
* 回复内容
|
||||
*/
|
||||
private String text;
|
||||
/**
|
||||
* 回复主题
|
||||
*/
|
||||
private String subject;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 用户姓名
|
||||
*/
|
||||
public String getUserName() {
|
||||
return userName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户姓名
|
||||
*/
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 电子邮件
|
||||
*/
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
/**
|
||||
* 电子邮件
|
||||
*/
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组织
|
||||
*/
|
||||
public String getOrganization() {
|
||||
return organization;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组织
|
||||
*/
|
||||
public void setOrganization(String organization) {
|
||||
this.organization = organization;
|
||||
}
|
||||
|
||||
/**
|
||||
* 意见建议
|
||||
*/
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 意见建议
|
||||
*/
|
||||
public void setMessage(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据自增列
|
||||
*/
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据自增列
|
||||
*/
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object that) {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
if (that == null) {
|
||||
return false;
|
||||
}
|
||||
if (getClass() != that.getClass()) {
|
||||
return false;
|
||||
}
|
||||
Contact other = (Contact) that;
|
||||
return (this.getUserName() == null ? other.getUserName() == null : this.getUserName().equals(other.getUserName()))
|
||||
&& (this.getEmail() == null ? other.getEmail() == null : this.getEmail().equals(other.getEmail()))
|
||||
&& (this.getOrganization() == null ? other.getOrganization() == null : this.getOrganization().equals(other.getOrganization()))
|
||||
&& (this.getMessage() == null ? other.getMessage() == null : this.getMessage().equals(other.getMessage()))
|
||||
&& (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + ((getUserName() == null) ? 0 : getUserName().hashCode());
|
||||
result = prime * result + ((getEmail() == null) ? 0 : getEmail().hashCode());
|
||||
result = prime * result + ((getOrganization() == null) ? 0 : getOrganization().hashCode());
|
||||
result = prime * result + ((getMessage() == null) ? 0 : getMessage().hashCode());
|
||||
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", userName=").append(userName);
|
||||
sb.append(", email=").append(email);
|
||||
sb.append(", organization=").append(organization);
|
||||
sb.append(", message=").append(message);
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.kening.vordm.entity;
|
|||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 数据上传实体类
|
||||
* @author liyuchen
|
||||
|
@ -16,5 +18,9 @@ public class DataUpload extends EntityData{
|
|||
|
||||
private String disasterKeyword;
|
||||
|
||||
private String disasterCountry;
|
||||
|
||||
private Date disasterTime;
|
||||
|
||||
private Long disasterId;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
package com.kening.vordm.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DisasterData {
|
||||
private String type;
|
||||
private Integer value;
|
||||
private String date;
|
||||
}
|
|
@ -6,7 +6,6 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
|
||||
/**
|
||||
* 其他数据实体类
|
||||
* @extends 继承基础数据实体类
|
||||
* @author liyuchen
|
||||
* @date 2023/04/12
|
||||
*/
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
|||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
@ -66,6 +67,12 @@ public class PictureInfo implements Serializable {
|
|||
*/
|
||||
private Integer isDeleted;
|
||||
|
||||
/**
|
||||
* 图片对象
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
private MultipartFile file;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
|
|
@ -12,6 +12,5 @@ import org.springframework.cloud.client.SpringCloudApplication;
|
|||
public class VoRdmApplication {
|
||||
public static void main(String[] args) {
|
||||
BladeApplication.run("glj-"+CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
|
||||
// BladeApplication.run("zqq-" + CommonConstant.KN_VORDM_MODULE_NAME, VoRdmApplication.class, args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import org.springblade.core.mp.support.Query;
|
|||
import org.springblade.core.secure.BladeUser;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.DigestUtil;
|
||||
import org.springblade.core.tool.utils.Func;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -49,13 +50,23 @@ public class AdministratorController {
|
|||
return R.status(service.saveChiefAdmin(administrator));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新管理员信息
|
||||
* @param administrator
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public R<Boolean> update(@RequestBody Administrator administrator){
|
||||
return R.status(service.updateById(administrator));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除管理员用户
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/delete")
|
||||
public R<Boolean> delete(@RequestParam Long ids){
|
||||
return R.status(service.removeById(ids));
|
||||
public R<Boolean> delete(@RequestParam String ids){
|
||||
return R.status(service.deleteLogic(Func.toLongList(ids)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,9 @@ package com.kening.vordm.controller;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.kening.vordm.entity.Email;
|
||||
import com.kening.vordm.service.ContactService;
|
||||
import com.kening.vordm.service.EmailService;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
@ -11,6 +13,7 @@ import io.swagger.annotations.ApiParam;
|
|||
import lombok.AllArgsConstructor;
|
||||
import org.springblade.core.mp.support.Condition;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.DateUtil;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springblade.core.mp.support.Query;
|
||||
|
@ -18,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import com.kening.vordm.entity.Contact;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
|
@ -32,6 +36,8 @@ public class ContactController{
|
|||
})
|
||||
@GetMapping("/list")
|
||||
public R<IPage<Contact>> list(Contact contact, Query query) {
|
||||
QueryWrapper<Contact> queryWrapper = Condition.getQueryWrapper(contact);
|
||||
queryWrapper.orderByDesc("contact_date");
|
||||
IPage<Contact> pages = contactService.page(Condition.getPage(query), Condition.getQueryWrapper(contact));
|
||||
return R.data(pages);
|
||||
}
|
||||
|
@ -64,7 +70,37 @@ public class ContactController{
|
|||
@ApiOperation(value = "提交", notes = "传入Contact")
|
||||
@PostMapping("/submit")
|
||||
public R submit(@ApiParam(value = "Contact对象", required = true) @RequestBody Contact contact) {
|
||||
contact.setContactDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
return R.status(contactService.saveOrUpdate(contact));
|
||||
}
|
||||
private final EmailService emailService;
|
||||
@ApiOperationSupport(order = 6)
|
||||
@ApiOperation(value = "提交", notes = "传入Contact")
|
||||
@PostMapping("/sendEmail")
|
||||
public R sendEmail(@ApiParam(value = "Contact对象", required = true) @RequestBody Contact contact) {
|
||||
contact.setReplyDate(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
||||
contact.setStatus(1);
|
||||
Email email = new Email();
|
||||
email.setSubject(contact.getSubject());
|
||||
email.setText(contact.getText());
|
||||
String [] to = new String[]{contact.getEmail()};
|
||||
email.setTos(to);
|
||||
email.setHtmlText(true);
|
||||
try {
|
||||
emailService.sendMimeMessage(email);
|
||||
return R.status(contactService.saveOrUpdate(contact));
|
||||
} catch (Exception e) {
|
||||
return R.fail("发送失败");
|
||||
}
|
||||
}
|
||||
@ApiOperationSupport(order = 8)
|
||||
@ApiOperation(value = "详情", notes = "传入id")
|
||||
@GetMapping("/observed")
|
||||
public R<String> observed(@ApiParam(value = "主键", required = true) @RequestParam String id) {
|
||||
Contact contact = new Contact();
|
||||
contact.setId(Long.valueOf(id));
|
||||
contact.setStatus(2);
|
||||
return R.data(contactService.updateById(contact)? "ok" : "false");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -329,4 +329,13 @@ public class DisasterInfoController {
|
|||
Boolean flag=disasterInfoService.updateById(disasterInfo);
|
||||
return R.data(flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后台管理系统-控制台灾害各项统计
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/statistics")
|
||||
public R statistics(){
|
||||
return R.data(disasterInfoService.statistics());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,8 +4,10 @@ import com.kening.vordm.entity.Email;
|
|||
import com.kening.vordm.service.EmailService;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springblade.core.tool.api.R;
|
||||
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.RestController;
|
||||
|
||||
|
@ -15,13 +17,15 @@ import javax.mail.MessagingException;
|
|||
@RequestMapping("/ui/email")
|
||||
@RequiredArgsConstructor
|
||||
@Api(value = "邮箱发送", tags = "邮箱发送")
|
||||
@Slf4j
|
||||
public class EmailController {
|
||||
|
||||
private final EmailService emailService;
|
||||
|
||||
@PostMapping("/emailSend")
|
||||
public R emailSend(Email email) {
|
||||
public R emailSend(@RequestBody Email email) {
|
||||
try {
|
||||
log.info("email:{}", email.getText());
|
||||
emailService.sendMimeMessage(email);
|
||||
return R.success("OK");
|
||||
} catch (MessagingException e) {
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
package com.kening.vordm.controller;
|
||||
|
||||
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.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
|
||||
import com.kening.vordm.entity.Contact;
|
||||
import com.kening.vordm.entity.DisasterInfo;
|
||||
import com.kening.vordm.entity.News;
|
||||
import com.kening.vordm.service.NewsService;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springblade.core.mp.support.Condition;
|
||||
import org.springblade.core.mp.support.Query;
|
||||
|
@ -48,4 +56,31 @@ public class NewsController {
|
|||
public void export(Long disasterId,Integer type,HttpServletRequest request, HttpServletResponse response){
|
||||
newsService.export(disasterId,type,request,response);
|
||||
}
|
||||
@ApiOperationSupport(order = 1)
|
||||
@ApiOperation(value = "分页", notes = "News")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "current", value = "当前页", paramType = "query", dataType = "int"),
|
||||
@ApiImplicitParam(name = "size", value = "分页大小", paramType = "query", dataType = "int")
|
||||
})
|
||||
@GetMapping("/list")
|
||||
public R<IPage<News>> list(News news, Query query) {
|
||||
QueryWrapper<News> queryWrapper = Condition.getQueryWrapper(news);
|
||||
queryWrapper.orderByDesc("contact_date");
|
||||
IPage<News> pages = newsService.page(Condition.getPage(query), Condition.getQueryWrapper(news));
|
||||
return R.data(pages);
|
||||
}
|
||||
@PostMapping("review")
|
||||
public R<Boolean> review(String ids ,Integer status){
|
||||
UpdateWrapper<News> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("status",status);
|
||||
String [] id = ids.split(",");
|
||||
//将id String 数组转为Long数组
|
||||
Long [] idLong = new Long[id.length];
|
||||
for (int i = 0; i < id.length; i++) {
|
||||
idLong[i] = Long.parseLong(id[i]);
|
||||
}
|
||||
updateWrapper.in("id",idLong);
|
||||
Boolean flag=newsService.update(updateWrapper);
|
||||
return R.data(flag);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package com.kening.vordm.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.kening.vordm.entity.DataUpload;
|
||||
import com.kening.vordm.entity.EntityData;
|
||||
import com.kening.vordm.entity.Hotspot;
|
||||
import com.kening.vordm.entity.OtherData;
|
||||
import com.kening.vordm.service.DataUploadService;
|
||||
import com.kening.vordm.service.OtherDataService;
|
||||
|
@ -11,6 +13,7 @@ import org.springblade.core.mp.support.Condition;
|
|||
import org.springblade.core.mp.support.Query;
|
||||
import org.springblade.core.secure.utils.AuthUtil;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.Func;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
@ -65,10 +68,7 @@ public class OtherDataController {
|
|||
* @return
|
||||
*/
|
||||
@DeleteMapping("/remove")
|
||||
public R remove(@RequestParam Long id){
|
||||
EntityData entityData = new EntityData();
|
||||
entityData.setId(id);
|
||||
entityData.setIsDeleted(1);
|
||||
return R.status(service.updateById(entityData));
|
||||
public R remove(@RequestParam String id){
|
||||
return R.status(service.removeByIds(Func.toLongList(id)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.kening.vordm.controller;
|
|||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.kening.vordm.entity.*;
|
||||
import com.kening.vordm.service.HotspotService;
|
||||
import com.kening.vordm.service.PictureInfoService;
|
||||
|
@ -11,6 +12,7 @@ import lombok.AllArgsConstructor;
|
|||
import org.springblade.core.mp.support.Condition;
|
||||
import org.springblade.core.mp.support.Query;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.Func;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -43,20 +45,27 @@ public class PictureInfoController {
|
|||
* @return
|
||||
*/
|
||||
@PostMapping("/upload")
|
||||
public R audit(OtherData OtherData){
|
||||
public R upload(OtherData OtherData){
|
||||
return R.status(service.uploadData(OtherData));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改图片信息
|
||||
* @param pictureInfo
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public R upadte(PictureInfo pictureInfo){
|
||||
return R.status(service.updatePicture(pictureInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 逻辑删除图片数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/remove")
|
||||
public R remove(@RequestParam Long id){
|
||||
PictureInfo pictureInfo = new PictureInfo();
|
||||
pictureInfo.setId(id);
|
||||
pictureInfo.setIsDeleted(1);
|
||||
return R.status(service.updateById(pictureInfo));
|
||||
public R remove(@RequestParam String id){
|
||||
return R.status(service.removeByIds(Func.toLongList(id)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
package com.kening.vordm.controller;
|
||||
|
||||
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.kening.vordm.entity.News;
|
||||
import com.kening.vordm.entity.SocialMedia;
|
||||
import com.kening.vordm.entity.Tweets;
|
||||
import com.kening.vordm.service.SocialMediaService;
|
||||
|
@ -8,10 +11,7 @@ import lombok.AllArgsConstructor;
|
|||
import org.springblade.core.mp.support.Condition;
|
||||
import org.springblade.core.mp.support.Query;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
@ -61,4 +61,23 @@ public class SocialMediaController {
|
|||
public void export(Long disasterId, HttpServletRequest request, HttpServletResponse response){
|
||||
service.export(disasterId,request,response);
|
||||
}
|
||||
@GetMapping("/list")
|
||||
public R<IPage<SocialMedia>> list(SocialMedia socialMedia, Query query) {
|
||||
IPage<SocialMedia> pages = service.page(Condition.getPage(query), Condition.getQueryWrapper(socialMedia));
|
||||
return R.data(pages);
|
||||
}
|
||||
@PostMapping("review")
|
||||
public R<Boolean> review(String ids ,Integer status){
|
||||
UpdateWrapper<SocialMedia> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("status",status);
|
||||
String [] id = ids.split(",");
|
||||
//将id String 数组转为Long数组
|
||||
Long [] idLong = new Long[id.length];
|
||||
for (int i = 0; i < id.length; i++) {
|
||||
idLong[i] = Long.parseLong(id[i]);
|
||||
}
|
||||
updateWrapper.in("id",idLong);
|
||||
Boolean flag=service.update(updateWrapper);
|
||||
return R.data(flag);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.kening.vordm.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.kening.vordm.entity.*;
|
||||
import com.kening.vordm.service.HotspotService;
|
||||
import com.kening.vordm.service.OtherDataService;
|
||||
|
@ -10,6 +11,7 @@ import lombok.AllArgsConstructor;
|
|||
import org.springblade.core.mp.support.Condition;
|
||||
import org.springblade.core.mp.support.Query;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.Func;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -63,6 +65,27 @@ public class VisualDataController {
|
|||
return R.data(hotspotService.page(Condition.getPage(query),Condition.getQueryWrapper(params,Hotspot.class)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新词云数据
|
||||
* @param wordCLouds
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/updateWordCloud")
|
||||
public R updateWordCloud(@RequestBody WordCLouds wordCLouds){
|
||||
return R.status(wordCloudsService.updateById(wordCLouds));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新热点数据
|
||||
* @param hotspot
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/updateHotspot")
|
||||
public R updateHotspot(@RequestBody Hotspot hotspot){
|
||||
return R.status(hotspotService.updateById(hotspot));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 移除词云或者热点数据
|
||||
* @param id
|
||||
|
@ -70,17 +93,11 @@ public class VisualDataController {
|
|||
* @return
|
||||
*/
|
||||
@DeleteMapping("/remove")
|
||||
public R remove(@RequestParam Long id,@RequestParam Integer type){
|
||||
public R remove(@RequestParam String id,@RequestParam Integer type){
|
||||
if(type == 1){
|
||||
WordCLouds wordCLouds = new WordCLouds();
|
||||
wordCLouds.setId(id);
|
||||
wordCLouds.setIsDeleted(1);
|
||||
return R.status(wordCloudsService.updateById(wordCLouds));
|
||||
return R.status(wordCloudsService.removeByIds(Func.toLongList(id)));
|
||||
}else {
|
||||
Hotspot hotspot = new Hotspot();
|
||||
hotspot.setId(id);
|
||||
hotspot.setIsDeleted(1);
|
||||
return R.status(hotspotService.updateById(hotspot));
|
||||
return R.status(hotspotService.removeByIds(Func.toLongList(id)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,4 +16,11 @@ public interface AdministratorMapper extends BaseMapper<Administrator> {
|
|||
* @return
|
||||
*/
|
||||
Long getChiefRole(@Param("roleName") String roleName);
|
||||
|
||||
/**
|
||||
* 根据租户名称查询租户id
|
||||
* @param tenantName
|
||||
* @return
|
||||
*/
|
||||
String getChiefTenant(@Param("tenantName") String tenantName);
|
||||
}
|
||||
|
|
|
@ -15,4 +15,16 @@
|
|||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getChiefTenant" resultType="java.lang.String">
|
||||
select
|
||||
tenant_id
|
||||
from blade_tenant
|
||||
<where>
|
||||
and is_deleted = 0
|
||||
<if test="tenantName!=null and tenantName!=''">
|
||||
and tenant_name = #{tenantName}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
select
|
||||
di.disaster_keyword,
|
||||
bdb.dict_value as disasterType,
|
||||
di.id as disasterId
|
||||
di.id as disasterId,
|
||||
di.disaster_time as disasterTime,
|
||||
di.disaster_country as disasterCountry
|
||||
from entity_data ed
|
||||
left join blade_user bu on bu.id = ed.uploader_id
|
||||
left join disaster_info di on di.id = ed.disaster_id
|
||||
|
|
|
@ -10,6 +10,7 @@ import org.apache.poi.ss.formula.functions.T;
|
|||
import org.springblade.core.secure.BladeUser;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author G1393
|
||||
|
@ -53,4 +54,16 @@ public interface DisasterInfoMapper extends BaseMapper<DisasterInfo> {
|
|||
Integer saveUserData(@Param("userVo") UserVo userVo);
|
||||
|
||||
UserVo getUserByEmail(String email);
|
||||
|
||||
/**
|
||||
* 获取灾害数据 关联字典项
|
||||
* @return
|
||||
*/
|
||||
List<DisasterInfo> getAllData();
|
||||
|
||||
/**
|
||||
* 查询每个月响应的灾害
|
||||
* @return
|
||||
*/
|
||||
List<Map<String, Object>> getDisasterInfoByMouth(@Param("start") String start,@Param("end") String end,@Param("type") Integer type);
|
||||
}
|
||||
|
|
|
@ -156,9 +156,12 @@
|
|||
<if test="callForHelpVo.respondStatus == 0 or callForHelpVo.respondStatus == '0'" >
|
||||
d.respond_status = 1 or d.respond_status = 0
|
||||
</if>
|
||||
<if test="callForHelpVo.respondStatus != 0 and callForHelpVo.respondStatus != '0'" >
|
||||
<if test="callForHelpVo.respondStatus != 0 and callForHelpVo.respondStatus != '0' and callForHelpVo.respondStatus != 3 and callForHelpVo.respondStatus != '3'" >
|
||||
d.respond_status = 2
|
||||
</if>
|
||||
<if test="callForHelpVo.respondStatus == 3 or callForHelpVo.respondStatus == '3'" >
|
||||
d.respond_status = 2 or d.respond_status = 3
|
||||
</if>
|
||||
</where>
|
||||
order by d.upload_time desc
|
||||
</select>
|
||||
|
@ -181,4 +184,31 @@
|
|||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getAllData" resultType="com.kening.vordm.entity.DisasterInfo">
|
||||
select
|
||||
<include refid="Base_Column_List"/>,
|
||||
bdb.dict_value AS dictValue
|
||||
from disaster_info di
|
||||
left join blade_dict_biz bdb on bdb.dict_key = di.disaster_type
|
||||
</select>
|
||||
|
||||
<select id="getDisasterInfoByMouth" resultType="java.util.Map">
|
||||
SELECT
|
||||
<if test="type == 1">
|
||||
date_format(di.disaster_time,'%m') AS date,
|
||||
</if>
|
||||
<if test="type == 2">
|
||||
date_format(di.respond_time,'%m') AS date,
|
||||
</if>
|
||||
COUNT(1) AS value
|
||||
FROM
|
||||
disaster_info di
|
||||
WHERE
|
||||
di.respond_time BETWEEN #{start} AND #{end}
|
||||
<if test="type == 2">
|
||||
AND di.respond_status > 1
|
||||
</if>
|
||||
GROUP BY date
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
select
|
||||
di.disaster_keyword,
|
||||
bdb.dict_value as disasterType,
|
||||
di.id as disasterId
|
||||
di.id as disasterId,
|
||||
di.disaster_time as disasterTime,
|
||||
di.disaster_country as disasterCountry
|
||||
from disaster_info di
|
||||
left join blade_dict_biz bdb on di.disaster_type = dict_key
|
||||
</select>
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
select
|
||||
di.disaster_keyword,
|
||||
bdb.dict_value as disasterType,
|
||||
di.id as disasterId
|
||||
di.id as disasterId,
|
||||
di.disaster_time as disasterTime,
|
||||
di.disaster_country as disasterCountry
|
||||
from disaster_info di
|
||||
left join blade_dict_biz bdb on di.disaster_type = dict_key
|
||||
</select>
|
||||
|
|
|
@ -8,6 +8,7 @@ import com.kening.vordm.vo.*;
|
|||
import org.springblade.core.tool.api.R;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author G1393
|
||||
|
@ -55,4 +56,9 @@ public interface DisasterInfoService extends IService<DisasterInfo> {
|
|||
IPage<CallForHelpVo> page(IPage<CallForHelpVo> page, CallForHelpVo callForHelpVo);
|
||||
|
||||
R saveUserData(UserVo userVo);
|
||||
/**
|
||||
* 后台管理系统-控制台灾害各项统计
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> statistics();
|
||||
}
|
||||
|
|
|
@ -14,7 +14,15 @@ public interface PictureInfoService extends IService<PictureInfo> {
|
|||
|
||||
/**
|
||||
* 上传图片信息数据
|
||||
* @param otherData
|
||||
* @return
|
||||
*/
|
||||
boolean uploadData(OtherData otherData);
|
||||
|
||||
/**
|
||||
* 修改图片信息
|
||||
* @param pictureInfo
|
||||
* @return
|
||||
*/
|
||||
boolean updatePicture(PictureInfo pictureInfo);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import com.kening.vordm.mapper.AdministratorMapper;
|
|||
import com.kening.vordm.service.AdministratorService;
|
||||
import com.kening.vordm.service.EmailService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springblade.core.mp.base.BaseServiceImpl;
|
||||
import org.springblade.core.tool.utils.DigestUtil;
|
||||
|
@ -25,10 +26,14 @@ import java.util.Map;
|
|||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
@RequiredArgsConstructor
|
||||
public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMapper,Administrator> implements AdministratorService {
|
||||
|
||||
private EmailService emailService;
|
||||
private final EmailService emailService;
|
||||
|
||||
|
||||
@Value("${mail.home.link}")
|
||||
private String link;
|
||||
|
||||
/**
|
||||
* 根据角色名称获取角色id
|
||||
|
@ -52,7 +57,8 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
|
|||
if(admin!=null){
|
||||
throw new RuntimeException("The account has been registered");
|
||||
}
|
||||
administrator.setTenantId("595035");
|
||||
String tenantId = baseMapper.getChiefTenant("VORDM");
|
||||
administrator.setTenantId(tenantId);
|
||||
administrator.setUserType(1);
|
||||
administrator.setRealName(administrator.getName());
|
||||
//密码默认为1234
|
||||
|
@ -60,22 +66,22 @@ public class AdministratorServiceImpl extends BaseServiceImpl<AdministratorMappe
|
|||
//角色为chief
|
||||
Long roleId = baseMapper.getChiefRole("chief");
|
||||
administrator.setRoleId(String.valueOf(roleId));
|
||||
//保存chief管理员信息
|
||||
save(administrator);
|
||||
try{
|
||||
//设置标题
|
||||
String subject = "Welcome to register";
|
||||
//设置要使用的模板
|
||||
String emailTemplate = "email";
|
||||
//设置要填充模板的参数
|
||||
Map<String, Object> dataMap = new HashMap<>();
|
||||
dataMap.put("account", administrator.getAccount());
|
||||
//默认密码 1234
|
||||
dataMap.put("password", "1234");
|
||||
dataMap.put("link",link);
|
||||
dataMap.put("time", LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));
|
||||
Email email = new Email();
|
||||
email.setSubject(subject);
|
||||
email.setDataMap(dataMap);
|
||||
email.setTos(new String[]{administrator.getEmail()});
|
||||
email.setForm("15806764589@163.com");
|
||||
emailService.sendTemplate(email);
|
||||
log.info("邮件发送成功");
|
||||
}catch (Exception e){
|
||||
|
|
|
@ -3,23 +3,27 @@ package com.kening.vordm.service.impl;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.kening.vordm.entity.DisasterData;
|
||||
import com.kening.vordm.entity.DisasterInfo;
|
||||
import com.kening.vordm.mapper.DisasterInfoMapper;
|
||||
import com.kening.vordm.service.DisasterInfoService;
|
||||
import com.kening.vordm.service.EmailService;
|
||||
import com.kening.vordm.service.GuestManageDisasterRefService;
|
||||
import com.kening.vordm.vo.*;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springblade.common.cache.CacheNames;
|
||||
import org.springblade.core.redis.cache.BladeRedis;
|
||||
import org.springblade.core.secure.BladeUser;
|
||||
import org.springblade.core.tool.api.R;
|
||||
import org.springblade.core.tool.utils.DigestUtil;
|
||||
import org.springblade.core.tool.utils.StringUtil;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author G1393
|
||||
|
@ -33,6 +37,8 @@ public class DisasterInfoServiceImpl extends ServiceImpl<DisasterInfoMapper, Dis
|
|||
|
||||
private final BladeRedis bladeRedis;
|
||||
|
||||
private final GuestManageDisasterRefService guestManageDisasterRefService;
|
||||
|
||||
/**
|
||||
* 返回指定的灾害条目
|
||||
*
|
||||
|
@ -163,5 +169,109 @@ public class DisasterInfoServiceImpl extends ServiceImpl<DisasterInfoMapper, Dis
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 后台管理系统-控制台灾害各项统计
|
||||
* @description 暂时没有条件查询 所有统计都暂时写在一个查询里面
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> statistics() {
|
||||
Map<String,Object> resultMap = Maps.newHashMap();
|
||||
//查询灾害表全部数据数据(tip:暂时没有条件 需要的话后期改)
|
||||
List<DisasterInfo> disasterInfoList = list();
|
||||
//统计head头部的数据
|
||||
Map<String,Object> headMap = headData(disasterInfoList);
|
||||
//统计灾害发生区域占比
|
||||
Map<String,Long> countryData = disasterCountryProportion(disasterInfoList);
|
||||
//统计当年的灾害申请次数 按月查询
|
||||
List<Map<String,Object>> applyMonth = getDisasterReponseByMouth(1);
|
||||
//统计灾害数量占比
|
||||
Map<String,Long> disasterNum = disasterNumProportion();
|
||||
//统计当年的灾害响应次数 按月查询
|
||||
List<Map<String,Object>> responseMonth = getDisasterReponseByMouth(2);
|
||||
resultMap.put("header",headMap);
|
||||
resultMap.put("country",countryData);
|
||||
resultMap.put("disasterNum",disasterNum);
|
||||
resultMap.put("responseMonth",responseMonth);
|
||||
resultMap.put("applyMonth",applyMonth);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计head头部信息
|
||||
* @return
|
||||
*/
|
||||
private Map<String,Object> headData(List<DisasterInfo> disasterInfoList){
|
||||
Map<String,Object> headMap = Maps.newHashMap();
|
||||
//用户访问量
|
||||
Integer visitCount = disasterInfoList.stream().map(DisasterInfo::getVisitCount).reduce(Integer::sum).orElse(0);
|
||||
//数据下载量
|
||||
Integer downloadCount = disasterInfoList.stream().map(DisasterInfo::getDownloadCount).reduce(Integer::sum).orElse(0);
|
||||
//灾害响应申请次数
|
||||
Integer size = disasterInfoList.size();
|
||||
//灾害响应实际次数
|
||||
Long actResponseNum = disasterInfoList.stream().filter(data-> data.getRespondStatus() > 1).count();
|
||||
//灾害响应百分比
|
||||
headMap.put("visitCount",visitCount);
|
||||
headMap.put("downloadCount",downloadCount);
|
||||
headMap.put("applyCount",size);
|
||||
headMap.put("actResponseNum",actResponseNum);
|
||||
return headMap;
|
||||
}
|
||||
|
||||
/**
|
||||
*计算每个国家的灾害占比
|
||||
* @return
|
||||
*/
|
||||
private Map<String,Long> disasterCountryProportion(List<DisasterInfo> disasterInfoList){
|
||||
Map<String,Long> proportionMap;
|
||||
//根据国家分组统计次数以及总灾害的占比
|
||||
proportionMap = disasterInfoList.stream().collect(Collectors.groupingBy(DisasterInfo::getDisasterCountry,Collectors.counting()));
|
||||
return proportionMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算每个灾害发生的次数
|
||||
* @return
|
||||
*/
|
||||
private Map<String,Long> disasterNumProportion(){
|
||||
List<DisasterInfo> disasterInfoList = baseMapper.getAllData();
|
||||
Map<String,Long> proportionMap = disasterInfoList.stream().collect(Collectors.groupingBy(DisasterInfo::getDictValue,Collectors.counting()));
|
||||
return proportionMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按月统计当年每个月的响应或者申请量
|
||||
* @return
|
||||
*/
|
||||
private List<Map<String, Object>> getDisasterReponseByMouth(Integer type){
|
||||
//统计每个月的个数
|
||||
final String[] MONTH = new String[]{"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};
|
||||
int year = LocalDate.now().getYear();
|
||||
List<Map<String, Object>> resultList = new ArrayList<>();
|
||||
//查询开始时间
|
||||
String start = year + "-01-01 00:00:00";
|
||||
//查询结束时间
|
||||
String end = year + 1 + "-01-01 00:00:00";
|
||||
List<Map<String, Object>> mapList = baseMapper.getDisasterInfoByMouth(start,end,type);
|
||||
List<DisasterData> disasterList = mapList.stream().map((map) -> {
|
||||
return cn.hutool.core.bean.BeanUtil.mapToBean(map, DisasterData.class, true);
|
||||
}).collect(Collectors.toList());
|
||||
int size = MONTH.length;
|
||||
Map<String, List<DisasterData>> collect = disasterList.stream().collect(Collectors.groupingBy(DisasterData::getDate));
|
||||
for (int i = 0; i < size; ++i) {
|
||||
Map<String, Object> result = Maps.newLinkedHashMap();
|
||||
String month = MONTH[i];
|
||||
List<DisasterData> disasterData = collect.get(month);
|
||||
if (disasterData!=null&&!disasterData.isEmpty()){
|
||||
DisasterData disasterData1 = disasterData.get(0);
|
||||
result.put(year+"-"+month,disasterData1);
|
||||
}else {
|
||||
result.put(year+"-"+month,null);
|
||||
}
|
||||
resultList.add(result);
|
||||
}
|
||||
return resultList;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,25 @@ implements PictureInfoService {
|
|||
*/
|
||||
private MinioTemplate minioTemplate;
|
||||
|
||||
/**
|
||||
* 修改图片信息
|
||||
* @param pictureInfo
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean updatePicture(PictureInfo pictureInfo) {
|
||||
MultipartFile multipartFile = pictureInfo.getFile();
|
||||
BladeFile bladeFile = minioTemplate.putFile(multipartFile);
|
||||
PictureInfo picture = new PictureInfo();
|
||||
picture.setLink(bladeFile.getLink());
|
||||
picture.setName(bladeFile.getOriginalName());
|
||||
picture.setSize(multipartFile.getSize());
|
||||
picture.setType(multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().indexOf(".")+1));
|
||||
picture.setIsMain(pictureInfo.getIsMain());
|
||||
picture.setId(pictureInfo.getId());
|
||||
return updateById(picture);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @param otherData
|
||||
|
|
|
@ -11,3 +11,7 @@ mybatis-plus:
|
|||
swagger:
|
||||
base-packages:
|
||||
- com.kening.vordm
|
||||
|
||||
mail:
|
||||
home:
|
||||
link: http://192.168.31.77:8888
|
||||
|
|
|
@ -66,23 +66,17 @@
|
|||
<!--您好,感谢您的注册,这是一封验证邮件,请点击下面的链接完成注册,感谢您的支持!
|
||||
<a href="#" th:href="@{http://www.baidu.com/register/{id}(id=${id})}">激活账号</a>-->
|
||||
<div class="container">
|
||||
<!-- <div class="header">
|
||||
<h1>欢迎加入宠物之家!</h1>
|
||||
</div>-->
|
||||
<div class="content">
|
||||
<h2>Hello, thank you for your registration</h2>
|
||||
<p>Your account number:<b><span th:text="${account}"></span></b></p>
|
||||
<p>Your password:<b><span th:text="${password}"></span></b></p>
|
||||
<p>The date you registered:<b><span th:text="${time}"></span></b></p>
|
||||
<P><b>Please click login:<a href="http://192.168.31.77:8888">Point-me jump</a></b></P>
|
||||
<P><b>Please click login:<a th:href="${link}">Point-me jump</a></b></P>
|
||||
<p></p>
|
||||
<!-- <p>当您在使用本网站时,务必要遵守法律法规</p>
|
||||
<p>如果您有什么疑问可以联系管理员,Email: <b>r1624603357@126.com</b></p>-->
|
||||
</div>
|
||||
<div class="footer">
|
||||
<p>This is system mail, please do not reply</p>
|
||||
<p>Please take good care of your information to avoid misappropriation</p>
|
||||
<!-- <p>©Rk</p>-->
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
Loading…
Reference in New Issue