民意直通车
This commit is contained in:
+112
@@ -0,0 +1,112 @@
|
||||
package io.v.nutz.zhgh.mobile.suggestionBox.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.page.Pagination;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.mobile.suggestionBox.models.SuggestionBox;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.dao.util.cri.Static;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/suggestionBox/admin")
|
||||
@Ok("json:full")
|
||||
public class SuggestionBoxAdminController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/mobile/suggestionBox/admin.html")
|
||||
public void h5() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页数据
|
||||
*
|
||||
* @param pageForm 分页
|
||||
* @param status 状态 是否回复
|
||||
* @param timeRange 时间范围 今日 本周 本月
|
||||
* @return
|
||||
*/
|
||||
@At("/pageData")
|
||||
public Result pageData(PageForm pageForm, Integer status, String timeRange, String keyword) {
|
||||
Sql sql = Sqls.create("select * from suggestion_box $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("isReply", "=", status);
|
||||
if (StrUtil.isNotBlank(timeRange)) {
|
||||
switch (timeRange) {
|
||||
case "today":
|
||||
cnd.and(new Static("DATE(submitTime) = CURDATE()"));
|
||||
break;
|
||||
case "week":
|
||||
cnd.and(new Static("WEEKOFYEAR(submitTime) = WEEKOFYEAR(CURDATE())"));
|
||||
break;
|
||||
case "month":
|
||||
cnd.and(new Static("MONTH(submitTime) = MONTH(CURDATE())"));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotBlank(keyword)) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("submitterName", keyword);
|
||||
seg.orLike("content", keyword);
|
||||
seg.orLike("title", keyword);
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.desc("submitTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计
|
||||
*/
|
||||
@At("/getStats")
|
||||
public Result stats() {
|
||||
// 查询总意见数
|
||||
int total = dao.count(SuggestionBox.class);
|
||||
// 待回复数
|
||||
int pending = dao.count(SuggestionBox.class, Cnd.where("isReply", "=", 0));
|
||||
// 已回复数
|
||||
int replied = dao.count(SuggestionBox.class, Cnd.where("isReply", "=", 1));
|
||||
// 今日新增
|
||||
int today = dao.count(SuggestionBox.class, Cnd.NEW().and(new Static("DATE(submitTime) = CURDATE()")));
|
||||
return Result.success(Map.of("total", total, "pending", pending, "replied", replied, "today", today));
|
||||
}
|
||||
|
||||
/**
|
||||
* 答复
|
||||
*/
|
||||
@At
|
||||
public Result reply(@Param("reply") SuggestionBox suggestionBox) {
|
||||
suggestionBox.setIsReply(true);
|
||||
suggestionBox.setReplyTime(LocalDateTime.now());
|
||||
suggestionBox.setReplyUserId(ShiroUtil.getUserId());
|
||||
suggestionBox.setReplyUserName((String) ShiroUtil.getPrincipalProperty("username"));
|
||||
dao.update(suggestionBox,"isReply|replyContent|replyTime|replyUserId|replyUserName");
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
package io.v.nutz.zhgh.mobile.suggestionBox.controller;
|
||||
|
||||
import cn.wizzer.framework.base.Result;
|
||||
import io.v.nutz.base.page.Pagination;
|
||||
import io.v.nutz.base.query.PageForm;
|
||||
import io.v.nutz.base.service.BaseService;
|
||||
import io.v.nutz.web.commons.utils.ShiroUtil;
|
||||
import io.v.nutz.zhgh.mobile.suggestionBox.models.SuggestionBox;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.mvc.annotation.At;
|
||||
import org.nutz.mvc.annotation.Ok;
|
||||
import org.nutz.mvc.annotation.Param;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@IocBean
|
||||
@At("/platform/suggestionBox")
|
||||
@Ok("json:full")
|
||||
public class SuggestionBoxController {
|
||||
|
||||
@Inject
|
||||
private Dao dao;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
|
||||
@At("/h5")
|
||||
@Ok("beetl:/mobile/suggestionBox/index.html")
|
||||
public void h5Index() {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5/write")
|
||||
@Ok("beetl:/mobile/suggestionBox/write.html")
|
||||
public void h5Write() {
|
||||
|
||||
}
|
||||
|
||||
@At("/h5/mine")
|
||||
@Ok("beetl:/mobile/suggestionBox/mine.html")
|
||||
public void h5Mine() {
|
||||
|
||||
}
|
||||
|
||||
@At
|
||||
public Result submit(@Param("suggestion") SuggestionBox suggestionBox) {
|
||||
suggestionBox.setSubmitTime(LocalDateTime.now());
|
||||
dao.insert(suggestionBox);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
public Result delete(@Param("id") String id) {
|
||||
dao.delete(SuggestionBox.class, id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的意见列表
|
||||
*/
|
||||
@At
|
||||
public Result pageData(PageForm pageForm) {
|
||||
Sql sql = Sqls.create("select * from suggestion_box $condition");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.and("submitterId","=", ShiroUtil.getUserId());
|
||||
cnd.desc("submitTime");
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
package io.v.nutz.zhgh.mobile.suggestionBox.models;
|
||||
|
||||
import cn.wizzer.framework.base.model.BaseModel;
|
||||
import io.v.nutz.sys.models.Sys_file;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.nutz.dao.entity.annotation.*;
|
||||
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Table("suggestion_box")
|
||||
@Comment("意见箱")
|
||||
@Data
|
||||
public class SuggestionBox extends BaseModel {
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
|
||||
@Column
|
||||
@Comment("提交人ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String submitterId;
|
||||
|
||||
@Column
|
||||
@Comment("提交人姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String submitterName;
|
||||
|
||||
@Column
|
||||
@Comment("提交人工号")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String submitterLoginName;
|
||||
|
||||
@Column
|
||||
@Comment("提交人单位ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String submitterUnitId;
|
||||
|
||||
@Column
|
||||
@Comment("提交人单位名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String submitterUnitName;
|
||||
|
||||
@Column
|
||||
@Comment("提交人分工会ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String submitterUnionId;
|
||||
|
||||
@Column
|
||||
@Comment("提交人分工会名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String submitterUnionName;
|
||||
|
||||
@Column
|
||||
@Comment("提交时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private LocalDateTime submitTime;
|
||||
|
||||
@Column
|
||||
@Comment("意见名称")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String title;
|
||||
|
||||
@Column
|
||||
@Comment("意见内容")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String content;
|
||||
|
||||
@Column
|
||||
@Comment("附件")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<Sys_file> attachments;
|
||||
|
||||
@Column
|
||||
@Comment("联系方式")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||
private String concat;
|
||||
|
||||
@Column
|
||||
@Comment("回复状态")
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
@Default("0")
|
||||
private Boolean isReply;
|
||||
|
||||
@Column
|
||||
@Comment("回复内容")
|
||||
@ColDefine(type = ColType.TEXT)
|
||||
private String replyContent;
|
||||
|
||||
@Column
|
||||
@Comment("回复时间")
|
||||
@ColDefine(type = ColType.DATETIME)
|
||||
private LocalDateTime replyTime;
|
||||
|
||||
@Column
|
||||
@Comment("回复人ID")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||
private String replyUserId;
|
||||
|
||||
@Column
|
||||
@Comment("回复人姓名")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 50)
|
||||
private String replyUserName;
|
||||
|
||||
@Column
|
||||
@Comment("回复附件")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
private List<Sys_file> replyAttachments;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user